@luxalgo/vela 0.8.5 → 0.9.0
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/{DataProvider-BUdlkx9I.d.ts → DataProvider-BGlB1zSc.d.ts} +1 -1
- package/dist/{DataProvider-DdqMxKdl.d.cts → DataProvider-zJGp58kb.d.cts} +1 -1
- package/dist/{chunk-BN4DNS3O.js → chunk-4WAHYL7Y.js} +1125 -468
- package/dist/chunk-O6L27KRB.js +1331 -0
- package/dist/{chunk-WY5H4S4I.js → chunk-PZN4RS4T.js} +91 -36
- package/dist/{chunk-AUOB7A5Y.js → chunk-WHPQQYH7.js} +29 -13
- package/dist/{chunk-QYIO37K7.js → chunk-XIRSR3D6.js} +2374 -1529
- package/dist/{chunk-ALTGHKIM.js → chunk-YRCL3WMD.js} +510 -406
- package/dist/{contributions-D8xuYc9U.d.cts → contributions-BjefWpxQ.d.ts} +71 -22
- package/dist/{contributions-P9fBBuY1.d.ts → contributions-CpCJisTC.d.cts} +71 -22
- package/dist/index.cjs +4022 -2088
- package/dist/index.d.cts +51 -25
- package/dist/index.d.ts +51 -25
- package/dist/index.js +5 -5
- package/dist/{keymap-CGOz5F5f.d.ts → keymap-B9_FLhfJ.d.cts} +9 -6
- package/dist/{keymap-CGOz5F5f.d.cts → keymap-UolhuXH1.d.ts} +9 -6
- package/dist/locales/ar.cjs +2260 -0
- package/dist/locales/ar.d.cts +5 -0
- package/dist/locales/ar.d.ts +5 -0
- package/dist/locales/ar.js +2258 -0
- package/dist/locales/de.cjs +2260 -0
- package/dist/locales/de.d.cts +5 -0
- package/dist/locales/de.d.ts +5 -0
- package/dist/locales/de.js +2258 -0
- package/dist/locales/en.cjs +2260 -0
- package/dist/locales/en.d.cts +5 -0
- package/dist/locales/en.d.ts +5 -0
- package/dist/locales/en.js +2258 -0
- package/dist/locales/es.cjs +2260 -0
- package/dist/locales/es.d.cts +5 -0
- package/dist/locales/es.d.ts +5 -0
- package/dist/locales/es.js +2258 -0
- package/dist/locales/fr.cjs +2260 -0
- package/dist/locales/fr.d.cts +5 -0
- package/dist/locales/fr.d.ts +5 -0
- package/dist/locales/fr.js +2258 -0
- package/dist/locales/he.cjs +2260 -0
- package/dist/locales/he.d.cts +5 -0
- package/dist/locales/he.d.ts +5 -0
- package/dist/locales/he.js +2258 -0
- package/dist/locales/hi.cjs +2260 -0
- package/dist/locales/hi.d.cts +5 -0
- package/dist/locales/hi.d.ts +5 -0
- package/dist/locales/hi.js +2258 -0
- package/dist/locales/id.cjs +2260 -0
- package/dist/locales/id.d.cts +5 -0
- package/dist/locales/id.d.ts +5 -0
- package/dist/locales/id.js +2258 -0
- package/dist/locales/it.cjs +2260 -0
- package/dist/locales/it.d.cts +5 -0
- package/dist/locales/it.d.ts +5 -0
- package/dist/locales/it.js +2258 -0
- package/dist/locales/ja.cjs +2260 -0
- package/dist/locales/ja.d.cts +5 -0
- package/dist/locales/ja.d.ts +5 -0
- package/dist/locales/ja.js +2258 -0
- package/dist/locales/ko.cjs +2260 -0
- package/dist/locales/ko.d.cts +5 -0
- package/dist/locales/ko.d.ts +5 -0
- package/dist/locales/ko.js +2258 -0
- package/dist/locales/ms.cjs +2260 -0
- package/dist/locales/ms.d.cts +5 -0
- package/dist/locales/ms.d.ts +5 -0
- package/dist/locales/ms.js +2258 -0
- package/dist/locales/pl.cjs +2260 -0
- package/dist/locales/pl.d.cts +5 -0
- package/dist/locales/pl.d.ts +5 -0
- package/dist/locales/pl.js +2258 -0
- package/dist/locales/pt-BR.cjs +2260 -0
- package/dist/locales/pt-BR.d.cts +5 -0
- package/dist/locales/pt-BR.d.ts +5 -0
- package/dist/locales/pt-BR.js +2258 -0
- package/dist/locales/ru.cjs +2260 -0
- package/dist/locales/ru.d.cts +5 -0
- package/dist/locales/ru.d.ts +5 -0
- package/dist/locales/ru.js +2258 -0
- package/dist/locales/th.cjs +2260 -0
- package/dist/locales/th.d.cts +5 -0
- package/dist/locales/th.d.ts +5 -0
- package/dist/locales/th.js +2258 -0
- package/dist/locales/tr.cjs +2260 -0
- package/dist/locales/tr.d.cts +5 -0
- package/dist/locales/tr.d.ts +5 -0
- package/dist/locales/tr.js +2258 -0
- package/dist/locales/vi.cjs +2260 -0
- package/dist/locales/vi.d.cts +5 -0
- package/dist/locales/vi.d.ts +5 -0
- package/dist/locales/vi.js +2258 -0
- package/dist/locales/zh-Hans.cjs +2260 -0
- package/dist/locales/zh-Hans.d.cts +5 -0
- package/dist/locales/zh-Hans.d.ts +5 -0
- package/dist/locales/zh-Hans.js +2258 -0
- package/dist/locales/zh-Hant.cjs +2260 -0
- package/dist/locales/zh-Hant.d.cts +5 -0
- package/dist/locales/zh-Hant.d.ts +5 -0
- package/dist/locales/zh-Hant.js +2258 -0
- package/dist/{options-BI5Tp32b.d.cts → options-CpegHml_.d.cts} +74 -9
- package/dist/{options-BI5Tp32b.d.ts → options-D4L3_hv_.d.ts} +74 -9
- package/dist/{plugin-D5Z-Q6TX.d.ts → plugin-DTmulpKM.d.ts} +81 -35
- package/dist/{plugin-B8F1nor8.d.cts → plugin-DpNp4aBi.d.cts} +81 -35
- package/dist/plugin.cjs +1267 -319
- package/dist/plugin.d.cts +7 -6
- package/dist/plugin.d.ts +7 -6
- package/dist/plugin.js +3 -3
- package/dist/providers/binance.cjs +1 -1
- package/dist/providers/binance.d.cts +3 -2
- package/dist/providers/binance.d.ts +3 -2
- package/dist/providers/binance.js +1 -1
- package/dist/providers/coinbase.cjs +1 -1
- package/dist/providers/coinbase.d.cts +3 -2
- package/dist/providers/coinbase.d.ts +3 -2
- package/dist/providers/coinbase.js +1 -1
- package/dist/providers/hyperliquid.cjs +1 -1
- package/dist/providers/hyperliquid.d.cts +3 -2
- package/dist/providers/hyperliquid.d.ts +3 -2
- package/dist/providers/hyperliquid.js +1 -1
- package/dist/{side-panel-_2UK1gSm.d.ts → side-panel-BqUnpfev.d.cts} +13 -2
- package/dist/{side-panel-_2UK1gSm.d.cts → side-panel-CYmH1Opm.d.ts} +13 -2
- package/dist/{statusline-model-CTwtDIca.d.cts → statusline-model-C3yIY9WE.d.ts} +11 -3
- package/dist/{statusline-model-D9kWC9X5.d.ts → statusline-model-pGs3Xvp-.d.cts} +11 -3
- package/dist/types-BlrXRLIR.d.cts +2515 -0
- package/dist/types-BlrXRLIR.d.ts +2515 -0
- package/dist/ui.cjs +1008 -56
- package/dist/ui.d.cts +21 -2
- package/dist/ui.d.ts +21 -2
- package/dist/ui.js +3 -3
- package/dist/vela.global.js +3987 -2055
- package/dist/vela.global.min.js +57 -57
- package/dist/widget.cjs +5330 -2699
- package/dist/widget.d.cts +100 -26
- package/dist/widget.d.ts +100 -26
- package/dist/widget.js +19 -11
- package/dist/workspace.cjs +5319 -2706
- package/dist/workspace.d.cts +63 -15
- package/dist/workspace.d.ts +63 -15
- package/dist/workspace.js +6 -6
- package/package.json +9 -2
- package/dist/chunk-I2U4NZD2.js +0 -340
- /package/dist/{chunk-W5YPYZ2P.js → chunk-3EYCX2L4.js} +0 -0
package/dist/chunk-I2U4NZD2.js
DELETED
|
@@ -1,340 +0,0 @@
|
|
|
1
|
-
// src/core/palette.ts
|
|
2
|
-
var ACCENT = "#2962ff";
|
|
3
|
-
var ACCENT_BRIGHT = "#38c0fd";
|
|
4
|
-
var BULLISH = "#089981";
|
|
5
|
-
var BEARISH = "#f23645";
|
|
6
|
-
var NEUTRAL = "#787b86";
|
|
7
|
-
var HIGHLIGHT = "#e0b400";
|
|
8
|
-
var WARNING = "#ff9800";
|
|
9
|
-
var INFO = "#5b9cf6";
|
|
10
|
-
var MARKER = "#ff5d00";
|
|
11
|
-
var VALID = "#0ecb81";
|
|
12
|
-
var INVALID = "#f6465d";
|
|
13
|
-
var SESSION_PRE = "#f97316";
|
|
14
|
-
var SESSION_POST = "#0ea5e9";
|
|
15
|
-
var SESSION_OFF = "#9ca3af";
|
|
16
|
-
var SERIES_LINE = "#3b82f6";
|
|
17
|
-
var CROSSHAIR = "#9aa0ad";
|
|
18
|
-
var SLATE_DEEP = "#1e293b";
|
|
19
|
-
var SLATE = "#475569";
|
|
20
|
-
var CHIP_PLATE = "#595959";
|
|
21
|
-
var TRADE_LONG = ACCENT;
|
|
22
|
-
var TRADE_SHORT = BEARISH;
|
|
23
|
-
var TRADE_EXIT = "#d500f9";
|
|
24
|
-
var CATEGORICAL = [ACCENT, BULLISH, BEARISH, WARNING, "#7e57c2", "#26a69a", INFO, "#e573b5"];
|
|
25
|
-
function categoricalColor(key) {
|
|
26
|
-
let h = 0;
|
|
27
|
-
for (let i = 0; i < key.length; i++) h = h * 31 + key.charCodeAt(i) >>> 0;
|
|
28
|
-
return CATEGORICAL[h % CATEGORICAL.length];
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// src/core/icons.ts
|
|
32
|
-
var registry = /* @__PURE__ */ new Map();
|
|
33
|
-
function registerIcon(id, svg) {
|
|
34
|
-
registry.set(id, svg);
|
|
35
|
-
}
|
|
36
|
-
function iconMarkup(id) {
|
|
37
|
-
return registry.get(id) ?? null;
|
|
38
|
-
}
|
|
39
|
-
function icon(id) {
|
|
40
|
-
return registry.get(id) ?? "";
|
|
41
|
-
}
|
|
42
|
-
function iconAt(id, px) {
|
|
43
|
-
return icon(id).replace("<svg ", `<svg width="${px}" height="${px}" `);
|
|
44
|
-
}
|
|
45
|
-
function svg16(body, extra = "") {
|
|
46
|
-
return `<svg viewBox="0 0 16 16" width="1em" height="1em" ${extra ? extra + " " : ""}fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round">${body}</svg>`;
|
|
47
|
-
}
|
|
48
|
-
function svg24(body, extra = "") {
|
|
49
|
-
return `<svg viewBox="0 0 24 24" width="1em" height="1em" ${extra ? extra + " " : ""}fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">${body}</svg>`;
|
|
50
|
-
}
|
|
51
|
-
function svg24Solid(body) {
|
|
52
|
-
return `<svg viewBox="0 0 24 24" width="1em" height="1em" fill="currentColor" stroke="none">${body}</svg>`;
|
|
53
|
-
}
|
|
54
|
-
var S = svg16;
|
|
55
|
-
registerIcon(
|
|
56
|
-
"style-candles",
|
|
57
|
-
S('<path d="M4.5 2v2M4.5 12v2M11.5 2v1.5M11.5 11v3"/><rect x="2.8" y="4" width="3.4" height="8" rx="0.6" fill="currentColor" fill-opacity="0.25"/><rect x="9.8" y="3.5" width="3.4" height="7.5" rx="0.6" fill="currentColor"/>')
|
|
58
|
-
);
|
|
59
|
-
registerIcon(
|
|
60
|
-
"style-bars",
|
|
61
|
-
S('<path d="M4.5 2.5v11M2.5 5h2M4.5 11h2"/><path d="M11.5 2.5v11M9.5 4.5h2M11.5 10.5h2"/>')
|
|
62
|
-
);
|
|
63
|
-
registerIcon("style-line", S('<path d="M1.5 11.5 5.5 7l3 2.5 5-6"/>'));
|
|
64
|
-
registerIcon(
|
|
65
|
-
"style-area",
|
|
66
|
-
S('<path d="M1.5 11.5 5.5 7l3 2.5 5-6"/><path d="M1.5 11.5 5.5 7l3 2.5 5-6V13.5h-12z" fill="currentColor" fill-opacity="0.25" stroke="none"/>')
|
|
67
|
-
);
|
|
68
|
-
registerIcon(
|
|
69
|
-
"style-baseline",
|
|
70
|
-
S('<path d="M1.5 8h13" stroke-dasharray="2 2"/><path d="M2.5 8 5.25 4.5 8 8h-5.5z" fill="currentColor" fill-opacity="0.25" stroke="none"/><path d="M2.5 8 5.25 4.5 8 8"/><path d="M8 8l2.75 3.5L13.5 8h-5.5z" fill="currentColor" fill-opacity="0.25" stroke="none"/><path d="M8 8l2.75 3.5L13.5 8"/>')
|
|
71
|
-
);
|
|
72
|
-
registerIcon(
|
|
73
|
-
"style-heikinashi",
|
|
74
|
-
S('<path d="M4.5 12v2M11.5 2v2"/><rect x="2.8" y="5" width="3.4" height="7" rx="0.6" fill="currentColor" fill-opacity="0.25"/><rect x="9.8" y="4" width="3.4" height="7" rx="0.6" fill="currentColor"/>')
|
|
75
|
-
);
|
|
76
|
-
registerIcon("indicators", S('<path d="M1.5 12.5 5 7l2.5 3.5L11 4l3.5 5"/><circle cx="11" cy="4" r="1.4" fill="currentColor" stroke="none"/>'));
|
|
77
|
-
registerIcon("undo", S('<path d="M6.2 9.5 2.7 6l3.5-3.5"/><path d="M2.7 6h6.8a3.65 3.65 0 0 1 0 7.3H7.5"/>'));
|
|
78
|
-
registerIcon("redo", S('<path d="M9.8 9.5 13.3 6 9.8 2.5"/><path d="M13.3 6H6.5a3.65 3.65 0 0 0 0 7.3h2"/>'));
|
|
79
|
-
registerIcon(
|
|
80
|
-
"objects",
|
|
81
|
-
S('<path d="M8 1.8 14 5 8 8.2 2 5z"/><path d="M2 8l6 3.2L14 8" opacity="0.7"/><path d="M2 11l6 3.2 6-3.2" opacity="0.4"/>')
|
|
82
|
-
);
|
|
83
|
-
registerIcon("clock", S('<circle cx="8" cy="8" r="6.2"/><path d="M8 4.8V8l2.4 1.6"/>'));
|
|
84
|
-
registerIcon(
|
|
85
|
-
"calendar",
|
|
86
|
-
S('<rect x="2.2" y="3.2" width="11.6" height="10.6" rx="1.4"/><path d="M5.2 1.8v2.8M10.8 1.8v2.8M2.2 6.8h11.6"/>')
|
|
87
|
-
);
|
|
88
|
-
registerIcon("datawindow", S('<rect x="1.8" y="2.5" width="12.4" height="11" rx="1.5"/><path d="M4.5 5.5h4M4.5 8h7M4.5 10.5h5.5"/>'));
|
|
89
|
-
registerIcon("camera", S('<path d="M5.5 4 6.5 2.5h3L10.5 4h3A1 1 0 0 1 14.5 5v7.5a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1z"/><circle cx="8" cy="8.5" r="2.6"/>'));
|
|
90
|
-
registerIcon(
|
|
91
|
-
"gear",
|
|
92
|
-
S('<path d="M6.55 1.4h2.9l.32 1.72c.48.14.92.38 1.3.7l1.66-.55 1.45 2.5-1.35 1.1c.08.34.12.7.12 1.07s-.04.73-.12 1.07l1.35 1.1-1.45 2.5-1.66-.55a4.3 4.3 0 0 1-1.3.7L9.45 14.6h-2.9l-.32-1.72a4.3 4.3 0 0 1-1.3-.7l-1.66.55-1.45-2.5 1.35-1.1A4.4 4.4 0 0 1 3.05 7.94c0-.37.04-.73.12-1.07l-1.35-1.1 1.45-2.5 1.66.55c.38-.32.82-.56 1.3-.7L6.55 1.4z"/><circle cx="8" cy="8" r="2.2"/>')
|
|
93
|
-
);
|
|
94
|
-
registerIcon("search", S('<circle cx="7" cy="7" r="4.5"/><path d="m10.5 10.5 3.5 3.5"/>'));
|
|
95
|
-
registerIcon("bell", S('<path d="M8 2a4 4 0 0 0-4 4v2.5L2.5 11v1h11v-1L12 8.5V6a4 4 0 0 0-4-4z"/><path d="M6.5 13.5a1.5 1.5 0 0 0 3 0"/>'));
|
|
96
|
-
registerIcon(
|
|
97
|
-
"market-open",
|
|
98
|
-
svg24('<circle cx="12" cy="12" r="4"/><path d="M12 2v2"/><path d="M12 20v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="m17.66 17.66 1.41 1.41"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="m6.34 17.66-1.41 1.41"/><path d="m19.07 4.93-1.41 1.41"/>')
|
|
99
|
-
);
|
|
100
|
-
registerIcon(
|
|
101
|
-
"market-pre",
|
|
102
|
-
svg24('<path d="M12 2v8"/><path d="m4.93 10.93 1.41 1.41"/><path d="M2 18h2"/><path d="M20 18h2"/><path d="m19.07 10.93-1.41 1.41"/><path d="M22 22H2"/><path d="m8 6 4-4 4 4"/><path d="M16 18a4 4 0 0 0-8 0"/>')
|
|
103
|
-
);
|
|
104
|
-
registerIcon(
|
|
105
|
-
"market-post",
|
|
106
|
-
svg24('<path d="M12 10V2"/><path d="m4.93 10.93 1.41 1.41"/><path d="M2 18h2"/><path d="M20 18h2"/><path d="m19.07 10.93-1.41 1.41"/><path d="M22 22H2"/><path d="m16 14-4 4-4-4"/><path d="M16 6a4 4 0 0 0-8 0"/>')
|
|
107
|
-
);
|
|
108
|
-
registerIcon(
|
|
109
|
-
"market-extended",
|
|
110
|
-
svg24('<path d="M22 22H2"/><path d="M12 3a5 5 0 0 0 7.5 7.5A7.5 7.5 0 1 1 12 3Z"/>')
|
|
111
|
-
);
|
|
112
|
-
registerIcon("market-closed", svg24('<path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"/>'));
|
|
113
|
-
registerIcon(
|
|
114
|
-
"market-holiday",
|
|
115
|
-
svg24('<path d="m10 20-1.25-2.5L6 16"/><path d="M10 4 8.75 6.5 6 8"/><path d="m14 20 1.25-2.5L18 16"/><path d="m14 4 1.25 2.5L18 8"/><path d="m17 10-5 5-5-5"/><path d="M4 12h16"/>')
|
|
116
|
-
);
|
|
117
|
-
registerIcon("chevron-right", S('<path d="m6 3.5 4.5 4.5L6 12.5"/>'));
|
|
118
|
-
registerIcon("chevron-left", S('<path d="M10 3.5 5.5 8l4.5 4.5"/>'));
|
|
119
|
-
registerIcon("chevron-down", S('<path d="M3.5 6 8 10.5 12.5 6"/>'));
|
|
120
|
-
registerIcon("chevron-up", S('<path d="M3.5 10 8 5.5 12.5 10"/>'));
|
|
121
|
-
registerIcon("chevrons-right", S('<path d="m4 3.5 4.5 4.5L4 12.5"/><path d="m8.5 3.5 4.5 4.5-4.5 4.5"/>'));
|
|
122
|
-
registerIcon("chevrons-left", S('<path d="M12 3.5 7.5 8l4.5 4.5"/><path d="M7.5 3.5 3 8l4.5 4.5"/>'));
|
|
123
|
-
registerIcon("replay", S('<path d="M14 4.2v7.6L8.6 8z"/><path d="M7.4 4.2v7.6L2 8z"/>'));
|
|
124
|
-
registerIcon("check", S('<path d="m2.8 8.4 3.4 3.4 7-7.6"/>'));
|
|
125
|
-
registerIcon("close", S('<path d="m3.8 3.8 8.4 8.4M12.2 3.8l-8.4 8.4"/>'));
|
|
126
|
-
registerIcon("pin", S('<path d="M5.6 2.5h4.8M6.4 2.5v3.6L4.4 8.4v.9h7.2v-.9L9.6 6.1V2.5M8 9.3v4.2"/>'));
|
|
127
|
-
registerIcon("pin-filled", S('<path d="M5.6 2.5h4.8M6.4 2.5v3.6L4.4 8.4v.9h7.2v-.9L9.6 6.1V2.5M8 9.3v4.2"/><path d="M6.4 2.5h3.2v3.6l2 2.3v.9H4.4v-.9l2-2.3z" fill="currentColor" stroke="none"/>'));
|
|
128
|
-
registerIcon("eye", S('<path d="M1.5 8s2.5-5.4 6.5-5.4S14.5 8 14.5 8 12 13.4 8 13.4 1.5 8 1.5 8z"/><circle cx="8" cy="8" r="1.8"/>'));
|
|
129
|
-
registerIcon("eye-off", S('<path d="M1.5 8s2.5-5.4 6.5-5.4S14.5 8 14.5 8 12 13.4 8 13.4 1.5 8 1.5 8z" opacity="0.45"/><path d="m3 13 10-10"/>'));
|
|
130
|
-
registerIcon("lock", S('<rect x="3.2" y="7" width="9.6" height="6.6" rx="1.2"/><path d="M5.6 7V5.2a2.4 2.4 0 0 1 4.8 0V7"/>'));
|
|
131
|
-
registerIcon("unlock", S('<rect x="3.2" y="7" width="9.6" height="6.6" rx="1.2"/><path d="M5.6 7V5.2a2.4 2.4 0 0 1 4.7-.7"/>'));
|
|
132
|
-
registerIcon("trash", S('<path d="M2.5 4.3h11M6.2 4.3V3.1a1 1 0 0 1 1-1h1.6a1 1 0 0 1 1 1v1.2M4.2 4.3l.5 9.1a1.15 1.15 0 0 0 1.15 1.1h4.3a1.15 1.15 0 0 0 1.15-1.1l.5-9.1M6.5 7v4.5M9.5 7v4.5"/>'));
|
|
133
|
-
registerIcon("group", S('<path d="M1.8 4.5V2.4a.6.6 0 0 1 .6-.6h2.1M11.5 1.8h2.1a.6.6 0 0 1 .6.6v2.1M14.2 11.5v2.1a.6.6 0 0 1-.6.6h-2.1M4.5 14.2H2.4a.6.6 0 0 1-.6-.6v-2.1"/><rect x="4" y="4" width="4.2" height="4.2" rx="0.7"/><rect x="7.8" y="7.8" width="4.2" height="4.2" rx="0.7"/>'));
|
|
134
|
-
registerIcon("ungroup", S('<rect x="1.6" y="1.6" width="6.2" height="6.2" rx="0.9"/><rect x="8.2" y="8.2" width="6.2" height="6.2" rx="0.9" stroke-dasharray="2 1.5"/>'));
|
|
135
|
-
registerIcon("clone", S('<rect x="5.5" y="5.5" width="9" height="9" rx="1.2"/><path d="M11 5.5v-3a1 1 0 0 0-1-1H2.5a1 1 0 0 0-1 1V10a1 1 0 0 0 1 1h3"/>'));
|
|
136
|
-
registerIcon("arrow-up", S('<path d="M8 13.2V3M4.2 6.8 8 3l3.8 3.8"/>'));
|
|
137
|
-
registerIcon("arrow-down", S('<path d="M8 2.8V13M4.2 9.2 8 13l3.8-3.8"/>'));
|
|
138
|
-
registerIcon("move-vertical", S('<path d="M8 2.5v11M5 5.5 8 2.5l3 3M5 10.5l3 3 3-3"/>'));
|
|
139
|
-
registerIcon("move", S('<path d="M8 1.8v12.4M1.8 8h12.4M5.6 4.2 8 1.8l2.4 2.4M5.6 11.8 8 14.2l2.4-2.4M4.2 5.6 1.8 8l2.4 2.4M11.8 5.6 14.2 8l-2.4 2.4"/>'));
|
|
140
|
-
registerIcon("pen", S('<path d="m10.8 2.2 3 3-8 8-3.6.6.6-3.6z"/><path d="m9.2 3.8 3 3"/>'));
|
|
141
|
-
registerIcon("wave", S('<path d="M1.5 10.4c1.6 0 1.9-4.8 3.4-4.8s1.8 4.8 3.4 4.8 1.8-4.8 3.4-4.8 1.6 4.8 2.8 4.8"/>'));
|
|
142
|
-
registerIcon("folder-plus", S('<path d="M1.6 4.4a1 1 0 0 1 1-1h2.7l1.3 1.7h6.8a1 1 0 0 1 1 1v6.5a1 1 0 0 1-1 1h-10.8a1 1 0 0 1-1-1z"/><path d="M8 7.6v3.6M6.2 9.4h3.6"/>'));
|
|
143
|
-
registerIcon("folder-minus", S('<path d="M1.6 4.4a1 1 0 0 1 1-1h2.7l1.3 1.7h6.8a1 1 0 0 1 1 1v6.5a1 1 0 0 1-1 1h-10.8a1 1 0 0 1-1-1z"/><path d="M6.2 9.4h3.6"/>'));
|
|
144
|
-
registerIcon("collapse", S('<path d="M3 8h10"/>'));
|
|
145
|
-
registerIcon("expand", S('<rect x="2.2" y="2.2" width="11.6" height="11.6" rx="1.4"/><path d="M8 5.4v5.2M5.4 8h5.2"/>'));
|
|
146
|
-
registerIcon("plus", S('<path d="M8 2.8v10.4M2.8 8h10.4"/>'));
|
|
147
|
-
registerIcon("minus", S('<path d="M2.8 8h10.4"/>'));
|
|
148
|
-
registerIcon("maximize", S('<path d="M2.5 6V3a.5.5 0 0 1 .5-.5h3M10 2.5h3a.5.5 0 0 1 .5.5v3M13.5 10v3a.5.5 0 0 1-.5.5h-3M6 13.5H3a.5.5 0 0 1-.5-.5v-3"/>'));
|
|
149
|
-
registerIcon("restore", S('<path d="M6 2.5v3a.5.5 0 0 1-.5.5h-3M13.5 6h-3a.5.5 0 0 1-.5-.5v-3M10 13.5v-3a.5.5 0 0 1 .5-.5h3M2.5 10h3a.5.5 0 0 1 .5.5v3"/>'));
|
|
150
|
-
registerIcon("restore", S('<path d="M6.2 2.5v3.7H2.5M9.8 13.5V9.8h3.7M13.5 6.2H9.8V2.5M2.5 9.8h3.7v3.7"/>'));
|
|
151
|
-
registerIcon("star", S('<path d="M8 2.2l1.75 3.55 3.9.55-2.8 2.75.65 3.9L8 11.1l-3.5 1.85.65-3.9-2.8-2.75 3.9-.55z"/>'));
|
|
152
|
-
registerIcon("star-filled", S('<path d="M8 2.2l1.75 3.55 3.9.55-2.8 2.75.65 3.9L8 11.1l-3.5 1.85.65-3.9-2.8-2.75 3.9-.55z"/>', 'fill="currentColor"'));
|
|
153
|
-
registerIcon("grip", S('<circle cx="6" cy="3.5" r="1"/><circle cx="10" cy="3.5" r="1"/><circle cx="6" cy="8" r="1"/><circle cx="10" cy="8" r="1"/><circle cx="6" cy="12.5" r="1"/><circle cx="10" cy="12.5" r="1"/>', 'fill="currentColor" stroke="none"'));
|
|
154
|
-
registerIcon("kebab", S('<circle cx="8" cy="3.2" r="1.2"/><circle cx="8" cy="8" r="1.2"/><circle cx="8" cy="12.8" r="1.2"/>', 'fill="currentColor" stroke="none"'));
|
|
155
|
-
registerIcon("burger", S('<path d="M2.5 4.5h11M2.5 8h11M2.5 11.5h11"/>'));
|
|
156
|
-
registerIcon("info", S('<path d="M8 7.4v4.4"/><circle cx="8" cy="4.6" r="0.9" fill="currentColor" stroke="none"/>'));
|
|
157
|
-
registerIcon("reset", S('<path d="M2 8a6 6 0 1 0 6-6 6.5 6.5 0 0 0-4.5 1.83L2 5.33"/><path d="M2 2v3.33h3.33"/>'));
|
|
158
|
-
registerIcon("pane-collapse", S('<path d="M2.6 9.4h4v4M13.4 6.6h-4v-4"/><path d="m9.4 6.6 4.2-4.2M2.4 13.6l4.2-4.2"/>'));
|
|
159
|
-
registerIcon("pane-expand", S('<path d="M9.8 2.4h3.8v3.8M6.2 13.6H2.4V9.8"/><path d="m13.6 2.4-4.4 4.4M2.4 13.6l4.4-4.4"/>'));
|
|
160
|
-
registerIcon("cursor", svg24('<path d="M5 3l6 16 2-6 6-2z"/>', 'fill="currentColor" stroke="none"'));
|
|
161
|
-
registerIcon(
|
|
162
|
-
"ruler",
|
|
163
|
-
svg24('<path d="M21.3 15.3 8.7 2.7a1 1 0 0 0-1.4 0L2.7 7.3a1 1 0 0 0 0 1.4l12.6 12.6a1 1 0 0 0 1.4 0l4.6-4.6a1 1 0 0 0 0-1.4Z"/><path d="m7.5 10.5 2 2"/><path d="m10.5 7.5 2 2"/><path d="m13.5 4.5 2 2"/><path d="m4.5 13.5 2 2"/>')
|
|
164
|
-
);
|
|
165
|
-
registerIcon(
|
|
166
|
-
"magnet",
|
|
167
|
-
svg24('<path d="m6 15-4-4 6.75-6.77a7.79 7.79 0 0 1 11 11L13 22l-4-4 6.39-6.36a2.14 2.14 0 0 0-3-3L6 15"/><path d="m5 8 4 4"/><path d="m12 15 4 4"/>')
|
|
168
|
-
);
|
|
169
|
-
registerIcon(
|
|
170
|
-
"eraser",
|
|
171
|
-
svg24('<path d="m7 21-4.3-4.3a1 1 0 0 1 0-1.4L13 5a2 2 0 0 1 2.8 0l4.2 4.2a2 2 0 0 1 0 2.8L12 20"/><path d="M22 21H7"/><path d="m5 11 9 9"/>')
|
|
172
|
-
);
|
|
173
|
-
registerIcon(
|
|
174
|
-
"pen-lock",
|
|
175
|
-
svg24('<path d="M13.8 4.2a2.1 2.1 0 0 1 3 3L8.5 15.5l-3.5 1 1-3.5Z"/><rect x="13" y="14.5" width="8" height="6" rx="1.2"/><path d="M15 14.5v-1.6a2 2 0 0 1 4 0v1.6"/>')
|
|
176
|
-
);
|
|
177
|
-
registerIcon(
|
|
178
|
-
"pen-sync",
|
|
179
|
-
// Pen + two stacked panes — drawing onto every linked chart at once.
|
|
180
|
-
svg24('<path d="M13.8 4.2a2.1 2.1 0 0 1 3 3L8.5 15.5l-3.5 1 1-3.5Z"/><rect x="12.5" y="13.5" width="6" height="4.8" rx="1"/><path d="M15.5 18.3v1a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-2.8a1 1 0 0 0-1-1h-1"/>')
|
|
181
|
-
);
|
|
182
|
-
registerIcon("brush", svg24('<path d="M9.5 12 17 4.5a2.12 2.12 0 0 1 3 3L12.5 15"/><path d="M7 14a3 3 0 0 0-3 3c0 1.3-1.2 1.5-1.5 2 .8.9 2 1.5 3.5 1.5a3.5 3.5 0 0 0 3.5-3.5 3 3 0 0 0-2.5-3Z"/>'));
|
|
183
|
-
registerIcon(
|
|
184
|
-
"bucket",
|
|
185
|
-
svg24('<path d="m18.5 11.5-7-7L4 12a1.8 1.8 0 0 0 0 2.5l5 5a1.8 1.8 0 0 0 2.5 0Z"/><path d="m5 5 4 4"/><path d="M3.5 13.5h13"/><path d="M21 17.5c0 1.1-.9 2-2 2s-2-.9-2-2c0-1 1.2-1.7 2-3 .8 1.3 2 2 2 3Z"/>')
|
|
186
|
-
);
|
|
187
|
-
registerIcon("type", svg24('<path d="M5 6V4.5h14V6"/><path d="M12 4.5v15"/><path d="M9.5 19.5h5"/>'));
|
|
188
|
-
registerIcon("bold", svg24('<path d="M7 5h6a3.5 3.5 0 0 1 0 7H7Z"/><path d="M7 12h7a3.5 3.5 0 0 1 0 7H7Z"/>', 'stroke-width="2.4"'));
|
|
189
|
-
registerIcon("italic", svg24('<path d="M15 5h-5M14 19H9M14.5 5 10 19"/>', 'stroke-width="2.2"'));
|
|
190
|
-
registerIcon("price-delta", svg24('<path d="M12 4v16"/><path d="M8 8l4-4 4 4"/><path d="M8 16l4 4 4-4"/>'));
|
|
191
|
-
registerIcon("date-delta", svg24('<path d="M4 12h16"/><path d="M8 8l-4 4 4 4"/><path d="M16 8l4 4-4 4"/>'));
|
|
192
|
-
registerIcon("bring-front", svg24('<rect x="8.5" y="8.5" width="7" height="7" rx="1.5"/><path d="M4.5 10.5V6a1.5 1.5 0 0 1 1.5-1.5h4.5"/><path d="M19.5 13.5V18a1.5 1.5 0 0 1-1.5 1.5h-4.5"/>'));
|
|
193
|
-
registerIcon(
|
|
194
|
-
"send-back",
|
|
195
|
-
svg24('<rect x="8.5" y="8.5" width="7" height="7" rx="1.5" fill="currentColor" stroke="none" opacity="0.35"/><path d="M4.5 10.5V6a1.5 1.5 0 0 1 1.5-1.5h4.5"/><path d="M19.5 13.5V18a1.5 1.5 0 0 1-1.5 1.5h-4.5"/><rect x="8.5" y="8.5" width="7" height="7" rx="1.5"/>')
|
|
196
|
-
);
|
|
197
|
-
registerIcon("r-squared", '<svg viewBox="0 0 24 24" width="1em" height="1em" fill="currentColor" stroke="none"><text x="2.5" y="17.5" font-size="14" font-family="serif">R\xB2</text></svg>');
|
|
198
|
-
registerIcon("bands", svg24('<path d="M3 6h18"/><path d="M3 18h18"/><path d="M3 12h18" stroke-dasharray="3 3"/>'));
|
|
199
|
-
registerIcon("dedekind", svg24('<path d="M2 20h20"/><path d="M4 20a8 8 0 0 1 16 0"/><path d="M8 20a4 4 0 0 1 8 0"/><path d="M12 4v16"/>'));
|
|
200
|
-
registerIcon("sonic", svg24('<circle cx="15" cy="12" r="4"/><circle cx="12" cy="12" r="2.5"/><path d="M8 5v14"/>'));
|
|
201
|
-
registerIcon("supersonic", svg24('<circle cx="16" cy="12" r="3.5"/><path d="M6 12 15 6M6 12 15 18"/>'));
|
|
202
|
-
|
|
203
|
-
// src/core/color.ts
|
|
204
|
-
function parseRgb(color) {
|
|
205
|
-
const s = color.trim();
|
|
206
|
-
let m = /^#([0-9a-f]{3})$/i.exec(s);
|
|
207
|
-
if (m) {
|
|
208
|
-
const h = m[1];
|
|
209
|
-
return {
|
|
210
|
-
r: parseInt(h[0] + h[0], 16),
|
|
211
|
-
g: parseInt(h[1] + h[1], 16),
|
|
212
|
-
b: parseInt(h[2] + h[2], 16)
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
m = /^#([0-9a-f]{6})[0-9a-f]{0,2}$/i.exec(s);
|
|
216
|
-
if (m) {
|
|
217
|
-
const h = m[1];
|
|
218
|
-
return {
|
|
219
|
-
r: parseInt(h.slice(0, 2), 16),
|
|
220
|
-
g: parseInt(h.slice(2, 4), 16),
|
|
221
|
-
b: parseInt(h.slice(4, 6), 16)
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
const rgb = /^rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i.exec(s);
|
|
225
|
-
if (rgb) {
|
|
226
|
-
return { r: parseFloat(rgb[1]), g: parseFloat(rgb[2]), b: parseFloat(rgb[3]) };
|
|
227
|
-
}
|
|
228
|
-
return null;
|
|
229
|
-
}
|
|
230
|
-
function withAlpha(color, alpha) {
|
|
231
|
-
const c = parseRgb(color);
|
|
232
|
-
if (!c) return color;
|
|
233
|
-
return `rgba(${c.r},${c.g},${c.b},${alpha})`;
|
|
234
|
-
}
|
|
235
|
-
function mix(base, top, alpha) {
|
|
236
|
-
const b = parseRgb(base);
|
|
237
|
-
const t = parseRgb(top);
|
|
238
|
-
if (!b || !t) return base;
|
|
239
|
-
const c = (x, y) => Math.round(x + (y - x) * alpha);
|
|
240
|
-
return `rgb(${c(b.r, t.r)},${c(b.g, t.g)},${c(b.b, t.b)})`;
|
|
241
|
-
}
|
|
242
|
-
function toHex6(color, fallback = "#888888") {
|
|
243
|
-
const c = parseRgb(color);
|
|
244
|
-
if (!c) return fallback;
|
|
245
|
-
const h = (n) => Math.max(0, Math.min(255, Math.round(n))).toString(16).padStart(2, "0");
|
|
246
|
-
return `#${h(c.r)}${h(c.g)}${h(c.b)}`;
|
|
247
|
-
}
|
|
248
|
-
function isDarkColor(color) {
|
|
249
|
-
const c = parseRgb(color);
|
|
250
|
-
if (!c) return true;
|
|
251
|
-
return 0.2126 * c.r + 0.7152 * c.g + 0.0722 * c.b < 128;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
// src/ui/styles.ts
|
|
255
|
-
function overlayScrollbarCss(selector, width = 8) {
|
|
256
|
-
return `${selector}::-webkit-scrollbar{width:${width}px;height:${width}px;}${selector}::-webkit-scrollbar-thumb{background:var(--vela-scroll);border-radius:4px;border:2px solid transparent;background-clip:padding-box;}${selector}::-webkit-scrollbar-track{background:transparent;}${selector}::-webkit-scrollbar-button{display:none;width:0;height:0;}`;
|
|
257
|
-
}
|
|
258
|
-
var FIELD_FOCUS_CSS = "outline:none;transition:border-color .12s ease,box-shadow .12s ease;";
|
|
259
|
-
var FIELD_FOCUS_RING = "border-color:var(--vela-focus);box-shadow:0 0 0 3px var(--vela-focus-soft);";
|
|
260
|
-
function injectStyles(id, css, root = document) {
|
|
261
|
-
if (typeof document === "undefined") return;
|
|
262
|
-
const host = root instanceof Document ? root.head : root;
|
|
263
|
-
if (root.getElementById?.(id) ?? host.querySelector(`#${CSS.escape(id)}`)) return;
|
|
264
|
-
const s = document.createElement("style");
|
|
265
|
-
s.id = id;
|
|
266
|
-
s.textContent = css;
|
|
267
|
-
host.appendChild(s);
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
// src/ui/icons.ts
|
|
271
|
-
function iconEl(id, doc = document) {
|
|
272
|
-
const span = doc.createElement("span");
|
|
273
|
-
span.className = "vela-icon";
|
|
274
|
-
span.setAttribute("aria-hidden", "true");
|
|
275
|
-
const svg = iconMarkup(id);
|
|
276
|
-
if (svg) span.innerHTML = svg;
|
|
277
|
-
return span;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
// src/ui/surface-events.ts
|
|
281
|
-
var SURFACE_OPEN_EVENT = "vela:surface-open";
|
|
282
|
-
var SURFACE_CLOSE_EVENT = "vela:surface-close";
|
|
283
|
-
function announceSurface(el, open, kind, trigger = null) {
|
|
284
|
-
const View = el.ownerDocument.defaultView;
|
|
285
|
-
if (!View) return;
|
|
286
|
-
el.dispatchEvent(
|
|
287
|
-
new View.CustomEvent(open ? SURFACE_OPEN_EVENT : SURFACE_CLOSE_EVENT, { bubbles: true, composed: true, detail: { kind, trigger } })
|
|
288
|
-
);
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
// src/ui/surface-exit.ts
|
|
292
|
-
var CLOSING_ATTR = "data-closing";
|
|
293
|
-
var SURFACE_EXIT_CAP_MS = 1e3;
|
|
294
|
-
function animationsOf(els) {
|
|
295
|
-
return els.flatMap((el) => el.getAnimations({ subtree: true }));
|
|
296
|
-
}
|
|
297
|
-
function ends(a) {
|
|
298
|
-
return Number.isFinite(a.effect?.getComputedTiming().endTime ?? Number.POSITIVE_INFINITY);
|
|
299
|
-
}
|
|
300
|
-
function holdForExit(els, done, opts = {}) {
|
|
301
|
-
const list = Array.isArray(els) ? els : [els];
|
|
302
|
-
if (list.length === 0 || !list.every((el) => typeof el.getAnimations === "function")) {
|
|
303
|
-
done();
|
|
304
|
-
return null;
|
|
305
|
-
}
|
|
306
|
-
const before = new Set(animationsOf(list));
|
|
307
|
-
for (const el of list) el.setAttribute(CLOSING_ATTR, "");
|
|
308
|
-
const exit = animationsOf(list).filter((a) => !before.has(a) && ends(a));
|
|
309
|
-
if (exit.length === 0) {
|
|
310
|
-
for (const el of list) el.removeAttribute(CLOSING_ATTR);
|
|
311
|
-
done();
|
|
312
|
-
return null;
|
|
313
|
-
}
|
|
314
|
-
const frozen = [...list, ...opts.inert ?? []];
|
|
315
|
-
const wasInert = frozen.map((el) => el.inert);
|
|
316
|
-
for (const el of frozen) el.inert = true;
|
|
317
|
-
let settled = false;
|
|
318
|
-
const settle = (complete) => {
|
|
319
|
-
if (settled) return;
|
|
320
|
-
settled = true;
|
|
321
|
-
clearTimeout(cap);
|
|
322
|
-
for (const el of list) el.removeAttribute(CLOSING_ATTR);
|
|
323
|
-
frozen.forEach((el, i) => {
|
|
324
|
-
el.inert = wasInert[i];
|
|
325
|
-
});
|
|
326
|
-
if (complete) done();
|
|
327
|
-
};
|
|
328
|
-
const cap = setTimeout(() => settle(true), SURFACE_EXIT_CAP_MS);
|
|
329
|
-
let pending = exit.length;
|
|
330
|
-
const one = () => {
|
|
331
|
-
if (--pending === 0) settle(true);
|
|
332
|
-
};
|
|
333
|
-
for (const a of exit) a.finished.then(one, one);
|
|
334
|
-
return {
|
|
335
|
-
cancel: () => settle(false),
|
|
336
|
-
finish: () => settle(true)
|
|
337
|
-
};
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
export { ACCENT, ACCENT_BRIGHT, BEARISH, BULLISH, CATEGORICAL, CHIP_PLATE, CROSSHAIR, FIELD_FOCUS_CSS, FIELD_FOCUS_RING, HIGHLIGHT, INFO, INVALID, MARKER, NEUTRAL, SERIES_LINE, SESSION_OFF, SESSION_POST, SESSION_PRE, SLATE, SLATE_DEEP, SURFACE_CLOSE_EVENT, SURFACE_OPEN_EVENT, TRADE_EXIT, TRADE_LONG, TRADE_SHORT, VALID, WARNING, announceSurface, categoricalColor, holdForExit, icon, iconAt, iconEl, iconMarkup, injectStyles, isDarkColor, mix, overlayScrollbarCss, registerIcon, svg16, svg24, svg24Solid, toHex6, withAlpha };
|
|
File without changes
|