@luxalgo/vela 0.8.0 → 0.8.1
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/NOTICE +1 -1
- package/README.md +15 -7
- package/dist/{chunk-QBPUT5SU.js → chunk-ATGTCWHJ.js} +41 -23
- package/dist/{chunk-E3GU6AUI.js → chunk-DBDXKZUF.js} +18 -13
- package/dist/{chunk-KA77UTRF.js → chunk-LMBYEGUR.js} +1 -1
- package/dist/{chunk-2IAETM2I.js → chunk-NELQJCGK.js} +38 -3
- package/dist/index.cjs +78 -25
- package/dist/index.js +2 -2
- package/dist/ui.cjs +38 -3
- package/dist/ui.js +2 -2
- package/dist/vela.global.js +78 -25
- package/dist/vela.global.min.js +51 -58
- package/dist/widget.cjs +93 -35
- package/dist/widget.js +5 -5
- package/dist/workspace.cjs +93 -35
- package/dist/workspace.d.cts +1 -1
- package/dist/workspace.d.ts +1 -1
- package/dist/workspace.js +4 -4
- package/package.json +2 -2
package/dist/workspace.cjs
CHANGED
|
@@ -3617,14 +3617,49 @@ function buildColorPicker(color, theme, onChange, options = {}) {
|
|
|
3617
3617
|
const knob = document.createElement("div");
|
|
3618
3618
|
knob.style.cssText = "position:absolute;top:50%;width:15px;height:15px;border-radius:50%;background:var(--vela-selected-bg);box-shadow:0 1px 3px rgba(0,0,0,0.55);transform:translate(-50%,-50%);pointer-events:none;";
|
|
3619
3619
|
track.appendChild(knob);
|
|
3620
|
-
const pctBox = document.createElement("
|
|
3621
|
-
pctBox.
|
|
3620
|
+
const pctBox = document.createElement("input");
|
|
3621
|
+
pctBox.type = "text";
|
|
3622
|
+
pctBox.inputMode = "numeric";
|
|
3623
|
+
pctBox.title = "Opacity (%)";
|
|
3624
|
+
pctBox.style.cssText = `width:46px;box-sizing:border-box;text-align:center;font:var(--vela-font-size-md) ${theme.fontFamily};color:var(--vela-fg);background:transparent;border:1px solid var(--vela-border);border-radius:5px;padding:3px 4px;outline:none;`;
|
|
3625
|
+
pctBox.addEventListener("focus", () => {
|
|
3626
|
+
pctBox.style.borderColor = "var(--vela-border-strong)";
|
|
3627
|
+
pctBox.select();
|
|
3628
|
+
});
|
|
3622
3629
|
opRow.append(track, pctBox);
|
|
3623
3630
|
const paintOpacity = () => {
|
|
3624
3631
|
track.style.background = `linear-gradient(to right, ${curHex}00, ${curHex}ff), ${CHECKER}`;
|
|
3625
3632
|
knob.style.left = `${curAlpha * 100}%`;
|
|
3626
|
-
pctBox.
|
|
3633
|
+
pctBox.value = `${Math.round(curAlpha * 100)}%`;
|
|
3627
3634
|
};
|
|
3635
|
+
const commitTyped = () => {
|
|
3636
|
+
pctBox.style.borderColor = "var(--vela-border)";
|
|
3637
|
+
const n = parseFloat(pctBox.value.replace("%", ""));
|
|
3638
|
+
if (Number.isFinite(n)) {
|
|
3639
|
+
const next = Math.max(0, Math.min(100, n)) / 100;
|
|
3640
|
+
if (Math.round(next * 100) !== Math.round(curAlpha * 100)) {
|
|
3641
|
+
curAlpha = next;
|
|
3642
|
+
paintOpacity();
|
|
3643
|
+
emit();
|
|
3644
|
+
return;
|
|
3645
|
+
}
|
|
3646
|
+
}
|
|
3647
|
+
paintOpacity();
|
|
3648
|
+
};
|
|
3649
|
+
pctBox.addEventListener("change", commitTyped);
|
|
3650
|
+
pctBox.addEventListener("blur", () => {
|
|
3651
|
+
pctBox.style.borderColor = "var(--vela-border)";
|
|
3652
|
+
paintOpacity();
|
|
3653
|
+
});
|
|
3654
|
+
pctBox.addEventListener("keydown", (e) => {
|
|
3655
|
+
if (e.key === "Escape") return;
|
|
3656
|
+
e.stopPropagation();
|
|
3657
|
+
if (e.key === "Enter") {
|
|
3658
|
+
e.preventDefault();
|
|
3659
|
+
commitTyped();
|
|
3660
|
+
pctBox.blur();
|
|
3661
|
+
}
|
|
3662
|
+
});
|
|
3628
3663
|
let dragging = false;
|
|
3629
3664
|
const onDrag = (clientX) => {
|
|
3630
3665
|
const r = track.getBoundingClientRect();
|
|
@@ -15129,7 +15164,12 @@ var TimeframeQuick = class {
|
|
|
15129
15164
|
content: (body) => body.append(this.input, this.hint),
|
|
15130
15165
|
onOpenChange: (open2) => opts.onOpenChange?.(open2)
|
|
15131
15166
|
});
|
|
15132
|
-
this.input.addEventListener("input", () =>
|
|
15167
|
+
this.input.addEventListener("input", () => {
|
|
15168
|
+
const { selectionStart, selectionEnd } = this.input;
|
|
15169
|
+
this.input.value = this.input.value.toUpperCase();
|
|
15170
|
+
this.input.setSelectionRange(selectionStart, selectionEnd);
|
|
15171
|
+
this.renderHint();
|
|
15172
|
+
});
|
|
15133
15173
|
this.input.addEventListener("keydown", (e) => {
|
|
15134
15174
|
if (e.key !== "Enter") return;
|
|
15135
15175
|
const parsed = parseTimeframe(this.input.value);
|
|
@@ -15141,7 +15181,7 @@ var TimeframeQuick = class {
|
|
|
15141
15181
|
}
|
|
15142
15182
|
open(seed = "") {
|
|
15143
15183
|
this.dialog.show();
|
|
15144
|
-
this.input.value = seed;
|
|
15184
|
+
this.input.value = seed.toUpperCase();
|
|
15145
15185
|
this.renderHint();
|
|
15146
15186
|
setTimeout(() => {
|
|
15147
15187
|
this.input.focus();
|
|
@@ -15159,7 +15199,7 @@ var TimeframeQuick = class {
|
|
|
15159
15199
|
this.open(text);
|
|
15160
15200
|
return;
|
|
15161
15201
|
}
|
|
15162
|
-
this.input.value += text;
|
|
15202
|
+
this.input.value += text.toUpperCase();
|
|
15163
15203
|
this.renderHint();
|
|
15164
15204
|
}
|
|
15165
15205
|
close() {
|
|
@@ -15172,7 +15212,7 @@ var TimeframeQuick = class {
|
|
|
15172
15212
|
const raw = this.input.value.trim();
|
|
15173
15213
|
const parsed = parseTimeframe(raw);
|
|
15174
15214
|
if (!raw) {
|
|
15175
|
-
this.hint.textContent = "e.g. 15,
|
|
15215
|
+
this.hint.textContent = "e.g. 15, 4H, D, 3M";
|
|
15176
15216
|
delete this.hint.dataset.invalid;
|
|
15177
15217
|
} else if (parsed.valid) {
|
|
15178
15218
|
this.hint.textContent = parsed.label ?? "";
|
|
@@ -15275,7 +15315,7 @@ var ShortcutsHelp = class {
|
|
|
15275
15315
|
addRow("Delete the drawing under the cursor", ["Middle-click"]);
|
|
15276
15316
|
const s = doc.createElement("div");
|
|
15277
15317
|
s.className = "vela-sh-static";
|
|
15278
|
-
s.textContent = "Typing a letter opens the symbol search; typing a digit opens the timeframe entry.";
|
|
15318
|
+
s.textContent = "Typing a letter or 0 opens the symbol search; typing a digit from 1 to 9 opens the timeframe entry.";
|
|
15279
15319
|
this.list.appendChild(s);
|
|
15280
15320
|
}
|
|
15281
15321
|
};
|
|
@@ -18297,23 +18337,21 @@ function arrowHitHtml(svg) {
|
|
|
18297
18337
|
return `<span class="vela-dtb-hit vela-dtb-hit--arrow">${iconSpan(svg, 11)}</span>`;
|
|
18298
18338
|
}
|
|
18299
18339
|
|
|
18300
|
-
// src/renderers/native/chrome/
|
|
18301
|
-
var
|
|
18302
|
-
var
|
|
18340
|
+
// src/renderers/native/chrome/vela-logos.ts
|
|
18341
|
+
var VELA_MARK_SVG = '<svg viewBox="0 -142 161.66 148" aria-hidden="true"><g fill="currentColor"><path d="M0 -140L32.91 -140L77.52 -62.73L61.06 -34.24Z"/><path d="M161.66 -140L128.75 -140L84.14 -62.73L100.59 -34.24Z"/><path d="M80.83 -52.04L95.85 -26.02L80.83 0L65.81 -26.02Z"/></g></svg>';
|
|
18342
|
+
var VELA_LETTERS_SVG = '<svg viewBox="161.66 -142 310.57 148" aria-hidden="true"><g fill="currentColor"><path d="M226.3 1.17Q200.81 1.17 186.12 -12.99Q171.42 -27.15 171.42 -51.17Q171.42 -75.2 185.87 -89.6Q200.33 -104 224.25 -104Q247.4 -104 261.7 -90.58Q276.01 -77.15 276.3 -54.59Q276.3 -49.9 275.42 -45.02H200.81V-43.55Q201.2 -32.62 207.75 -26.42Q214.29 -20.21 225.03 -20.21Q233.72 -20.21 239.34 -23.93Q244.95 -27.64 246.81 -34.77H274.64Q272.1 -19.14 259.16 -8.98Q246.22 1.17 226.3 1.17ZM201.5 -63.38H247.88Q246.42 -72.75 240.27 -77.88Q234.12 -83.01 224.45 -83.01Q215.17 -83.01 208.92 -77.73Q202.67 -72.46 201.5 -63.38ZM287.54 0V-140.04H315.76V0ZM429.34 -23.83H432.56V0H418.11Q407.76 0 403.36 -4.44Q398.97 -8.89 399.16 -16.8Q387.83 1.17 365.57 1.17Q348.48 1.17 337.88 -6.74Q327.29 -14.65 327.29 -29Q327.29 -45.41 339.45 -54.3Q351.6 -63.18 374.55 -63.18H394.96V-68.16Q394.96 -75.2 390.08 -79.3Q385.2 -83.4 376.51 -83.4Q368.3 -83.4 363.03 -79.98Q357.76 -76.56 356.88 -70.8H329.73Q331.19 -85.84 344.08 -94.92Q356.97 -104 377.29 -104Q399.06 -104 410.88 -94.43Q422.7 -84.86 422.7 -66.6V-30.18Q422.7 -26.37 424.26 -25.1Q425.82 -23.83 429.34 -23.83ZM394.96 -42.38V-44.43H374.36Q365.47 -44.43 360.59 -40.92Q355.7 -37.4 355.7 -30.96Q355.7 -25.59 359.81 -22.41Q363.91 -19.24 370.94 -19.24Q381.97 -19.24 388.37 -25.54Q394.77 -31.84 394.96 -42.38Z"/><path fill-opacity="0.55" d="M437.44 -124.28H441.96V-113.41H445.34V-124.28H449.87V-127.4H437.44ZM451.43 -113.41H454.7V-123.29L458.97 -113.41H461.62L465.99 -123.29V-113.41H469.21V-127.4H464.53L460.42 -117.68L456.16 -127.4H451.43Z"/></g></svg>';
|
|
18303
18343
|
|
|
18304
18344
|
// src/renderers/native/chrome/AttributionMark.ts
|
|
18305
|
-
var ATTRIBUTION_URL = "https://
|
|
18345
|
+
var ATTRIBUTION_URL = "https://velacharts.dev/?utm_source=vela&utm_medium=attribution";
|
|
18306
18346
|
var STYLE_ID20 = "vela-attribution-styles";
|
|
18307
18347
|
var CSS20 = `
|
|
18308
18348
|
.vela-attribution {
|
|
18309
18349
|
text-decoration: none;
|
|
18310
18350
|
display: flex;
|
|
18311
18351
|
align-items: center;
|
|
18312
|
-
/*
|
|
18313
|
-
|
|
18314
|
-
|
|
18315
|
-
reads wrong because the symbol's ink hangs low and the wordmark descends. */
|
|
18316
|
-
gap: 4px;
|
|
18352
|
+
/* No gutter: the V is the wordmark's first letter, and the letters' viewBox starts
|
|
18353
|
+
where the V's ends, so the kit's own letter spacing comes with them. */
|
|
18354
|
+
gap: 0;
|
|
18317
18355
|
}
|
|
18318
18356
|
.vela-attribution .vela-attr-symbol {
|
|
18319
18357
|
flex: none;
|
|
@@ -18321,7 +18359,7 @@ var CSS20 = `
|
|
|
18321
18359
|
line-height: 0;
|
|
18322
18360
|
}
|
|
18323
18361
|
.vela-attribution .vela-attr-symbol svg {
|
|
18324
|
-
height:
|
|
18362
|
+
height: 24px;
|
|
18325
18363
|
width: auto;
|
|
18326
18364
|
display: block;
|
|
18327
18365
|
filter: drop-shadow(0 1px 2px var(--vela-attr-shadow, rgba(0,0,0,0.45)));
|
|
@@ -18332,15 +18370,13 @@ var CSS20 = `
|
|
|
18332
18370
|
opacity: 0;
|
|
18333
18371
|
display: flex;
|
|
18334
18372
|
align-items: center;
|
|
18335
|
-
/*
|
|
18336
|
-
position: relative;
|
|
18337
|
-
top: 3px;
|
|
18373
|
+
/* Same height and baseline as the V (one viewBox height), so no vertical offset. */
|
|
18338
18374
|
transform: translateX(-8px);
|
|
18339
18375
|
transition: max-width 0.3s ease, opacity 0.25s ease, transform 0.3s ease;
|
|
18340
18376
|
flex: none;
|
|
18341
18377
|
}
|
|
18342
18378
|
.vela-attribution .vela-attr-wordmark svg {
|
|
18343
|
-
height:
|
|
18379
|
+
height: 24px;
|
|
18344
18380
|
width: auto;
|
|
18345
18381
|
display: block;
|
|
18346
18382
|
filter: drop-shadow(0 1px 2px var(--vela-attr-shadow, rgba(0,0,0,0.45)));
|
|
@@ -18355,14 +18391,11 @@ var CSS20 = `
|
|
|
18355
18391
|
(data-layout): the workspace's single grid-wide mark lives OUTSIDE any renderer
|
|
18356
18392
|
container, so only the shell attribute reaches it. */
|
|
18357
18393
|
[data-vela-layout='mobile'] .vela-attribution .vela-attr-symbol svg,
|
|
18358
|
-
[data-layout='mobile'] .vela-attribution .vela-attr-symbol svg { height:
|
|
18394
|
+
[data-layout='mobile'] .vela-attribution .vela-attr-symbol svg { height: 20px; }
|
|
18359
18395
|
[data-vela-layout='mobile'] .vela-attribution .vela-attr-wordmark,
|
|
18360
|
-
[data-layout='mobile'] .vela-attribution .vela-attr-wordmark {
|
|
18361
|
-
top: 2px;
|
|
18362
|
-
transform: translateX(-6px);
|
|
18363
|
-
}
|
|
18396
|
+
[data-layout='mobile'] .vela-attribution .vela-attr-wordmark { transform: translateX(-6px); }
|
|
18364
18397
|
[data-vela-layout='mobile'] .vela-attribution .vela-attr-wordmark svg,
|
|
18365
|
-
[data-layout='mobile'] .vela-attribution .vela-attr-wordmark svg { height:
|
|
18398
|
+
[data-layout='mobile'] .vela-attribution .vela-attr-wordmark svg { height: 20px; }
|
|
18366
18399
|
[data-vela-layout='mobile'] .vela-attribution:hover .vela-attr-wordmark,
|
|
18367
18400
|
[data-layout='mobile'] .vela-attribution:hover .vela-attr-wordmark { transform: translateX(0); }
|
|
18368
18401
|
`;
|
|
@@ -18419,10 +18452,10 @@ function createAttributionMark(doc, background) {
|
|
|
18419
18452
|
const symbol = doc.createElement("span");
|
|
18420
18453
|
symbol.className = "vela-attr-symbol";
|
|
18421
18454
|
symbol.setAttribute("aria-hidden", "true");
|
|
18422
|
-
symbol.innerHTML =
|
|
18455
|
+
symbol.innerHTML = VELA_MARK_SVG;
|
|
18423
18456
|
const wordmark = doc.createElement("span");
|
|
18424
18457
|
wordmark.className = "vela-attr-wordmark";
|
|
18425
|
-
wordmark.innerHTML =
|
|
18458
|
+
wordmark.innerHTML = VELA_LETTERS_SVG;
|
|
18426
18459
|
a.append(symbol, wordmark);
|
|
18427
18460
|
return a;
|
|
18428
18461
|
}
|
|
@@ -25880,6 +25913,12 @@ var InputController = class {
|
|
|
25880
25913
|
this.lastTapT = 0;
|
|
25881
25914
|
this.lastTapX = 0;
|
|
25882
25915
|
this.lastTapY = 0;
|
|
25916
|
+
// Whether the last two primary presses were claimed by the drawings layer. A double-click
|
|
25917
|
+
// is the last press plus the one before it; a tool-driven click pair must never fall through
|
|
25918
|
+
// to the pane maximize toggle, even when the tool disarmed itself between the two clicks
|
|
25919
|
+
// (a finished placement leaves plain cursor mode for the second click).
|
|
25920
|
+
this.lastPressDrawing = false;
|
|
25921
|
+
this.prevPressDrawing = false;
|
|
25883
25922
|
this.onTouchContextMenu = (e) => {
|
|
25884
25923
|
if (this.touches.size === 0) return;
|
|
25885
25924
|
if (!(e.target instanceof Node) || !this.el?.contains(e.target)) return;
|
|
@@ -25934,19 +25973,24 @@ var InputController = class {
|
|
|
25934
25973
|
this.moved = false;
|
|
25935
25974
|
this.startX = x;
|
|
25936
25975
|
this.startY = y;
|
|
25976
|
+
this.prevPressDrawing = this.lastPressDrawing;
|
|
25977
|
+
this.lastPressDrawing = false;
|
|
25937
25978
|
if (this.deps.drawingsClaim?.(x, y)) {
|
|
25938
25979
|
this.region = "drawing";
|
|
25980
|
+
this.lastPressDrawing = true;
|
|
25939
25981
|
this.deps.drawingsPointerDown?.(x, y, this.snapMode(e), e.shiftKey, e.ctrlKey || e.metaKey);
|
|
25940
25982
|
this.capture(e.pointerId);
|
|
25941
25983
|
return;
|
|
25942
25984
|
}
|
|
25943
25985
|
if (e.shiftKey && this.regionAt(x, y) === "data" && this.deps.drawingsMeasureStart?.(x, y, this.snapMode(e))) {
|
|
25944
25986
|
this.region = "drawing";
|
|
25987
|
+
this.lastPressDrawing = true;
|
|
25945
25988
|
this.capture(e.pointerId);
|
|
25946
25989
|
return;
|
|
25947
25990
|
}
|
|
25948
25991
|
if ((e.ctrlKey || e.metaKey) && this.regionAt(x, y) === "data" && this.deps.drawingsMarqueeStart?.(x, y)) {
|
|
25949
25992
|
this.region = "drawing";
|
|
25993
|
+
this.lastPressDrawing = true;
|
|
25950
25994
|
this.capture(e.pointerId);
|
|
25951
25995
|
return;
|
|
25952
25996
|
}
|
|
@@ -26268,6 +26312,7 @@ var InputController = class {
|
|
|
26268
26312
|
if (region === "price") this.deps.resetPriceScale(x, y);
|
|
26269
26313
|
else if (region === "separator") this.deps.resetPaneSize(y);
|
|
26270
26314
|
else if (region === "time") this.deps.resetView();
|
|
26315
|
+
else if (this.lastPressDrawing || this.prevPressDrawing) return;
|
|
26271
26316
|
else this.deps.dataDblClick(x, y);
|
|
26272
26317
|
}
|
|
26273
26318
|
};
|
|
@@ -28433,6 +28478,7 @@ function timeTicks(fromMs, toMs, target = 8, offsetMs = 0) {
|
|
|
28433
28478
|
const step = pickStep(span / Math.max(1, target));
|
|
28434
28479
|
const zFrom = fromMs + offsetMs;
|
|
28435
28480
|
const zTo = toMs + offsetMs;
|
|
28481
|
+
if (step >= MONTH) return calendarTicks(zFrom, zTo, step >= YEAR ? 12 : step >= 3 * MONTH ? 3 : 1, offsetMs);
|
|
28436
28482
|
const first = Math.ceil(zFrom / step) * step;
|
|
28437
28483
|
const out = [];
|
|
28438
28484
|
for (let zt = first; zt <= zTo; zt += step) {
|
|
@@ -28463,6 +28509,18 @@ function timeTicks(fromMs, toMs, target = 8, offsetMs = 0) {
|
|
|
28463
28509
|
}
|
|
28464
28510
|
return out;
|
|
28465
28511
|
}
|
|
28512
|
+
function calendarTicks(zFrom, zTo, months, offsetMs) {
|
|
28513
|
+
const d0 = new Date(zFrom);
|
|
28514
|
+
let idx = d0.getUTCFullYear() * 12 + d0.getUTCMonth();
|
|
28515
|
+
if (Date.UTC(Math.floor(idx / 12), idx % 12, 1) < zFrom) idx += 1;
|
|
28516
|
+
idx = Math.ceil(idx / months) * months;
|
|
28517
|
+
const out = [];
|
|
28518
|
+
for (let zt = Date.UTC(Math.floor(idx / 12), idx % 12, 1); zt <= zTo; idx += months, zt = Date.UTC(Math.floor(idx / 12), idx % 12, 1)) {
|
|
28519
|
+
const label = months === 12 ? String(Math.floor(idx / 12)) : MONTHS[idx % 12];
|
|
28520
|
+
out.push({ time: zt - offsetMs, label, major: true });
|
|
28521
|
+
}
|
|
28522
|
+
return out;
|
|
28523
|
+
}
|
|
28466
28524
|
|
|
28467
28525
|
// src/renderers/native/chrome/countdown.ts
|
|
28468
28526
|
function countdownText(barOpen, barMs, now2) {
|
|
@@ -46702,7 +46760,7 @@ var ChartCell = class {
|
|
|
46702
46760
|
* then the manifest in the host's own order. */
|
|
46703
46761
|
libraryRows() {
|
|
46704
46762
|
return [
|
|
46705
|
-
...this.supportedNatives().map((n) => ({ name: n.title, category: "
|
|
46763
|
+
...this.supportedNatives().map((n) => ({ name: n.title, category: "Built-in", native: true, nativeType: n.type, beta: n.beta })),
|
|
46706
46764
|
...this.manifest.map((e) => ({ name: e.name, language: e.language, category: e.category }))
|
|
46707
46765
|
];
|
|
46708
46766
|
}
|
|
@@ -47708,11 +47766,11 @@ function resolveTyping(key, open2) {
|
|
|
47708
47766
|
if (open2.dialogs > 0) {
|
|
47709
47767
|
if (key.length !== 1) return null;
|
|
47710
47768
|
if (open2.symbolSearch) return { target: "symbol", text: key.toUpperCase() };
|
|
47711
|
-
if (open2.timeframeEntry) return { target: "timeframe", text: key };
|
|
47769
|
+
if (open2.timeframeEntry) return { target: "timeframe", text: key.toUpperCase() };
|
|
47712
47770
|
return null;
|
|
47713
47771
|
}
|
|
47714
|
-
if (/^[a-zA-
|
|
47715
|
-
if (/^[
|
|
47772
|
+
if (/^[a-zA-Z0]$/.test(key)) return { target: "symbol", text: key.toUpperCase() };
|
|
47773
|
+
if (/^[1-9]$/.test(key)) return { target: "timeframe", text: key };
|
|
47716
47774
|
return null;
|
|
47717
47775
|
}
|
|
47718
47776
|
var VelaWorkspace = class {
|
|
@@ -49450,7 +49508,7 @@ var VelaWorkspace = class {
|
|
|
49450
49508
|
}
|
|
49451
49509
|
});
|
|
49452
49510
|
}
|
|
49453
|
-
/** Bare-typing router: letters → symbol search (seeded), digits → timeframe entry. */
|
|
49511
|
+
/** Bare-typing router: letters and `0` → symbol search (seeded), digits 1–9 → timeframe entry. */
|
|
49454
49512
|
routeTyping(ev) {
|
|
49455
49513
|
if (this.destroyed) return;
|
|
49456
49514
|
if (ev.ctrlKey || ev.metaKey || ev.altKey) return;
|
package/dist/workspace.d.cts
CHANGED
|
@@ -1166,7 +1166,7 @@ declare class VelaWorkspace {
|
|
|
1166
1166
|
private runOverride;
|
|
1167
1167
|
/** The default shortcut set — every binding acts on the ACTIVE cell. */
|
|
1168
1168
|
private registerDefaultKeys;
|
|
1169
|
-
/** Bare-typing router: letters → symbol search (seeded), digits → timeframe entry. */
|
|
1169
|
+
/** Bare-typing router: letters and `0` → symbol search (seeded), digits 1–9 → timeframe entry. */
|
|
1170
1170
|
private routeTyping;
|
|
1171
1171
|
private trackDialog;
|
|
1172
1172
|
/** Pool a dehydrated slot state (bounded — oldest entries drop past the cap). */
|
package/dist/workspace.d.ts
CHANGED
|
@@ -1166,7 +1166,7 @@ declare class VelaWorkspace {
|
|
|
1166
1166
|
private runOverride;
|
|
1167
1167
|
/** The default shortcut set — every binding acts on the ACTIVE cell. */
|
|
1168
1168
|
private registerDefaultKeys;
|
|
1169
|
-
/** Bare-typing router: letters → symbol search (seeded), digits → timeframe entry. */
|
|
1169
|
+
/** Bare-typing router: letters and `0` → symbol search (seeded), digits 1–9 → timeframe entry. */
|
|
1170
1170
|
private routeTyping;
|
|
1171
1171
|
private trackDialog;
|
|
1172
1172
|
/** Pool a dehydrated slot state (bounded — oldest entries drop past the cap). */
|
package/dist/workspace.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { ChartCell, GRID_PICKER_MAX, VelaWorkspace, WorkspaceReplay, activeAfterLayout, barClose, decodeState, encodeState, ensureLayout, evenTracks, gridStyles, lastOpenClosedBy, 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, WorkspaceReplay, activeAfterLayout, barClose, decodeState, encodeState, ensureLayout, evenTracks, gridStyles, lastOpenClosedBy, layoutDefinition, layoutForGrid, layoutShape, layouts, memoryStorageAdapter, rangesWithin, registerBuiltinLayouts, registerLayout, resizeTracks, sanitizeState, syncTargets, trackOffsets, unregisterLayout } from './chunk-DBDXKZUF.js';
|
|
2
|
+
import './chunk-ATGTCWHJ.js';
|
|
3
3
|
import './chunk-EZ5FWVLA.js';
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
4
|
+
import './chunk-LMBYEGUR.js';
|
|
5
|
+
import './chunk-NELQJCGK.js';
|
|
6
6
|
import './chunk-BZQM2XO7.js';
|
|
7
7
|
import './chunk-W4EJWLEO.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luxalgo/vela",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "Open-source charting library with a native high-performance renderer, drawing tools, pluggable chart types and pluggable scripting engines.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"charting library",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"vela"
|
|
24
24
|
],
|
|
25
25
|
"license": "Apache-2.0",
|
|
26
|
-
"homepage": "https://
|
|
26
|
+
"homepage": "https://velacharts.dev",
|
|
27
27
|
"repository": {
|
|
28
28
|
"type": "git",
|
|
29
29
|
"url": "https://github.com/luxalgo/vela.git"
|