@luxalgo/vela 0.6.19 → 0.6.21
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/{chunk-627A5HEV.js → chunk-BRPFYKTT.js} +3 -3
- package/dist/{chunk-22QJKGXX.js → chunk-TRZQQUTR.js} +15 -5
- package/dist/{contributions-DEPRtkmG.d.cts → contributions-D8HdlKmp.d.cts} +4 -0
- package/dist/{contributions-5nz3PLRe.d.ts → contributions-FqIWhN4p.d.ts} +4 -0
- package/dist/index.cjs +15 -5
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/{plugin-CUtfLeqz.d.ts → plugin-B4mnNAeh.d.ts} +1 -1
- package/dist/{plugin-DVUaROPo.d.cts → plugin-Ccupy_BV.d.cts} +1 -1
- package/dist/plugin.d.cts +2 -2
- package/dist/plugin.d.ts +2 -2
- package/dist/{statusline-model-wW3m4in1.d.ts → statusline-model-CCP1zm_Z.d.ts} +1 -1
- package/dist/{statusline-model-hY9cK4BS.d.cts → statusline-model-E7CMw5pQ.d.cts} +1 -1
- package/dist/vela.global.js +15 -5
- package/dist/vela.global.min.js +2 -2
- package/dist/widget.cjs +17 -7
- package/dist/widget.d.cts +4 -4
- package/dist/widget.d.ts +4 -4
- package/dist/widget.js +3 -3
- package/dist/workspace.cjs +17 -7
- package/dist/workspace.d.cts +3 -3
- package/dist/workspace.d.ts +3 -3
- package/dist/workspace.js +2 -2
- package/package.json +2 -1
package/dist/widget.cjs
CHANGED
|
@@ -19188,6 +19188,7 @@ var EngineOrchestrator = class _EngineOrchestrator {
|
|
|
19188
19188
|
if (!record.native) continue;
|
|
19189
19189
|
record.native.instance.stop();
|
|
19190
19190
|
record.native.instance = record.native.descriptor.create();
|
|
19191
|
+
record.native.started = false;
|
|
19191
19192
|
record.pendingStructural = true;
|
|
19192
19193
|
if (record.hidden) {
|
|
19193
19194
|
record.native.stale = true;
|
|
@@ -19683,7 +19684,7 @@ var EngineOrchestrator = class _EngineOrchestrator {
|
|
|
19683
19684
|
if (record.renderHandle) this.renderer.setIndicatorVisible?.(record.renderHandle, true);
|
|
19684
19685
|
record.pendingStructural = true;
|
|
19685
19686
|
if (record.native) {
|
|
19686
|
-
if (record.native.stale) {
|
|
19687
|
+
if (record.native.stale || !record.native.started) {
|
|
19687
19688
|
record.native.stale = false;
|
|
19688
19689
|
const handle = this.handles.get(id);
|
|
19689
19690
|
if (handle) void this.startNativeIndicator(id, handle);
|
|
@@ -19864,6 +19865,7 @@ var EngineOrchestrator = class _EngineOrchestrator {
|
|
|
19864
19865
|
}
|
|
19865
19866
|
};
|
|
19866
19867
|
record.native.instance.start(ctx, record.inputValues);
|
|
19868
|
+
record.native.started = true;
|
|
19867
19869
|
} catch (err) {
|
|
19868
19870
|
this.fail(id, handle, err);
|
|
19869
19871
|
}
|
|
@@ -37704,6 +37706,8 @@ function volumeLayerData(inputs) {
|
|
|
37704
37706
|
}
|
|
37705
37707
|
var VolumeIndicator = class {
|
|
37706
37708
|
constructor() {
|
|
37709
|
+
/** Null until start() — pre-start setInputs/resume must record without pushing. */
|
|
37710
|
+
this.ctx = null;
|
|
37707
37711
|
this.inputs = {};
|
|
37708
37712
|
}
|
|
37709
37713
|
start(ctx, inputs) {
|
|
@@ -37720,13 +37724,13 @@ var VolumeIndicator = class {
|
|
|
37720
37724
|
}
|
|
37721
37725
|
setInputs(inputs) {
|
|
37722
37726
|
this.inputs = inputs;
|
|
37723
|
-
this.ctx
|
|
37727
|
+
this.ctx?.pushData(volumeLayerData(inputs));
|
|
37724
37728
|
}
|
|
37725
37729
|
/** Hiding is a renderer-layer flag (set via `setIndicatorVisible`); no resources to free. */
|
|
37726
37730
|
suspend() {
|
|
37727
37731
|
}
|
|
37728
37732
|
resume() {
|
|
37729
|
-
this.ctx
|
|
37733
|
+
this.ctx?.pushData(volumeLayerData(this.inputs));
|
|
37730
37734
|
}
|
|
37731
37735
|
stop() {
|
|
37732
37736
|
}
|
|
@@ -37772,6 +37776,8 @@ function vpvrLayerData(inputs) {
|
|
|
37772
37776
|
}
|
|
37773
37777
|
var VpvrIndicator = class {
|
|
37774
37778
|
constructor() {
|
|
37779
|
+
/** Null until start() — pre-start setInputs/resume must record without pushing. */
|
|
37780
|
+
this.ctx = null;
|
|
37775
37781
|
this.inputs = {};
|
|
37776
37782
|
}
|
|
37777
37783
|
start(ctx, inputs) {
|
|
@@ -37788,13 +37794,13 @@ var VpvrIndicator = class {
|
|
|
37788
37794
|
}
|
|
37789
37795
|
setInputs(inputs) {
|
|
37790
37796
|
this.inputs = inputs;
|
|
37791
|
-
this.ctx
|
|
37797
|
+
this.ctx?.pushData(vpvrLayerData(inputs));
|
|
37792
37798
|
}
|
|
37793
37799
|
/** Hiding is a renderer-layer flag (set via `setIndicatorVisible`); no resources to free. */
|
|
37794
37800
|
suspend() {
|
|
37795
37801
|
}
|
|
37796
37802
|
resume() {
|
|
37797
|
-
this.ctx
|
|
37803
|
+
this.ctx?.pushData(vpvrLayerData(this.inputs));
|
|
37798
37804
|
}
|
|
37799
37805
|
stop() {
|
|
37800
37806
|
}
|
|
@@ -37860,6 +37866,8 @@ function toPoints(bars, values, colors) {
|
|
|
37860
37866
|
var ClassicIndicator = class {
|
|
37861
37867
|
constructor(spec) {
|
|
37862
37868
|
this.spec = spec;
|
|
37869
|
+
/** Null until start() — a pre-start setInputs must record without computing. */
|
|
37870
|
+
this.ctx = null;
|
|
37863
37871
|
this.inputs = {};
|
|
37864
37872
|
}
|
|
37865
37873
|
start(ctx, inputs) {
|
|
@@ -37874,6 +37882,7 @@ var ClassicIndicator = class {
|
|
|
37874
37882
|
}
|
|
37875
37883
|
setInputs(inputs) {
|
|
37876
37884
|
this.inputs = inputs;
|
|
37885
|
+
if (!this.ctx) return;
|
|
37877
37886
|
this.recompute();
|
|
37878
37887
|
}
|
|
37879
37888
|
/** Nothing to free — the compute reads the live bar accessor on demand. */
|
|
@@ -37885,6 +37894,7 @@ var ClassicIndicator = class {
|
|
|
37885
37894
|
stop() {
|
|
37886
37895
|
}
|
|
37887
37896
|
recompute() {
|
|
37897
|
+
if (!this.ctx) return;
|
|
37888
37898
|
const bars = this.ctx.bars();
|
|
37889
37899
|
const out = this.spec.compute(bars, this.inputs);
|
|
37890
37900
|
const instanceId = this.spec.type;
|
|
@@ -41911,7 +41921,7 @@ var ChartCell = class {
|
|
|
41911
41921
|
// A RESTORED ledger is authoritative for the auto-added volume too: a
|
|
41912
41922
|
// slot persisted without it must come back without it (fresh slots
|
|
41913
41923
|
// keep the workspace default).
|
|
41914
|
-
volume: seed.indicators ? seed.indicators.natives.
|
|
41924
|
+
volume: seed.indicators ? seed.indicators.natives.some((e) => ledgerNativeType(e) === "volume") : deps.volume,
|
|
41915
41925
|
nativeBackend: deps.nativeBackend,
|
|
41916
41926
|
// The user's drawings option minus its toolbar: one SHARED bar serves
|
|
41917
41927
|
// the whole workspace (per-cell bars would cost a 44px gutter each).
|
|
@@ -42571,7 +42581,7 @@ var ChartCell = class {
|
|
|
42571
42581
|
addExternalIndicator(entry) {
|
|
42572
42582
|
this.addManifestInstance(
|
|
42573
42583
|
{ ...entry, enabled: true },
|
|
42574
|
-
{ external: true, ...entry.inputs ? { inputs: entry.inputs } : {}, ...entry.props ? { props: entry.props } : {} }
|
|
42584
|
+
{ external: true, ...entry.inputs ? { inputs: entry.inputs } : {}, ...entry.props ? { props: entry.props } : {}, ...entry.hidden ? { hidden: true } : {} }
|
|
42575
42585
|
);
|
|
42576
42586
|
}
|
|
42577
42587
|
/** Add ONE instance of a manifest entry (repeatable — duplicates are legitimate). */
|
package/dist/widget.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { V as Vela, W as WidgetContext, K as SidePanelButton } from './contributions-
|
|
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-
|
|
1
|
+
import { V as Vela, W as WidgetContext, K as SidePanelButton } from './contributions-D8HdlKmp.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-D8HdlKmp.cjs';
|
|
3
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-
|
|
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-
|
|
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-E7CMw5pQ.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-E7CMw5pQ.cjs';
|
|
6
6
|
import { K as KeymapManager } from './keymap-CGOz5F5f.cjs';
|
|
7
7
|
import { a as SymbolDescriptor } from './DataProvider-UtWw2CgJ.cjs';
|
|
8
8
|
import { d as SidePanel } from './side-panel-HF0IAzwf.cjs';
|
package/dist/widget.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { V as Vela, W as WidgetContext, K as SidePanelButton } from './contributions-
|
|
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-
|
|
1
|
+
import { V as Vela, W as WidgetContext, K as SidePanelButton } from './contributions-FqIWhN4p.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-FqIWhN4p.js';
|
|
3
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-
|
|
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-
|
|
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-CCP1zm_Z.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-CCP1zm_Z.js';
|
|
6
6
|
import { K as KeymapManager } from './keymap-CGOz5F5f.js';
|
|
7
7
|
import { a as SymbolDescriptor } from './DataProvider-Cb-2lC5O.js';
|
|
8
8
|
import { d as SidePanel } from './side-panel-HF0IAzwf.js';
|
package/dist/widget.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { VelaWorkspace } from './chunk-
|
|
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-
|
|
3
|
-
export { TIMEZONES, normalizeTimezone, tzButtonLabel, tzMenuLabel, tzOffset } from './chunk-
|
|
1
|
+
import { VelaWorkspace } from './chunk-BRPFYKTT.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-BRPFYKTT.js';
|
|
3
|
+
export { TIMEZONES, normalizeTimezone, tzButtonLabel, tzMenuLabel, tzOffset } from './chunk-TRZQQUTR.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';
|
package/dist/workspace.cjs
CHANGED
|
@@ -19120,6 +19120,7 @@ var EngineOrchestrator = class _EngineOrchestrator {
|
|
|
19120
19120
|
if (!record.native) continue;
|
|
19121
19121
|
record.native.instance.stop();
|
|
19122
19122
|
record.native.instance = record.native.descriptor.create();
|
|
19123
|
+
record.native.started = false;
|
|
19123
19124
|
record.pendingStructural = true;
|
|
19124
19125
|
if (record.hidden) {
|
|
19125
19126
|
record.native.stale = true;
|
|
@@ -19615,7 +19616,7 @@ var EngineOrchestrator = class _EngineOrchestrator {
|
|
|
19615
19616
|
if (record.renderHandle) this.renderer.setIndicatorVisible?.(record.renderHandle, true);
|
|
19616
19617
|
record.pendingStructural = true;
|
|
19617
19618
|
if (record.native) {
|
|
19618
|
-
if (record.native.stale) {
|
|
19619
|
+
if (record.native.stale || !record.native.started) {
|
|
19619
19620
|
record.native.stale = false;
|
|
19620
19621
|
const handle = this.handles.get(id);
|
|
19621
19622
|
if (handle) void this.startNativeIndicator(id, handle);
|
|
@@ -19796,6 +19797,7 @@ var EngineOrchestrator = class _EngineOrchestrator {
|
|
|
19796
19797
|
}
|
|
19797
19798
|
};
|
|
19798
19799
|
record.native.instance.start(ctx, record.inputValues);
|
|
19800
|
+
record.native.started = true;
|
|
19799
19801
|
} catch (err) {
|
|
19800
19802
|
this.fail(id, handle, err);
|
|
19801
19803
|
}
|
|
@@ -37636,6 +37638,8 @@ function volumeLayerData(inputs) {
|
|
|
37636
37638
|
}
|
|
37637
37639
|
var VolumeIndicator = class {
|
|
37638
37640
|
constructor() {
|
|
37641
|
+
/** Null until start() — pre-start setInputs/resume must record without pushing. */
|
|
37642
|
+
this.ctx = null;
|
|
37639
37643
|
this.inputs = {};
|
|
37640
37644
|
}
|
|
37641
37645
|
start(ctx, inputs) {
|
|
@@ -37652,13 +37656,13 @@ var VolumeIndicator = class {
|
|
|
37652
37656
|
}
|
|
37653
37657
|
setInputs(inputs) {
|
|
37654
37658
|
this.inputs = inputs;
|
|
37655
|
-
this.ctx
|
|
37659
|
+
this.ctx?.pushData(volumeLayerData(inputs));
|
|
37656
37660
|
}
|
|
37657
37661
|
/** Hiding is a renderer-layer flag (set via `setIndicatorVisible`); no resources to free. */
|
|
37658
37662
|
suspend() {
|
|
37659
37663
|
}
|
|
37660
37664
|
resume() {
|
|
37661
|
-
this.ctx
|
|
37665
|
+
this.ctx?.pushData(volumeLayerData(this.inputs));
|
|
37662
37666
|
}
|
|
37663
37667
|
stop() {
|
|
37664
37668
|
}
|
|
@@ -37704,6 +37708,8 @@ function vpvrLayerData(inputs) {
|
|
|
37704
37708
|
}
|
|
37705
37709
|
var VpvrIndicator = class {
|
|
37706
37710
|
constructor() {
|
|
37711
|
+
/** Null until start() — pre-start setInputs/resume must record without pushing. */
|
|
37712
|
+
this.ctx = null;
|
|
37707
37713
|
this.inputs = {};
|
|
37708
37714
|
}
|
|
37709
37715
|
start(ctx, inputs) {
|
|
@@ -37720,13 +37726,13 @@ var VpvrIndicator = class {
|
|
|
37720
37726
|
}
|
|
37721
37727
|
setInputs(inputs) {
|
|
37722
37728
|
this.inputs = inputs;
|
|
37723
|
-
this.ctx
|
|
37729
|
+
this.ctx?.pushData(vpvrLayerData(inputs));
|
|
37724
37730
|
}
|
|
37725
37731
|
/** Hiding is a renderer-layer flag (set via `setIndicatorVisible`); no resources to free. */
|
|
37726
37732
|
suspend() {
|
|
37727
37733
|
}
|
|
37728
37734
|
resume() {
|
|
37729
|
-
this.ctx
|
|
37735
|
+
this.ctx?.pushData(vpvrLayerData(this.inputs));
|
|
37730
37736
|
}
|
|
37731
37737
|
stop() {
|
|
37732
37738
|
}
|
|
@@ -37792,6 +37798,8 @@ function toPoints(bars, values, colors) {
|
|
|
37792
37798
|
var ClassicIndicator = class {
|
|
37793
37799
|
constructor(spec) {
|
|
37794
37800
|
this.spec = spec;
|
|
37801
|
+
/** Null until start() — a pre-start setInputs must record without computing. */
|
|
37802
|
+
this.ctx = null;
|
|
37795
37803
|
this.inputs = {};
|
|
37796
37804
|
}
|
|
37797
37805
|
start(ctx, inputs) {
|
|
@@ -37806,6 +37814,7 @@ var ClassicIndicator = class {
|
|
|
37806
37814
|
}
|
|
37807
37815
|
setInputs(inputs) {
|
|
37808
37816
|
this.inputs = inputs;
|
|
37817
|
+
if (!this.ctx) return;
|
|
37809
37818
|
this.recompute();
|
|
37810
37819
|
}
|
|
37811
37820
|
/** Nothing to free — the compute reads the live bar accessor on demand. */
|
|
@@ -37817,6 +37826,7 @@ var ClassicIndicator = class {
|
|
|
37817
37826
|
stop() {
|
|
37818
37827
|
}
|
|
37819
37828
|
recompute() {
|
|
37829
|
+
if (!this.ctx) return;
|
|
37820
37830
|
const bars = this.ctx.bars();
|
|
37821
37831
|
const out = this.spec.compute(bars, this.inputs);
|
|
37822
37832
|
const instanceId = this.spec.type;
|
|
@@ -41843,7 +41853,7 @@ var ChartCell = class {
|
|
|
41843
41853
|
// A RESTORED ledger is authoritative for the auto-added volume too: a
|
|
41844
41854
|
// slot persisted without it must come back without it (fresh slots
|
|
41845
41855
|
// keep the workspace default).
|
|
41846
|
-
volume: seed.indicators ? seed.indicators.natives.
|
|
41856
|
+
volume: seed.indicators ? seed.indicators.natives.some((e) => ledgerNativeType(e) === "volume") : deps.volume,
|
|
41847
41857
|
nativeBackend: deps.nativeBackend,
|
|
41848
41858
|
// The user's drawings option minus its toolbar: one SHARED bar serves
|
|
41849
41859
|
// the whole workspace (per-cell bars would cost a 44px gutter each).
|
|
@@ -42503,7 +42513,7 @@ var ChartCell = class {
|
|
|
42503
42513
|
addExternalIndicator(entry) {
|
|
42504
42514
|
this.addManifestInstance(
|
|
42505
42515
|
{ ...entry, enabled: true },
|
|
42506
|
-
{ external: true, ...entry.inputs ? { inputs: entry.inputs } : {}, ...entry.props ? { props: entry.props } : {} }
|
|
42516
|
+
{ external: true, ...entry.inputs ? { inputs: entry.inputs } : {}, ...entry.props ? { props: entry.props } : {}, ...entry.hidden ? { hidden: true } : {} }
|
|
42507
42517
|
);
|
|
42508
42518
|
}
|
|
42509
42519
|
/** Add ONE instance of a manifest entry (repeatable — duplicates are legitimate). */
|
package/dist/workspace.d.cts
CHANGED
|
@@ -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-BCRmYALw.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-
|
|
3
|
-
export { g as ChartState, P as PanelsState, h as decodeState, i as encodeState, s as sanitizeState } from './statusline-model-
|
|
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-E7CMw5pQ.cjs';
|
|
3
|
+
export { g as ChartState, P as PanelsState, h as decodeState, i as encodeState, s as sanitizeState } from './statusline-model-E7CMw5pQ.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-
|
|
5
|
+
import { I as IndicatorHandle, S as ScriptingEngine, W as WidgetContext, V as Vela, E as ExternalIndicatorEntry, a as ScriptRun } from './contributions-D8HdlKmp.cjs';
|
|
6
6
|
import { M as MarketDataFeed } from './DataProvider-UtWw2CgJ.cjs';
|
|
7
7
|
|
|
8
8
|
/** The cells that follow `originId` under `setting` — PURE (never includes the origin). */
|
package/dist/workspace.d.ts
CHANGED
|
@@ -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-BCRmYALw.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-
|
|
3
|
-
export { g as ChartState, P as PanelsState, h as decodeState, i as encodeState, s as sanitizeState } from './statusline-model-
|
|
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-CCP1zm_Z.js';
|
|
3
|
+
export { g as ChartState, P as PanelsState, h as decodeState, i as encodeState, s as sanitizeState } from './statusline-model-CCP1zm_Z.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-
|
|
5
|
+
import { I as IndicatorHandle, S as ScriptingEngine, W as WidgetContext, V as Vela, E as ExternalIndicatorEntry, a as ScriptRun } from './contributions-FqIWhN4p.js';
|
|
6
6
|
import { M as MarketDataFeed } from './DataProvider-Cb-2lC5O.js';
|
|
7
7
|
|
|
8
8
|
/** The cells that follow `originId` under `setting` — PURE (never includes the origin). */
|
package/dist/workspace.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
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-
|
|
2
|
-
import './chunk-
|
|
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-BRPFYKTT.js';
|
|
2
|
+
import './chunk-TRZQQUTR.js';
|
|
3
3
|
import './chunk-IFJJPXSV.js';
|
|
4
4
|
import './chunk-XCBJU674.js';
|
|
5
5
|
import './chunk-T5Z5YUCF.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luxalgo/vela",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.21",
|
|
4
4
|
"description": "Open-source charting library with a native high-performance renderer, drawing tools, pluggable chart types and pluggable scripting engines.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://luxalgo.com/vela",
|
|
@@ -77,6 +77,7 @@
|
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
79
|
"eslint": "^9.0.0",
|
|
80
|
+
"jsdom": "^29.1.1",
|
|
80
81
|
"tsup": "^8.0.0",
|
|
81
82
|
"typescript": "~5.9.3",
|
|
82
83
|
"typescript-eslint": "^8.0.0",
|