@luxalgo/vela 0.6.17 → 0.6.18

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 (37) hide show
  1. package/dist/{DataProvider-B-Jz59Rf.d.ts → DataProvider-Cb-2lC5O.d.ts} +1 -1
  2. package/dist/{DataProvider-OfR3fXg9.d.cts → DataProvider-UtWw2CgJ.d.cts} +1 -1
  3. package/dist/{chunk-YCD72KGK.js → chunk-22QJKGXX.js} +565 -151
  4. package/dist/{chunk-OSZDSH7F.js → chunk-BXF7VNNE.js} +177 -104
  5. package/dist/{contributions-C3b0Sx5P.d.cts → contributions-5nz3PLRe.d.ts} +9 -4
  6. package/dist/{contributions-Swzz10fG.d.ts → contributions-DEPRtkmG.d.cts} +9 -4
  7. package/dist/index.cjs +563 -149
  8. package/dist/index.d.cts +6 -6
  9. package/dist/index.d.ts +6 -6
  10. package/dist/index.js +1 -1
  11. package/dist/{options-CX1lSYWA.d.cts → options-BCRmYALw.d.cts} +12 -3
  12. package/dist/{options-CX1lSYWA.d.ts → options-BCRmYALw.d.ts} +12 -3
  13. package/dist/{plugin-mvddudqd.d.ts → plugin-CUtfLeqz.d.ts} +3 -3
  14. package/dist/{plugin-BjnEE1zA.d.cts → plugin-DVUaROPo.d.cts} +3 -3
  15. package/dist/plugin.d.cts +4 -4
  16. package/dist/plugin.d.ts +4 -4
  17. package/dist/providers/binance.d.cts +2 -2
  18. package/dist/providers/binance.d.ts +2 -2
  19. package/dist/providers/coinbase.d.cts +2 -2
  20. package/dist/providers/coinbase.d.ts +2 -2
  21. package/dist/providers/hyperliquid.d.cts +2 -2
  22. package/dist/providers/hyperliquid.d.ts +2 -2
  23. package/dist/{statusline-model-D91cU2fF.d.cts → statusline-model-7ECSDtgt.d.cts} +3 -3
  24. package/dist/{statusline-model-IURCya0H.d.ts → statusline-model-D1Fhs8Dk.d.ts} +3 -3
  25. package/dist/ui.d.cts +1 -1
  26. package/dist/ui.d.ts +1 -1
  27. package/dist/vela.global.js +563 -149
  28. package/dist/vela.global.min.js +53 -51
  29. package/dist/widget.cjs +739 -252
  30. package/dist/widget.d.cts +39 -12
  31. package/dist/widget.d.ts +39 -12
  32. package/dist/widget.js +3 -3
  33. package/dist/workspace.cjs +739 -252
  34. package/dist/workspace.d.cts +5 -5
  35. package/dist/workspace.d.ts +5 -5
  36. package/dist/workspace.js +2 -2
  37. package/package.json +1 -1
package/dist/widget.d.cts CHANGED
@@ -1,10 +1,10 @@
1
- import { V as Vela, W as WidgetContext, K as SidePanelButton } from './contributions-C3b0Sx5P.cjs';
2
- export { C as CellStateContext, az as DEFAULT_PANEL_ORDER, E as ExternalIndicatorEntry, O as OVERRIDABLE_TOPBAR_IDS, M as SidePanelDescriptor, Q as SidePanelHandle, U as StatePersistenceHandler, _ as SymbolRankingHook, a3 as WidgetActionDescriptor, a4 as WidgetActionTarget, a5 as WidgetAttachment, af as registerSidePanel, ag as registerStatePersistence, ah as registerSymbolRanking, ai as registerWidgetAction, aj as registerWidgetAttachment, al as sidePanels, am as statePersistenceHandlers, an as symbolRanking, ao as topbarActionOverride, at as unregisterSidePanel, au as unregisterStatePersistence, av as unregisterWidgetAction, aw as unregisterWidgetAttachment, ax as widgetActions, ay as widgetAttachments } from './contributions-C3b0Sx5P.cjs';
3
- import { b as VelaOptions, d as MarketSession, T as ThemeName, c as VelaTheme, s as DataWindowReadout } from './options-CX1lSYWA.cjs';
4
- import { c as VelaShellOptions, W as WidgetHistory, b as RangePreset, f as WorkspaceState, j as TopbarComposition, a as StatuslinePart, P as PanelsState } from './statusline-model-D91cU2fF.cjs';
5
- export { B as Bottombar, k as BottombarOptions, C as CellState, g as ChartState, I as IndicatorLoader, l as IndicatorManifest, m as IndicatorManifestEntry, n as RANGE_PRESETS, R as ResolvedIndicator, o as ResolvedTopbarComposition, p as TOPBAR_BUILTIN_IDS, q as TOPBAR_DEFAULT_LEFT, r as TOPBAR_DEFAULT_RIGHT, V as VelaStorage, t as WidgetStorage, h as decodeState, i as encodeState, u as localStorageAdapter, v as pinnedTopbarActionIds, w as resolveIndicators, x as resolveTopbarComposition, s as sanitizeState, y as topbarHas } from './statusline-model-D91cU2fF.cjs';
1
+ import { V as Vela, W as WidgetContext, K as SidePanelButton } from './contributions-DEPRtkmG.cjs';
2
+ export { C as CellStateContext, az as DEFAULT_PANEL_ORDER, E as ExternalIndicatorEntry, O as OVERRIDABLE_TOPBAR_IDS, M as SidePanelDescriptor, Q as SidePanelHandle, U as StatePersistenceHandler, _ as SymbolRankingHook, a3 as WidgetActionDescriptor, a4 as WidgetActionTarget, a5 as WidgetAttachment, af as registerSidePanel, ag as registerStatePersistence, ah as registerSymbolRanking, ai as registerWidgetAction, aj as registerWidgetAttachment, al as sidePanels, am as statePersistenceHandlers, an as symbolRanking, ao as topbarActionOverride, at as unregisterSidePanel, au as unregisterStatePersistence, av as unregisterWidgetAction, aw as unregisterWidgetAttachment, ax as widgetActions, ay as widgetAttachments } from './contributions-DEPRtkmG.cjs';
3
+ import { b as VelaOptions, d as MarketSession, T as ThemeName, c as VelaTheme, s as DataWindowReadout } from './options-BCRmYALw.cjs';
4
+ import { c as VelaShellOptions, W as WidgetHistory, b as RangePreset, f as WorkspaceState, j as TopbarComposition, a as StatuslinePart, P as PanelsState } from './statusline-model-7ECSDtgt.cjs';
5
+ export { B as Bottombar, k as BottombarOptions, C as CellState, g as ChartState, I as IndicatorLoader, l as IndicatorManifest, m as IndicatorManifestEntry, n as RANGE_PRESETS, R as ResolvedIndicator, o as ResolvedTopbarComposition, p as TOPBAR_BUILTIN_IDS, q as TOPBAR_DEFAULT_LEFT, r as TOPBAR_DEFAULT_RIGHT, V as VelaStorage, t as WidgetStorage, h as decodeState, i as encodeState, u as localStorageAdapter, v as pinnedTopbarActionIds, w as resolveIndicators, x as resolveTopbarComposition, s as sanitizeState, y as topbarHas } from './statusline-model-7ECSDtgt.cjs';
6
6
  import { K as KeymapManager } from './keymap-CGOz5F5f.cjs';
7
- import { a as SymbolDescriptor } from './DataProvider-OfR3fXg9.cjs';
7
+ import { a as SymbolDescriptor } from './DataProvider-UtWw2CgJ.cjs';
8
8
  import { d as SidePanel } from './side-panel-HF0IAzwf.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-HF0IAzwf.cjs';
10
10
 
@@ -252,21 +252,35 @@ declare class Statusline {
252
252
  /** Fit mode (multi-chart cells): one row, overflowing segments hidden — see {@link setFitMode}. */
253
253
  private fitMode;
254
254
  private fitRO;
255
+ /** The identity row (avatar / symbol / meta / market) and the values row (readout /
256
+ * eye) — one line side by side, or a two-line column once the ladder stacks them. */
257
+ private readonly identityRow;
258
+ private readonly valuesRow;
259
+ /** The ladder rung currently applied — see {@link fit}. */
260
+ private layout;
255
261
  constructor(host: HTMLElement, symbol: string,
256
262
  /** The avatar's icon URL for a raw symbol — the shell routes it to the owning
257
263
  * provider's `resolveSymbolIcon`. Absent ⇒ the initials badge. */
258
264
  iconFor?: ((symbol: string) => string | undefined) | undefined);
259
265
  setSymbol(symbol: string): void;
260
266
  /**
261
- * Multi-chart cells: keep the line on ONE row whatever the cell width — never wrap.
262
- * Segments that don't fit are hidden outright rather than clipped mid-glyph, least
263
- * important first: OHLC, then the bar change, the venue/timeframe meta, and the
264
- * market badge; the logo + ticker always stay. Re-fits live on host resizes.
267
+ * Multi-chart cells: the same width ladder as a single chart, plus a last resort for
268
+ * cells too narrow for even its bottom rung — whatever still overflows is hidden
269
+ * outright rather than clipped mid-glyph, least important first: the values, the
270
+ * venue/timeframe meta, then the market badge; the logo + ticker always stay.
265
271
  */
266
272
  setFitMode(on: boolean): void;
267
273
  /** Project the parts config onto the segments (the baseline fit() prunes from). */
268
274
  private syncParts;
269
- /** Hide overflowing segments until the row fits its max-width (fit mode only). */
275
+ /** Apply one ladder rung: the stacked/inline shape and the readout's level. */
276
+ private applyLayout;
277
+ /**
278
+ * Walk the width ladder (see {@link STATUSLINE_LADDER}) until the chip fits its
279
+ * max-width: the full one-line readout, then the values stacked under the symbol
280
+ * line, then O/H/L shed, then the absolute change. In fit mode, when the last rung
281
+ * still overflows, whole segments hide, least important first. Without layout
282
+ * (detached host, node tests) nothing overflows, so the widest rung stays.
283
+ */
270
284
  private fit;
271
285
  /** Shape + color the value readout after the active price style: its own up/down
272
286
  * colors (candle bodies, bar ticks, the line color, …), the direction rule that
@@ -306,6 +320,8 @@ declare class Statusline {
306
320
  destroy(): void;
307
321
  private detach;
308
322
  private render;
323
+ /** Write the value readout for the current bar at the current ladder level. */
324
+ private renderValues;
309
325
  }
310
326
 
311
327
  declare class Watermark {
@@ -365,6 +381,11 @@ declare class SymbolPicker {
365
381
  /** Wire where symbols come from (re-called on every widget rebuild). */
366
382
  setSource(source: () => readonly SymbolDescriptor[]): void;
367
383
  open(initialQuery?: string): void;
384
+ get isOpen(): boolean;
385
+ /** Text typed at the picker that never reached its field: closed, it opens seeded
386
+ * with the text; open (the field takes focus a tick after the dialog does, and a
387
+ * fast typist's next key lands in that tick), it extends the query. */
388
+ type(text: string): void;
368
389
  close(): void;
369
390
  destroy(): void;
370
391
  /** Route a row activation: a GROUP row loads its default member (the root itself is
@@ -435,6 +456,11 @@ declare class TimeframeQuick {
435
456
  private readonly hint;
436
457
  constructor(opts: TimeframeQuickOptions);
437
458
  open(seed?: string): void;
459
+ get isOpen(): boolean;
460
+ /** Text typed at the entry that never reached its field: closed, it opens seeded
461
+ * with the text; open (the field takes focus a tick after the dialog does, and a
462
+ * fast typist's next key lands in that tick), it extends the entry. */
463
+ type(text: string): void;
438
464
  close(): void;
439
465
  destroy(): void;
440
466
  private renderHint;
@@ -519,7 +545,8 @@ declare class ObjectTree extends SidePanel {
519
545
  * owning provider's `resolveSymbolIcon`. Absent ⇒ the initials badge. */
520
546
  private readonly iconFor?;
521
547
  private chart;
522
- private selectedDrawing;
548
+ /** What the CHART has selected — every member of a multi-selection, mirrored as rows. */
549
+ private selectedDrawings;
523
550
  private symbolName;
524
551
  /** The raw (possibly venue-prefixed) symbol — what icon resolution routes on. */
525
552
  private symbolRaw;
package/dist/widget.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- import { V as Vela, W as WidgetContext, K as SidePanelButton } from './contributions-Swzz10fG.js';
2
- export { C as CellStateContext, az as DEFAULT_PANEL_ORDER, E as ExternalIndicatorEntry, O as OVERRIDABLE_TOPBAR_IDS, M as SidePanelDescriptor, Q as SidePanelHandle, U as StatePersistenceHandler, _ as SymbolRankingHook, a3 as WidgetActionDescriptor, a4 as WidgetActionTarget, a5 as WidgetAttachment, af as registerSidePanel, ag as registerStatePersistence, ah as registerSymbolRanking, ai as registerWidgetAction, aj as registerWidgetAttachment, al as sidePanels, am as statePersistenceHandlers, an as symbolRanking, ao as topbarActionOverride, at as unregisterSidePanel, au as unregisterStatePersistence, av as unregisterWidgetAction, aw as unregisterWidgetAttachment, ax as widgetActions, ay as widgetAttachments } from './contributions-Swzz10fG.js';
3
- import { b as VelaOptions, d as MarketSession, T as ThemeName, c as VelaTheme, s as DataWindowReadout } from './options-CX1lSYWA.js';
4
- import { c as VelaShellOptions, W as WidgetHistory, b as RangePreset, f as WorkspaceState, j as TopbarComposition, a as StatuslinePart, P as PanelsState } from './statusline-model-IURCya0H.js';
5
- export { B as Bottombar, k as BottombarOptions, C as CellState, g as ChartState, I as IndicatorLoader, l as IndicatorManifest, m as IndicatorManifestEntry, n as RANGE_PRESETS, R as ResolvedIndicator, o as ResolvedTopbarComposition, p as TOPBAR_BUILTIN_IDS, q as TOPBAR_DEFAULT_LEFT, r as TOPBAR_DEFAULT_RIGHT, V as VelaStorage, t as WidgetStorage, h as decodeState, i as encodeState, u as localStorageAdapter, v as pinnedTopbarActionIds, w as resolveIndicators, x as resolveTopbarComposition, s as sanitizeState, y as topbarHas } from './statusline-model-IURCya0H.js';
1
+ import { V as Vela, W as WidgetContext, K as SidePanelButton } from './contributions-5nz3PLRe.js';
2
+ export { C as CellStateContext, az as DEFAULT_PANEL_ORDER, E as ExternalIndicatorEntry, O as OVERRIDABLE_TOPBAR_IDS, M as SidePanelDescriptor, Q as SidePanelHandle, U as StatePersistenceHandler, _ as SymbolRankingHook, a3 as WidgetActionDescriptor, a4 as WidgetActionTarget, a5 as WidgetAttachment, af as registerSidePanel, ag as registerStatePersistence, ah as registerSymbolRanking, ai as registerWidgetAction, aj as registerWidgetAttachment, al as sidePanels, am as statePersistenceHandlers, an as symbolRanking, ao as topbarActionOverride, at as unregisterSidePanel, au as unregisterStatePersistence, av as unregisterWidgetAction, aw as unregisterWidgetAttachment, ax as widgetActions, ay as widgetAttachments } from './contributions-5nz3PLRe.js';
3
+ import { b as VelaOptions, d as MarketSession, T as ThemeName, c as VelaTheme, s as DataWindowReadout } from './options-BCRmYALw.js';
4
+ import { c as VelaShellOptions, W as WidgetHistory, b as RangePreset, f as WorkspaceState, j as TopbarComposition, a as StatuslinePart, P as PanelsState } from './statusline-model-D1Fhs8Dk.js';
5
+ export { B as Bottombar, k as BottombarOptions, C as CellState, g as ChartState, I as IndicatorLoader, l as IndicatorManifest, m as IndicatorManifestEntry, n as RANGE_PRESETS, R as ResolvedIndicator, o as ResolvedTopbarComposition, p as TOPBAR_BUILTIN_IDS, q as TOPBAR_DEFAULT_LEFT, r as TOPBAR_DEFAULT_RIGHT, V as VelaStorage, t as WidgetStorage, h as decodeState, i as encodeState, u as localStorageAdapter, v as pinnedTopbarActionIds, w as resolveIndicators, x as resolveTopbarComposition, s as sanitizeState, y as topbarHas } from './statusline-model-D1Fhs8Dk.js';
6
6
  import { K as KeymapManager } from './keymap-CGOz5F5f.js';
7
- import { a as SymbolDescriptor } from './DataProvider-B-Jz59Rf.js';
7
+ import { a as SymbolDescriptor } from './DataProvider-Cb-2lC5O.js';
8
8
  import { d as SidePanel } from './side-panel-HF0IAzwf.js';
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-HF0IAzwf.js';
10
10
 
@@ -252,21 +252,35 @@ declare class Statusline {
252
252
  /** Fit mode (multi-chart cells): one row, overflowing segments hidden — see {@link setFitMode}. */
253
253
  private fitMode;
254
254
  private fitRO;
255
+ /** The identity row (avatar / symbol / meta / market) and the values row (readout /
256
+ * eye) — one line side by side, or a two-line column once the ladder stacks them. */
257
+ private readonly identityRow;
258
+ private readonly valuesRow;
259
+ /** The ladder rung currently applied — see {@link fit}. */
260
+ private layout;
255
261
  constructor(host: HTMLElement, symbol: string,
256
262
  /** The avatar's icon URL for a raw symbol — the shell routes it to the owning
257
263
  * provider's `resolveSymbolIcon`. Absent ⇒ the initials badge. */
258
264
  iconFor?: ((symbol: string) => string | undefined) | undefined);
259
265
  setSymbol(symbol: string): void;
260
266
  /**
261
- * Multi-chart cells: keep the line on ONE row whatever the cell width — never wrap.
262
- * Segments that don't fit are hidden outright rather than clipped mid-glyph, least
263
- * important first: OHLC, then the bar change, the venue/timeframe meta, and the
264
- * market badge; the logo + ticker always stay. Re-fits live on host resizes.
267
+ * Multi-chart cells: the same width ladder as a single chart, plus a last resort for
268
+ * cells too narrow for even its bottom rung — whatever still overflows is hidden
269
+ * outright rather than clipped mid-glyph, least important first: the values, the
270
+ * venue/timeframe meta, then the market badge; the logo + ticker always stay.
265
271
  */
266
272
  setFitMode(on: boolean): void;
267
273
  /** Project the parts config onto the segments (the baseline fit() prunes from). */
268
274
  private syncParts;
269
- /** Hide overflowing segments until the row fits its max-width (fit mode only). */
275
+ /** Apply one ladder rung: the stacked/inline shape and the readout's level. */
276
+ private applyLayout;
277
+ /**
278
+ * Walk the width ladder (see {@link STATUSLINE_LADDER}) until the chip fits its
279
+ * max-width: the full one-line readout, then the values stacked under the symbol
280
+ * line, then O/H/L shed, then the absolute change. In fit mode, when the last rung
281
+ * still overflows, whole segments hide, least important first. Without layout
282
+ * (detached host, node tests) nothing overflows, so the widest rung stays.
283
+ */
270
284
  private fit;
271
285
  /** Shape + color the value readout after the active price style: its own up/down
272
286
  * colors (candle bodies, bar ticks, the line color, …), the direction rule that
@@ -306,6 +320,8 @@ declare class Statusline {
306
320
  destroy(): void;
307
321
  private detach;
308
322
  private render;
323
+ /** Write the value readout for the current bar at the current ladder level. */
324
+ private renderValues;
309
325
  }
310
326
 
311
327
  declare class Watermark {
@@ -365,6 +381,11 @@ declare class SymbolPicker {
365
381
  /** Wire where symbols come from (re-called on every widget rebuild). */
366
382
  setSource(source: () => readonly SymbolDescriptor[]): void;
367
383
  open(initialQuery?: string): void;
384
+ get isOpen(): boolean;
385
+ /** Text typed at the picker that never reached its field: closed, it opens seeded
386
+ * with the text; open (the field takes focus a tick after the dialog does, and a
387
+ * fast typist's next key lands in that tick), it extends the query. */
388
+ type(text: string): void;
368
389
  close(): void;
369
390
  destroy(): void;
370
391
  /** Route a row activation: a GROUP row loads its default member (the root itself is
@@ -435,6 +456,11 @@ declare class TimeframeQuick {
435
456
  private readonly hint;
436
457
  constructor(opts: TimeframeQuickOptions);
437
458
  open(seed?: string): void;
459
+ get isOpen(): boolean;
460
+ /** Text typed at the entry that never reached its field: closed, it opens seeded
461
+ * with the text; open (the field takes focus a tick after the dialog does, and a
462
+ * fast typist's next key lands in that tick), it extends the entry. */
463
+ type(text: string): void;
438
464
  close(): void;
439
465
  destroy(): void;
440
466
  private renderHint;
@@ -519,7 +545,8 @@ declare class ObjectTree extends SidePanel {
519
545
  * owning provider's `resolveSymbolIcon`. Absent ⇒ the initials badge. */
520
546
  private readonly iconFor?;
521
547
  private chart;
522
- private selectedDrawing;
548
+ /** What the CHART has selected — every member of a multi-selection, mirrored as rows. */
549
+ private selectedDrawings;
523
550
  private symbolName;
524
551
  /** The raw (possibly venue-prefixed) symbol — what icon resolution routes on. */
525
552
  private symbolRaw;
package/dist/widget.js CHANGED
@@ -1,6 +1,6 @@
1
- import { VelaWorkspace } from './chunk-OSZDSH7F.js';
2
- export { Bottombar, ChartContextMenu, DataWindow, IndicatorPicker, ObjectTree, PanelDock, RANGE_PRESETS, ShortcutsHelp, Statusline, SymbolPicker, TimeframeQuick, Topbar, Watermark, dataWindowSections, decimalsFor, decodeState, encodeState, filterSymbols, fmtChange, fmtPrice, localStorageAdapter, parseTimeframe, priceStyleLabel, resolveIndicators, sanitizeState, timeframeLabel, timeframeMs } from './chunk-OSZDSH7F.js';
3
- export { TIMEZONES, normalizeTimezone, tzButtonLabel, tzMenuLabel, tzOffset } from './chunk-YCD72KGK.js';
1
+ import { VelaWorkspace } from './chunk-BXF7VNNE.js';
2
+ export { Bottombar, ChartContextMenu, DataWindow, IndicatorPicker, ObjectTree, PanelDock, RANGE_PRESETS, ShortcutsHelp, Statusline, SymbolPicker, TimeframeQuick, Topbar, Watermark, dataWindowSections, decimalsFor, decodeState, encodeState, filterSymbols, fmtChange, fmtPrice, localStorageAdapter, parseTimeframe, priceStyleLabel, resolveIndicators, sanitizeState, timeframeLabel, timeframeMs } from './chunk-BXF7VNNE.js';
3
+ export { TIMEZONES, normalizeTimezone, tzButtonLabel, tzMenuLabel, tzOffset } from './chunk-22QJKGXX.js';
4
4
  export { DEFAULT_PANEL_MAX_WIDTH, DEFAULT_PANEL_MIN_WIDTH, DEFAULT_PANEL_ORDER, DEFAULT_PANEL_WIDTH, OVERRIDABLE_TOPBAR_IDS, SidePanel, TOPBAR_BUILTIN_IDS, TOPBAR_DEFAULT_LEFT, TOPBAR_DEFAULT_RIGHT, clampPanelWidth, pinnedTopbarActionIds, registerSidePanel, registerStatePersistence, registerSymbolRanking, registerWidgetAction, registerWidgetAttachment, resolveTopbarComposition, sidePanels, statePersistenceHandlers, symbolRanking, topbarActionOverride, topbarHas, unregisterSidePanel, unregisterStatePersistence, unregisterWidgetAction, unregisterWidgetAttachment, widgetActions, widgetAttachments } from './chunk-IFJJPXSV.js';
5
5
  import './chunk-XCBJU674.js';
6
6
  import './chunk-T5Z5YUCF.js';