@forgecharts/sdk 1.1.28 → 1.1.30

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 (237) hide show
  1. package/dist/index.js +8100 -48
  2. package/dist/index.js.map +1 -1
  3. package/dist/internal.js +8851 -31
  4. package/dist/internal.js.map +1 -1
  5. package/dist/react/index.js +11558 -27
  6. package/dist/react/index.js.map +1 -1
  7. package/dist/react/internal.js +12147 -43
  8. package/dist/react/internal.js.map +1 -1
  9. package/package.json +1 -1
  10. package/dist/__tests__/backwardCompatibility.test.js +0 -159
  11. package/dist/__tests__/backwardCompatibility.test.js.map +0 -1
  12. package/dist/__tests__/candleInvariant.test.js +0 -415
  13. package/dist/__tests__/candleInvariant.test.js.map +0 -1
  14. package/dist/__tests__/public-api-surface.js +0 -38
  15. package/dist/__tests__/public-api-surface.js.map +0 -1
  16. package/dist/__tests__/timeframeBoundary.test.js +0 -452
  17. package/dist/__tests__/timeframeBoundary.test.js.map +0 -1
  18. package/dist/api/DrawingManager.js +0 -190
  19. package/dist/api/DrawingManager.js.map +0 -1
  20. package/dist/api/EventBus.js +0 -44
  21. package/dist/api/EventBus.js.map +0 -1
  22. package/dist/api/IndicatorDAG.js +0 -316
  23. package/dist/api/IndicatorDAG.js.map +0 -1
  24. package/dist/api/IndicatorRegistry.js +0 -39
  25. package/dist/api/IndicatorRegistry.js.map +0 -1
  26. package/dist/api/LayoutManager.js +0 -51
  27. package/dist/api/LayoutManager.js.map +0 -1
  28. package/dist/api/PaneManager.js +0 -119
  29. package/dist/api/PaneManager.js.map +0 -1
  30. package/dist/api/ReferenceAPI.js +0 -153
  31. package/dist/api/ReferenceAPI.js.map +0 -1
  32. package/dist/api/TChart.js +0 -765
  33. package/dist/api/TChart.js.map +0 -1
  34. package/dist/api/createChart.js +0 -42
  35. package/dist/api/createChart.js.map +0 -1
  36. package/dist/api/drawing tools/fib gann menu/fibRetracement.js +0 -22
  37. package/dist/api/drawing tools/fib gann menu/fibRetracement.js.map +0 -1
  38. package/dist/api/drawing tools/lines menu/crossLine.js +0 -16
  39. package/dist/api/drawing tools/lines menu/crossLine.js.map +0 -1
  40. package/dist/api/drawing tools/lines menu/disjointChannel.js +0 -59
  41. package/dist/api/drawing tools/lines menu/disjointChannel.js.map +0 -1
  42. package/dist/api/drawing tools/lines menu/extendedLine.js +0 -17
  43. package/dist/api/drawing tools/lines menu/extendedLine.js.map +0 -1
  44. package/dist/api/drawing tools/lines menu/flatTopBottom.js +0 -41
  45. package/dist/api/drawing tools/lines menu/flatTopBottom.js.map +0 -1
  46. package/dist/api/drawing tools/lines menu/horizontal.js +0 -19
  47. package/dist/api/drawing tools/lines menu/horizontal.js.map +0 -1
  48. package/dist/api/drawing tools/lines menu/horizontalRay.js +0 -20
  49. package/dist/api/drawing tools/lines menu/horizontalRay.js.map +0 -1
  50. package/dist/api/drawing tools/lines menu/infoLine.js +0 -107
  51. package/dist/api/drawing tools/lines menu/infoLine.js.map +0 -1
  52. package/dist/api/drawing tools/lines menu/insidePitchfork.js +0 -31
  53. package/dist/api/drawing tools/lines menu/insidePitchfork.js.map +0 -1
  54. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.js +0 -15
  55. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.js.map +0 -1
  56. package/dist/api/drawing tools/lines menu/parallelChannel.js +0 -43
  57. package/dist/api/drawing tools/lines menu/parallelChannel.js.map +0 -1
  58. package/dist/api/drawing tools/lines menu/pitchfork.js +0 -12
  59. package/dist/api/drawing tools/lines menu/pitchfork.js.map +0 -1
  60. package/dist/api/drawing tools/lines menu/ray.js +0 -23
  61. package/dist/api/drawing tools/lines menu/ray.js.map +0 -1
  62. package/dist/api/drawing tools/lines menu/regressionTrend.js +0 -127
  63. package/dist/api/drawing tools/lines menu/regressionTrend.js.map +0 -1
  64. package/dist/api/drawing tools/lines menu/schiffPitchfork.js +0 -15
  65. package/dist/api/drawing tools/lines menu/schiffPitchfork.js.map +0 -1
  66. package/dist/api/drawing tools/lines menu/trendAngle.js +0 -51
  67. package/dist/api/drawing tools/lines menu/trendAngle.js.map +0 -1
  68. package/dist/api/drawing tools/lines menu/trendline.js +0 -11
  69. package/dist/api/drawing tools/lines menu/trendline.js.map +0 -1
  70. package/dist/api/drawing tools/lines menu/vertical.js +0 -11
  71. package/dist/api/drawing tools/lines menu/vertical.js.map +0 -1
  72. package/dist/api/drawing tools/pointers menu/crosshair.js +0 -16
  73. package/dist/api/drawing tools/pointers menu/crosshair.js.map +0 -1
  74. package/dist/api/drawing tools/pointers menu/cursor.js +0 -15
  75. package/dist/api/drawing tools/pointers menu/cursor.js.map +0 -1
  76. package/dist/api/drawing tools/pointers menu/demonstration.js +0 -30
  77. package/dist/api/drawing tools/pointers menu/demonstration.js.map +0 -1
  78. package/dist/api/drawing tools/pointers menu/dot.js +0 -23
  79. package/dist/api/drawing tools/pointers menu/dot.js.map +0 -1
  80. package/dist/api/drawing tools/shapes menu/rectangle.js +0 -19
  81. package/dist/api/drawing tools/shapes menu/rectangle.js.map +0 -1
  82. package/dist/api/drawing tools/shapes menu/text.js +0 -25
  83. package/dist/api/drawing tools/shapes menu/text.js.map +0 -1
  84. package/dist/api/drawingUtils.js +0 -83
  85. package/dist/api/drawingUtils.js.map +0 -1
  86. package/dist/core/CanvasLayer.js +0 -56
  87. package/dist/core/CanvasLayer.js.map +0 -1
  88. package/dist/core/Chart.js +0 -839
  89. package/dist/core/Chart.js.map +0 -1
  90. package/dist/core/CoordTransform.js +0 -224
  91. package/dist/core/CoordTransform.js.map +0 -1
  92. package/dist/core/Crosshair.js +0 -186
  93. package/dist/core/Crosshair.js.map +0 -1
  94. package/dist/core/IndicatorEngine.js +0 -181
  95. package/dist/core/IndicatorEngine.js.map +0 -1
  96. package/dist/core/InteractionManager.js +0 -698
  97. package/dist/core/InteractionManager.js.map +0 -1
  98. package/dist/core/PriceScale.js +0 -113
  99. package/dist/core/PriceScale.js.map +0 -1
  100. package/dist/core/Series.js +0 -114
  101. package/dist/core/Series.js.map +0 -1
  102. package/dist/core/TimeScale.js +0 -150
  103. package/dist/core/TimeScale.js.map +0 -1
  104. package/dist/datafeed/DatafeedConnector.js +0 -268
  105. package/dist/datafeed/DatafeedConnector.js.map +0 -1
  106. package/dist/engine/CandleEngine.js +0 -318
  107. package/dist/engine/CandleEngine.js.map +0 -1
  108. package/dist/engine/__tests__/CandleEngine.test.js +0 -300
  109. package/dist/engine/__tests__/CandleEngine.test.js.map +0 -1
  110. package/dist/engine/candleInvariants.js +0 -134
  111. package/dist/engine/candleInvariants.js.map +0 -1
  112. package/dist/engine/mergeUtils.js +0 -64
  113. package/dist/engine/mergeUtils.js.map +0 -1
  114. package/dist/engine/timeframeUtils.js +0 -100
  115. package/dist/engine/timeframeUtils.js.map +0 -1
  116. package/dist/licensing/ChartRuntimeResolver.js +0 -310
  117. package/dist/licensing/ChartRuntimeResolver.js.map +0 -1
  118. package/dist/licensing/LicenseManager.js +0 -114
  119. package/dist/licensing/LicenseManager.js.map +0 -1
  120. package/dist/licensing/__tests__/ChartRuntimeResolver.test.js +0 -177
  121. package/dist/licensing/__tests__/ChartRuntimeResolver.test.js.map +0 -1
  122. package/dist/licensing/__tests__/LicenseManager.test.js +0 -153
  123. package/dist/licensing/__tests__/LicenseManager.test.js.map +0 -1
  124. package/dist/licensing/licenseTypes.js +0 -2
  125. package/dist/licensing/licenseTypes.js.map +0 -1
  126. package/dist/pine/PineCompiler.js +0 -44
  127. package/dist/pine/PineCompiler.js.map +0 -1
  128. package/dist/pine/diagnostics.js +0 -11
  129. package/dist/pine/diagnostics.js.map +0 -1
  130. package/dist/pine/index.js +0 -5
  131. package/dist/pine/index.js.map +0 -1
  132. package/dist/pine/pine-ast.js +0 -19
  133. package/dist/pine/pine-ast.js.map +0 -1
  134. package/dist/pine/pine-lexer.js +0 -249
  135. package/dist/pine/pine-lexer.js.map +0 -1
  136. package/dist/pine/pine-parser.js +0 -416
  137. package/dist/pine/pine-parser.js.map +0 -1
  138. package/dist/pine/pine-transpiler.js +0 -260
  139. package/dist/pine/pine-transpiler.js.map +0 -1
  140. package/dist/pixi/LayerName.js +0 -35
  141. package/dist/pixi/LayerName.js.map +0 -1
  142. package/dist/pixi/PixiCandlestickRenderer.js +0 -107
  143. package/dist/pixi/PixiCandlestickRenderer.js.map +0 -1
  144. package/dist/pixi/PixiChart.js +0 -367
  145. package/dist/pixi/PixiChart.js.map +0 -1
  146. package/dist/pixi/PixiCrosshairRenderer.js +0 -110
  147. package/dist/pixi/PixiCrosshairRenderer.js.map +0 -1
  148. package/dist/pixi/PixiDrawingRenderer.js +0 -111
  149. package/dist/pixi/PixiDrawingRenderer.js.map +0 -1
  150. package/dist/pixi/PixiGridRenderer.js +0 -114
  151. package/dist/pixi/PixiGridRenderer.js.map +0 -1
  152. package/dist/pixi/PixiLayerManager.js +0 -92
  153. package/dist/pixi/PixiLayerManager.js.map +0 -1
  154. package/dist/react/canvas/ChartCanvas.js +0 -604
  155. package/dist/react/canvas/ChartCanvas.js.map +0 -1
  156. package/dist/react/canvas/ChartContextMenu.js +0 -5
  157. package/dist/react/canvas/ChartContextMenu.js.map +0 -1
  158. package/dist/react/canvas/ChartSettingsDialog.js +0 -28
  159. package/dist/react/canvas/ChartSettingsDialog.js.map +0 -1
  160. package/dist/react/canvas/IndicatorLabel.js +0 -196
  161. package/dist/react/canvas/IndicatorLabel.js.map +0 -1
  162. package/dist/react/canvas/IndicatorPane.js +0 -395
  163. package/dist/react/canvas/IndicatorPane.js.map +0 -1
  164. package/dist/react/canvas/PointerOverlay.js +0 -61
  165. package/dist/react/canvas/PointerOverlay.js.map +0 -1
  166. package/dist/react/canvas/toolbars/LeftToolbar.js +0 -407
  167. package/dist/react/canvas/toolbars/LeftToolbar.js.map +0 -1
  168. package/dist/react/hooks/useChartCapabilities.js +0 -66
  169. package/dist/react/hooks/useChartCapabilities.js.map +0 -1
  170. package/dist/react/shell/ManagedAppShell.js +0 -440
  171. package/dist/react/shell/ManagedAppShell.js.map +0 -1
  172. package/dist/react/trading/TradingBridge.js +0 -73
  173. package/dist/react/trading/TradingBridge.js.map +0 -1
  174. package/dist/react/workspace/ChartWorkspace.js +0 -42
  175. package/dist/react/workspace/ChartWorkspace.js.map +0 -1
  176. package/dist/react/workspace/FloatingPanel.js +0 -82
  177. package/dist/react/workspace/FloatingPanel.js.map +0 -1
  178. package/dist/react/workspace/IndicatorsDialog.js +0 -121
  179. package/dist/react/workspace/IndicatorsDialog.js.map +0 -1
  180. package/dist/react/workspace/LayoutMenu.js +0 -113
  181. package/dist/react/workspace/LayoutMenu.js.map +0 -1
  182. package/dist/react/workspace/SymbolSearchDialog.js +0 -245
  183. package/dist/react/workspace/SymbolSearchDialog.js.map +0 -1
  184. package/dist/react/workspace/TabBar.js +0 -29
  185. package/dist/react/workspace/TabBar.js.map +0 -1
  186. package/dist/react/workspace/toolbars/BottomToolbar.js +0 -236
  187. package/dist/react/workspace/toolbars/BottomToolbar.js.map +0 -1
  188. package/dist/react/workspace/toolbars/RightToolbar.js +0 -18
  189. package/dist/react/workspace/toolbars/RightToolbar.js.map +0 -1
  190. package/dist/react/workspace/toolbars/TopToolbar.js +0 -82
  191. package/dist/react/workspace/toolbars/TopToolbar.js.map +0 -1
  192. package/dist/renderers/CandlestickRenderer.js +0 -98
  193. package/dist/renderers/CandlestickRenderer.js.map +0 -1
  194. package/dist/renderers/HistogramRenderer.js +0 -50
  195. package/dist/renderers/HistogramRenderer.js.map +0 -1
  196. package/dist/renderers/LineRenderer.js +0 -64
  197. package/dist/renderers/LineRenderer.js.map +0 -1
  198. package/dist/theme/colors.js +0 -19
  199. package/dist/theme/colors.js.map +0 -1
  200. package/dist/tools/barDivergenceCheck.js +0 -200
  201. package/dist/tools/barDivergenceCheck.js.map +0 -1
  202. package/dist/trading/TradingOverlayStore.js +0 -139
  203. package/dist/trading/TradingOverlayStore.js.map +0 -1
  204. package/dist/trading/UnmanagedIngestion.js +0 -114
  205. package/dist/trading/UnmanagedIngestion.js.map +0 -1
  206. package/dist/trading/__tests__/ManagedTradingController.test.js +0 -271
  207. package/dist/trading/__tests__/ManagedTradingController.test.js.map +0 -1
  208. package/dist/trading/__tests__/TradingOverlayStore.test.js +0 -267
  209. package/dist/trading/__tests__/TradingOverlayStore.test.js.map +0 -1
  210. package/dist/trading/__tests__/UnmanagedIngestion.test.js +0 -170
  211. package/dist/trading/__tests__/UnmanagedIngestion.test.js.map +0 -1
  212. package/dist/trading/managed/ManagedTradingController.js +0 -247
  213. package/dist/trading/managed/ManagedTradingController.js.map +0 -1
  214. package/dist/trading/managed/managedCapabilities.js +0 -79
  215. package/dist/trading/managed/managedCapabilities.js.map +0 -1
  216. package/dist/trading/managed/managedTypes.js +0 -13
  217. package/dist/trading/managed/managedTypes.js.map +0 -1
  218. package/dist/trading/tradingTypes.js +0 -8
  219. package/dist/trading/tradingTypes.js.map +0 -1
  220. package/dist/tscript/TScriptIndicator.js +0 -47
  221. package/dist/tscript/TScriptIndicator.js.map +0 -1
  222. package/dist/tscript/ast.js +0 -22
  223. package/dist/tscript/ast.js.map +0 -1
  224. package/dist/tscript/lexer.js +0 -187
  225. package/dist/tscript/lexer.js.map +0 -1
  226. package/dist/tscript/parser.js +0 -318
  227. package/dist/tscript/parser.js.map +0 -1
  228. package/dist/tscript/runtime.js +0 -475
  229. package/dist/tscript/runtime.js.map +0 -1
  230. package/dist/tscript/series.js +0 -79
  231. package/dist/tscript/series.js.map +0 -1
  232. package/dist/types/IChart.js +0 -2
  233. package/dist/types/IChart.js.map +0 -1
  234. package/dist/types/IRenderer.js +0 -2
  235. package/dist/types/IRenderer.js.map +0 -1
  236. package/dist/types/ISeries.js +0 -2
  237. package/dist/types/ISeries.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"SymbolSearchDialog.js","sourceRoot":"","sources":["../../../src/react/workspace/SymbolSearchDialog.tsx"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useRef, useState } from 'react';
3
- export function TabBar({ tabs, activeId, onSelect, onAdd, onClose, onRename }) {
4
- const [editingId, setEditingId] = useState(null);
5
- const [editValue, setEditValue] = useState('');
6
- const inputRef = useRef(null);
7
- function startEdit(tab, e) {
8
- e.stopPropagation();
9
- setEditingId(tab.id);
10
- setEditValue(tab.label);
11
- setTimeout(() => inputRef.current?.select(), 0);
12
- }
13
- function commitEdit() {
14
- if (editingId && editValue.trim()) {
15
- onRename(editingId, editValue.trim());
16
- }
17
- setEditingId(null);
18
- }
19
- return (_jsxs("div", { className: "tab-bar", children: [tabs.map((tab) => (_jsxs("div", { className: `tab-item${tab.id === activeId ? ' active' : ''}`, onClick: () => onSelect(tab.id), onDoubleClick: (e) => startEdit(tab, e), title: "Double-click to rename", children: [editingId === tab.id ? (_jsx("input", { ref: inputRef, className: "tab-rename-input", value: editValue, onChange: (e) => setEditValue(e.target.value), onBlur: commitEdit, onKeyDown: (e) => {
20
- if (e.key === 'Enter')
21
- commitEdit();
22
- if (e.key === 'Escape')
23
- setEditingId(null);
24
- }, onClick: (e) => e.stopPropagation(), autoFocus: true })) : (_jsxs("span", { className: "tab-label", children: [tab.label, tab.isSaved && _jsx("span", { className: "tab-saved-dot", title: "Saved layout" })] })), tabs.length > 1 && (_jsx("button", { className: "tab-close", title: "Close tab", onClick: (e) => {
25
- e.stopPropagation();
26
- onClose(tab.id);
27
- }, children: "\u00D7" }))] }, tab.id))), _jsx("button", { className: "tab-add", onClick: onAdd, title: "New chart tab", children: "+" })] }));
28
- }
29
- //# sourceMappingURL=TabBar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabBar.js","sourceRoot":"","sources":["../../../src/react/workspace/TabBar.tsx"],"names":[],"mappings":"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"}
@@ -1,236 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useRef, useState } from 'react';
3
- export const TIMEZONE_OPTIONS = [
4
- { label: 'UTC', value: 'UTC' },
5
- { label: 'Exchange', value: 'exchange' },
6
- // Americas
7
- { label: '(UTC-10) Honolulu', value: 'Pacific/Honolulu' },
8
- { label: '(UTC-9) Anchorage', value: 'America/Anchorage' },
9
- { label: '(UTC-9) Juneau', value: 'America/Juneau' },
10
- { label: '(UTC-8) Los Angeles', value: 'America/Los_Angeles' },
11
- { label: '(UTC-8) Vancouver', value: 'America/Vancouver' },
12
- { label: '(UTC-7) Denver', value: 'America/Denver' },
13
- { label: '(UTC-7) Phoenix', value: 'America/Phoenix' },
14
- { label: '(UTC-6) Chicago', value: 'America/Chicago' },
15
- { label: '(UTC-6) Mexico City', value: 'America/Mexico_City' },
16
- { label: '(UTC-6) San Salvador', value: 'America/El_Salvador' },
17
- { label: '(UTC-5) Bogota', value: 'America/Bogota' },
18
- { label: '(UTC-5) Lima', value: 'America/Lima' },
19
- { label: '(UTC-5) New York', value: 'America/New_York' },
20
- { label: '(UTC-5) Toronto', value: 'America/Toronto' },
21
- { label: '(UTC-4) Caracas', value: 'America/Caracas' },
22
- { label: '(UTC-4) Halifax', value: 'America/Halifax' },
23
- { label: '(UTC-3) Buenos Aires', value: 'America/Argentina/Buenos_Aires' },
24
- { label: '(UTC-3) Santiago', value: 'America/Santiago' },
25
- { label: '(UTC-3) Sao Paulo', value: 'America/Sao_Paulo' },
26
- { label: '(UTC-2) Mid-Atlantic', value: 'Atlantic/South_Georgia' },
27
- { label: '(UTC-1) Azores', value: 'Atlantic/Azores' },
28
- // Europe / Africa (UTC / UTC+0)
29
- { label: '(UTC) Casablanca', value: 'Africa/Casablanca' },
30
- { label: '(UTC) Dublin', value: 'Europe/Dublin' },
31
- { label: '(UTC) Lisbon', value: 'Europe/Lisbon' },
32
- { label: '(UTC) London', value: 'Europe/London' },
33
- { label: '(UTC) Reykjavik', value: 'Atlantic/Reykjavik' },
34
- // UTC+1
35
- { label: '(UTC+1) Amsterdam', value: 'Europe/Amsterdam' },
36
- { label: '(UTC+1) Belgrade', value: 'Europe/Belgrade' },
37
- { label: '(UTC+1) Berlin', value: 'Europe/Berlin' },
38
- { label: '(UTC+1) Bratislava', value: 'Europe/Bratislava' },
39
- { label: '(UTC+1) Brussels', value: 'Europe/Brussels' },
40
- { label: '(UTC+1) Budapest', value: 'Europe/Budapest' },
41
- { label: '(UTC+1) Copenhagen', value: 'Europe/Copenhagen' },
42
- { label: '(UTC+1) Lagos', value: 'Africa/Lagos' },
43
- { label: '(UTC+1) Luxembourg', value: 'Europe/Luxembourg' },
44
- { label: '(UTC+1) Madrid', value: 'Europe/Madrid' },
45
- { label: '(UTC+1) Malta', value: 'Europe/Malta' },
46
- { label: '(UTC+1) Oslo', value: 'Europe/Oslo' },
47
- { label: '(UTC+1) Paris', value: 'Europe/Paris' },
48
- { label: '(UTC+1) Prague', value: 'Europe/Prague' },
49
- { label: '(UTC+1) Rome', value: 'Europe/Rome' },
50
- { label: '(UTC+1) Sarajevo', value: 'Europe/Sarajevo' },
51
- { label: '(UTC+1) Stockholm', value: 'Europe/Stockholm' },
52
- { label: '(UTC+1) Vienna', value: 'Europe/Vienna' },
53
- { label: '(UTC+1) Warsaw', value: 'Europe/Warsaw' },
54
- { label: '(UTC+1) Zurich', value: 'Europe/Zurich' },
55
- // UTC+2
56
- { label: '(UTC+2) Athens', value: 'Europe/Athens' },
57
- { label: '(UTC+2) Bucharest', value: 'Europe/Bucharest' },
58
- { label: '(UTC+2) Cairo', value: 'Africa/Cairo' },
59
- { label: '(UTC+2) Helsinki', value: 'Europe/Helsinki' },
60
- { label: '(UTC+2) Istanbul', value: 'Europe/Istanbul' },
61
- { label: '(UTC+2) Jerusalem', value: 'Asia/Jerusalem' },
62
- { label: '(UTC+2) Johannesburg', value: 'Africa/Johannesburg' },
63
- { label: '(UTC+2) Kyiv', value: 'Europe/Kiev' },
64
- { label: '(UTC+2) Riga', value: 'Europe/Riga' },
65
- { label: '(UTC+2) Sofia', value: 'Europe/Sofia' },
66
- { label: '(UTC+2) Tallinn', value: 'Europe/Tallinn' },
67
- { label: '(UTC+2) Vilnius', value: 'Europe/Vilnius' },
68
- // UTC+3
69
- { label: '(UTC+3) Baghdad', value: 'Asia/Baghdad' },
70
- { label: '(UTC+3) Kuwait', value: 'Asia/Kuwait' },
71
- { label: '(UTC+3) Moscow', value: 'Europe/Moscow' },
72
- { label: '(UTC+3) Nairobi', value: 'Africa/Nairobi' },
73
- { label: '(UTC+3) Qatar', value: 'Asia/Qatar' },
74
- { label: '(UTC+3) Riyadh', value: 'Asia/Riyadh' },
75
- // UTC+3:30 / UTC+4
76
- { label: '(UTC+3:30) Tehran', value: 'Asia/Tehran' },
77
- { label: '(UTC+4) Abu Dhabi', value: 'Asia/Dubai' },
78
- { label: '(UTC+4) Baku', value: 'Asia/Baku' },
79
- { label: '(UTC+4) Dubai', value: 'Asia/Dubai' },
80
- { label: '(UTC+4) Muscat', value: 'Asia/Muscat' },
81
- { label: '(UTC+4) Tbilisi', value: 'Asia/Tbilisi' },
82
- { label: '(UTC+4:30) Kabul', value: 'Asia/Kabul' },
83
- // UTC+5
84
- { label: '(UTC+5) Islamabad', value: 'Asia/Karachi' },
85
- { label: '(UTC+5) Karachi', value: 'Asia/Karachi' },
86
- { label: '(UTC+5) Tashkent', value: 'Asia/Tashkent' },
87
- { label: '(UTC+5:30) Chennai', value: 'Asia/Kolkata' },
88
- { label: '(UTC+5:30) Mumbai', value: 'Asia/Kolkata' },
89
- { label: '(UTC+5:30) New Delhi', value: 'Asia/Kolkata' },
90
- { label: '(UTC+5:45) Kathmandu', value: 'Asia/Kathmandu' },
91
- // UTC+6
92
- { label: '(UTC+6) Almaty', value: 'Asia/Almaty' },
93
- { label: '(UTC+6) Dhaka', value: 'Asia/Dhaka' },
94
- // UTC+7
95
- { label: '(UTC+7) Bangkok', value: 'Asia/Bangkok' },
96
- { label: '(UTC+7) Hanoi', value: 'Asia/Ho_Chi_Minh' },
97
- { label: '(UTC+7) Jakarta', value: 'Asia/Jakarta' },
98
- // UTC+8
99
- { label: '(UTC+8) Beijing', value: 'Asia/Shanghai' },
100
- { label: '(UTC+8) Hong Kong', value: 'Asia/Hong_Kong' },
101
- { label: '(UTC+8) Kuala Lumpur', value: 'Asia/Kuala_Lumpur' },
102
- { label: '(UTC+8) Perth', value: 'Australia/Perth' },
103
- { label: '(UTC+8) Shanghai', value: 'Asia/Shanghai' },
104
- { label: '(UTC+8) Singapore', value: 'Asia/Singapore' },
105
- { label: '(UTC+8) Taipei', value: 'Asia/Taipei' },
106
- // UTC+9
107
- { label: '(UTC+9) Osaka', value: 'Asia/Tokyo' },
108
- { label: '(UTC+9) Seoul', value: 'Asia/Seoul' },
109
- { label: '(UTC+9) Tokyo', value: 'Asia/Tokyo' },
110
- { label: '(UTC+9:30) Adelaide', value: 'Australia/Adelaide' },
111
- { label: '(UTC+9:30) Darwin', value: 'Australia/Darwin' },
112
- // UTC+10
113
- { label: '(UTC+10) Brisbane', value: 'Australia/Brisbane' },
114
- { label: '(UTC+10) Canberra', value: 'Australia/Sydney' },
115
- { label: '(UTC+10) Melbourne', value: 'Australia/Melbourne' },
116
- { label: '(UTC+10) Sydney', value: 'Australia/Sydney' },
117
- // UTC+12
118
- { label: '(UTC+12) Auckland', value: 'Pacific/Auckland' },
119
- { label: '(UTC+12) Fiji', value: 'Pacific/Fiji' },
120
- ];
121
- // ─── DST-aware offset helpers ─────────────────────────────────────────────────
122
- /**
123
- * Returns the current UTC offset label for an IANA timezone, e.g. "(UTC-7)" or "(UTC+5:30)".
124
- * Because it reads `new Date()` it is automatically DST-aware.
125
- */
126
- function getUtcOffsetLabel(iana) {
127
- try {
128
- const parts = new Intl.DateTimeFormat('en', {
129
- timeZone: iana,
130
- timeZoneName: 'shortOffset',
131
- }).formatToParts(new Date());
132
- const tzName = parts.find((p) => p.type === 'timeZoneName')?.value ?? 'GMT';
133
- const offset = tzName.replace(/^GMT/, '');
134
- return offset ? `(UTC${offset})` : '(UTC)';
135
- }
136
- catch {
137
- return '(UTC)';
138
- }
139
- }
140
- /**
141
- * Returns a DST-aware display string for a timezone option.
142
- * For UTC / Exchange the label is returned unchanged.
143
- * For all IANA entries the offset prefix is recomputed live.
144
- */
145
- function getDisplayLabel(opt) {
146
- if (opt.value === 'UTC' || opt.value === 'exchange')
147
- return opt.label;
148
- // Extract city name from static label like "(UTC-9) Anchorage" → "Anchorage"
149
- const city = opt.label.replace(/^\(UTC[^)]*\)\s*/, '');
150
- return `${getUtcOffsetLabel(opt.value)} ${city}`;
151
- }
152
- /**
153
- * Returns true when the given symbol trades on a session-aware exchange
154
- * (stocks, futures, forex) where RTH/ETH distinction makes sense.
155
- * Crypto exchanges trade 24/7 and have no session concept.
156
- */
157
- const CRYPTO_EXCHANGES = new Set([
158
- 'BINANCE', 'BINANCEUS', 'BINANCEUSDM', 'BINANCECOINM',
159
- 'COINBASE', 'COINBASEPRO',
160
- 'KRAKEN', 'KRAKENFX',
161
- 'BYBIT', 'BITGET',
162
- 'OKX', 'OKEX',
163
- 'HUOBI', 'HTX',
164
- 'KUCOIN',
165
- 'GEMINI',
166
- 'BITSTAMP',
167
- 'BITFINEX',
168
- 'MEXC',
169
- 'GATEIO', 'GATE',
170
- 'BITMEX',
171
- 'DERIBIT',
172
- ]);
173
- export function symbolSupportsSession(symbol) {
174
- const exchange = symbol.includes(':') ? symbol.split(':')[0].toUpperCase() : '';
175
- return exchange !== '' && !CRYPTO_EXCHANGES.has(exchange);
176
- }
177
- function useClockTime(timezone) {
178
- const [time, setTime] = useState(() => _formatClock(timezone));
179
- useEffect(() => {
180
- setTime(_formatClock(timezone));
181
- const id = setInterval(() => setTime(_formatClock(timezone)), 1000);
182
- return () => clearInterval(id);
183
- }, [timezone]);
184
- return time;
185
- }
186
- function _formatClock(timezone) {
187
- const tz = timezone === 'exchange' ? 'UTC' : timezone;
188
- try {
189
- return new Intl.DateTimeFormat('en-GB', {
190
- timeZone: tz,
191
- hour: '2-digit',
192
- minute: '2-digit',
193
- second: '2-digit',
194
- hour12: false,
195
- }).format(new Date());
196
- }
197
- catch {
198
- return new Intl.DateTimeFormat('en-GB', {
199
- timeZone: 'UTC',
200
- hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false,
201
- }).format(new Date());
202
- }
203
- }
204
- export function BottomToolbar({ symbol, timezone, onTimezoneChange, session, onSessionChange, onToggleScriptDrawer, scriptDrawerOpen }) {
205
- const showSession = symbolSupportsSession(symbol);
206
- const [open, setOpen] = useState(false);
207
- const [sessionOpen, setSessionOpen] = useState(false);
208
- const rootRef = useRef(null);
209
- const sessionRef = useRef(null);
210
- const clockTime = useClockTime(timezone);
211
- const current = TIMEZONE_OPTIONS.find((o) => o.value === timezone) ?? TIMEZONE_OPTIONS[0];
212
- // Close timezone dropdown on outside click
213
- useEffect(() => {
214
- if (!open)
215
- return;
216
- const handler = (e) => {
217
- if (rootRef.current && !rootRef.current.contains(e.target))
218
- setOpen(false);
219
- };
220
- document.addEventListener('mousedown', handler);
221
- return () => document.removeEventListener('mousedown', handler);
222
- }, [open]);
223
- // Close session dropdown on outside click
224
- useEffect(() => {
225
- if (!sessionOpen)
226
- return;
227
- const handler = (e) => {
228
- if (sessionRef.current && !sessionRef.current.contains(e.target))
229
- setSessionOpen(false);
230
- };
231
- document.addEventListener('mousedown', handler);
232
- return () => document.removeEventListener('mousedown', handler);
233
- }, [sessionOpen]);
234
- return (_jsxs("div", { className: "bottom-bar", children: [_jsx("div", { className: "bottom-bar-left", children: _jsxs("button", { className: `bottom-bar-btn${scriptDrawerOpen ? ' active' : ''}`, onClick: onToggleScriptDrawer, title: "Script Engine", children: [_jsxs("svg", { viewBox: "0 0 16 16", width: "11", height: "11", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", children: [_jsx("polyline", { points: "4,6 2,8 4,10" }), _jsx("polyline", { points: "12,6 14,8 12,10" }), _jsx("line", { x1: "9", y1: "3", x2: "7", y2: "13" })] }), "Script"] }) }), _jsxs("div", { className: "bottom-bar-right", children: [_jsxs("div", { ref: rootRef, style: { position: 'relative', display: 'flex', alignItems: 'center' }, children: [_jsxs("button", { className: `bottom-bar-btn${open ? ' active' : ''}`, onClick: () => setOpen((o) => !o), title: "Chart timezone", children: [_jsxs("svg", { viewBox: "0 0 14 14", width: "11", height: "11", fill: "none", stroke: "currentColor", strokeWidth: "1.2", children: [_jsx("circle", { cx: "7", cy: "7", r: "5.5" }), _jsx("path", { d: "M7 1.5C7 1.5 9 4 9 7s-2 5.5-2 5.5M7 1.5C7 1.5 5 4 5 7s2 5.5 2 5.5" }), _jsx("line", { x1: "1.5", y1: "7", x2: "12.5", y2: "7" }), _jsx("line", { x1: "2", y1: "4.5", x2: "12", y2: "4.5" }), _jsx("line", { x1: "2", y1: "9.5", x2: "12", y2: "9.5" })] }), getDisplayLabel(current)] }), _jsx("span", { className: "bottom-bar-clock", title: `Current time in ${getDisplayLabel(current)}`, children: clockTime }), open && (_jsxs("div", { className: "bottom-bar-dropdown bottom-bar-dropdown--right", children: [_jsx("div", { className: "bottom-bar-dropdown-section", children: "Timezone" }), TIMEZONE_OPTIONS.map((opt) => (_jsxs("button", { className: `bottom-bar-dropdown-item${opt.value === timezone ? ' current' : ''}`, onClick: () => { onTimezoneChange(opt.value); setOpen(false); }, children: [opt.value === timezone && (_jsx("span", { className: "bottom-bar-check", children: "\u00E2\u0153\u201C" })), getDisplayLabel(opt)] }, opt.value + opt.label)))] }))] }), showSession && _jsxs("div", { ref: sessionRef, style: { position: 'relative', display: 'flex', alignItems: 'center' }, children: [_jsxs("button", { className: `bottom-bar-btn${sessionOpen ? ' active' : ''}`, onClick: () => setSessionOpen((o) => !o), title: "Trading session", children: [_jsxs("svg", { viewBox: "0 0 14 14", width: "11", height: "11", fill: "none", stroke: "currentColor", strokeWidth: "1.2", children: [_jsx("rect", { x: "1.5", y: "2.5", width: "11", height: "9", rx: "1" }), _jsx("line", { x1: "1.5", y1: "5.5", x2: "12.5", y2: "5.5" }), _jsx("line", { x1: "4.5", y1: "2.5", x2: "4.5", y2: "1" }), _jsx("line", { x1: "9.5", y1: "2.5", x2: "9.5", y2: "1" })] }), session === 'extended' ? 'Extended hours' : 'Regular hours'] }), sessionOpen && (_jsxs("div", { className: "bottom-bar-dropdown bottom-bar-dropdown--right", children: [_jsx("div", { className: "bottom-bar-dropdown-section", children: "Sessions" }), _jsxs("button", { className: `bottom-bar-dropdown-item${session === 'regular' ? ' current' : ''}`, onClick: () => { onSessionChange('regular'); setSessionOpen(false); }, children: [session === 'regular' && _jsx("span", { className: "bottom-bar-check", children: "\u00E2\u0153\u201C" }), _jsxs("span", { className: "bottom-bar-session-label", children: [_jsx("strong", { children: "Regular trading hours" }), _jsx("span", { children: "Exchange session only (RTH) \u00E2\u20AC\u201D cleaner signals, higher liquidity" })] })] }), _jsxs("button", { className: `bottom-bar-dropdown-item${session === 'extended' ? ' current' : ''}`, onClick: () => { onSessionChange('extended'); setSessionOpen(false); }, children: [session === 'extended' && _jsx("span", { className: "bottom-bar-check", children: "\u00E2\u0153\u201C" }), _jsxs("span", { className: "bottom-bar-session-label", children: [_jsx("strong", { children: "Extended / electronic hours" }), _jsx("span", { children: "Includes pre-market & after-hours (ETH) \u00E2\u20AC\u201D full price range" })] })] })] }))] })] })] }));
235
- }
236
- //# sourceMappingURL=BottomToolbar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BottomToolbar.js","sourceRoot":"","sources":["../../../../src/react/workspace/toolbars/BottomToolbar.tsx"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- const WatchListIcon = () => (_jsxs("svg", { viewBox: "0 0 16 16", width: "16", height: "16", stroke: "currentColor", fill: "none", strokeWidth: "1.5", children: [_jsx("rect", { x: "2", y: "3", width: "12", height: "1.5", rx: "0.5", fill: "currentColor", stroke: "none" }), _jsx("rect", { x: "2", y: "7", width: "9", height: "1.5", rx: "0.5", fill: "currentColor", stroke: "none" }), _jsx("rect", { x: "2", y: "11", width: "10", height: "1.5", rx: "0.5", fill: "currentColor", stroke: "none" }), _jsx("circle", { cx: "13", cy: "11.75", r: "2.5" }), _jsx("line", { x1: "13", y1: "10.75", x2: "13", y2: "12.75", strokeWidth: "1.2" }), _jsx("line", { x1: "12", y1: "11.75", x2: "14", y2: "11.75", strokeWidth: "1.2" })] }));
3
- // ─── RightToolbar ────────────────────────────────────────────────────────────────────────────────
4
- export function RightToolbar({ watchlistOpen, onToggleWatchlist }) {
5
- return (_jsx("div", { style: {
6
- display: 'flex',
7
- flexDirection: 'column',
8
- alignItems: 'center',
9
- gap: 2,
10
- padding: '6px 4px',
11
- background: 'var(--toolbar-bg)',
12
- borderRadius: 8,
13
- width: 40,
14
- flexShrink: 0,
15
- userSelect: 'none',
16
- }, children: _jsx("button", { title: "Watch List", className: `drawing-tool-btn${watchlistOpen ? ' is-active' : ''}`, onClick: onToggleWatchlist, children: _jsx(WatchListIcon, {}) }) }));
17
- }
18
- //# sourceMappingURL=RightToolbar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RightToolbar.js","sourceRoot":"","sources":["../../../../src/react/workspace/toolbars/RightToolbar.tsx"],"names":[],"mappings":";AAEA,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,CAC1B,eAAK,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,cAAc,EAAC,IAAI,EAAC,MAAM,EAAC,WAAW,EAAC,KAAK,aACjG,eAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,cAAc,EAAC,MAAM,EAAC,MAAM,GAAG,EACvF,eAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,cAAc,EAAC,MAAM,EAAC,MAAM,GAAG,EACtF,eAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,cAAc,EAAC,MAAM,EAAC,MAAM,GAAG,EACxF,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,OAAO,EAAC,CAAC,EAAC,KAAK,GAAG,EACrC,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,OAAO,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,OAAO,EAAC,WAAW,EAAC,KAAK,GAAG,EAChE,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,OAAO,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,OAAO,EAAC,WAAW,EAAC,KAAK,GAAG,IAC5D,CACP,CAAC;AAOF,oGAAoG;AAEpG,MAAM,UAAU,YAAY,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAS;IACtE,OAAO,CACL,cACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,mBAAmB;YAC/B,YAAY,EAAE,CAAC;YACf,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,MAAM;SACnB,YAED,iBACE,KAAK,EAAC,YAAY,EAClB,SAAS,EAAE,mBAAmB,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EACjE,OAAO,EAAE,iBAAiB,YAE1B,KAAC,aAAa,KAAG,GACV,GACL,CACP,CAAC;AACJ,CAAC"}
@@ -1,82 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useState, useEffect, useRef } from 'react';
3
- import { LayoutMenu } from '../LayoutMenu';
4
- import { SymbolSearchDialog } from '../SymbolSearchDialog';
5
- import { IndicatorsDialog } from '../IndicatorsDialog';
6
- // ─── Timeframe data ───────────────────────────────────────────────────────────
7
- export const DEFAULT_FAVORITES = ['1m', '5m', '15m', '30m', '1h', '4h', '1d', '1w'];
8
- const TF_LABELS = {
9
- '1m': '1 minute', '2m': '2 minutes', '3m': '3 minutes', '4m': '4 minutes',
10
- '5m': '5 minutes', '10m': '10 minutes', '15m': '15 minutes', '20m': '20 minutes',
11
- '30m': '30 minutes', '45m': '45 minutes',
12
- '1h': '1 hour', '2h': '2 hours', '3h': '3 hours', '4h': '4 hours',
13
- '6h': '6 hours', '8h': '8 hours', '12h': '12 hours',
14
- '1d': '1 day', '2d': '2 days', '3d': '3 days', '1w': '1 week',
15
- '2w': '2 weeks', '1M': '1 month', '3M': '3 months', '6M': '6 months', '12M': '12 months',
16
- };
17
- const TF_GROUPS_ALL = [
18
- { label: 'Minutes', items: ['1m', '2m', '3m', '4m', '5m', '10m', '15m', '20m', '30m', '45m'] },
19
- { label: 'Hours', items: ['1h', '2h', '3h', '4h', '6h', '8h', '12h'] },
20
- { label: 'Days', items: ['1d', '2d', '3d', '1w', '2w', '1M', '3M', '6M', '12M'] },
21
- ];
22
- // ─── Timeframe dropdown ───────────────────────────────────────────────────────
23
- function TimeframeDropdown({ timeframe, customTimeframes, favorites, onSelect, onToggleFavorite, onAddCustom, onClose, }) {
24
- const [collapsed, setCollapsed] = useState({});
25
- const [addingCustom, setAddingCustom] = useState(false);
26
- const [input, setInput] = useState('');
27
- const ref = useRef(null);
28
- useEffect(() => {
29
- const handler = (e) => {
30
- if (ref.current && !ref.current.contains(e.target))
31
- onClose();
32
- };
33
- document.addEventListener('mousedown', handler);
34
- return () => document.removeEventListener('mousedown', handler);
35
- }, [onClose]);
36
- const commit = () => {
37
- const val = input.trim();
38
- if (!val)
39
- return;
40
- onAddCustom(val);
41
- onSelect(val);
42
- setInput('');
43
- onClose();
44
- };
45
- const toggleGroup = (label) => setCollapsed((prev) => ({ ...prev, [label]: !prev[label] }));
46
- return (_jsxs("div", { ref: ref, className: "tf-dropdown", children: [_jsx("button", { className: "tf-dropdown-add-custom", onClick: () => setAddingCustom((a) => !a), children: "+ Add custom interval..." }), addingCustom && (_jsxs("div", { className: "tf-dropdown-add-row", children: [_jsx("input", { className: "tf-dropdown-input", type: "text", value: input, placeholder: "e.g. 2h, 45m", onChange: (e) => setInput(e.target.value), onKeyDown: (e) => { if (e.key === 'Enter')
47
- commit(); }, autoFocus: true }), _jsx("button", { className: "tf-dropdown-add-btn", disabled: !input.trim(), onClick: commit, children: "Add" })] })), TF_GROUPS_ALL.map((group) => (_jsxs("div", { children: [_jsxs("button", { className: "tf-dropdown-group-hdr", onClick: () => toggleGroup(group.label), children: [_jsx("span", { children: group.label }), _jsx("span", { className: `tf-dropdown-chevron${collapsed[group.label] ? ' collapsed' : ''}`, children: "\u2227" })] }), !collapsed[group.label] && group.items.map((tf) => (_jsxs("button", { className: "tf-dropdown-row", onClick: () => { onSelect(tf); onClose(); }, children: [_jsx("span", { children: TF_LABELS[tf] ?? tf }), _jsx("button", { className: "tf-star-btn", title: favorites.includes(tf) ? 'Remove from toolbar' : 'Add to toolbar', onClick: (e) => { e.stopPropagation(); onToggleFavorite(tf); }, children: _jsx("span", { className: `tf-star${favorites.includes(tf) ? ' favorited' : ''}`, children: "\u2605" }) })] }, tf)))] }, group.label))), customTimeframes.length > 0 && (_jsxs("div", { children: [_jsxs("button", { className: "tf-dropdown-group-hdr", onClick: () => toggleGroup('Custom'), children: [_jsx("span", { children: "Custom" }), _jsx("span", { className: `tf-dropdown-chevron${collapsed['Custom'] ? ' collapsed' : ''}`, children: "\u2227" })] }), !collapsed['Custom'] && customTimeframes.map((tf) => (_jsx("button", { className: "tf-dropdown-row", onClick: () => { onSelect(tf); onClose(); }, children: _jsx("span", { children: tf }) }, tf)))] }))] }));
48
- }
49
- export function TopToolbar({ symbol, timeframe, theme, customTimeframes, favorites, onSymbolChange, onTimeframeChange, onAddCustomTimeframe, onFavoritesChange, onAddIndicator, onToggleTheme, onCopyScreenshot, onDownloadScreenshot, onFullscreen, isFullscreen, currentLayoutName, currentLayoutId, autoSave, onSaveLayout, onLoadLayout, onRenameLayout, onCopyLayout, onToggleAutoSave, onDeleteLayout, onOpenLayoutInNewTab, onFetchLayouts, symbolResolver, showTradeButton, tradeDrawerOpen, onToggleTradeDrawer, }) {
50
- const [tfOpen, setTfOpen] = useState(false);
51
- const [symOpen, setSymOpen] = useState(false);
52
- const [indOpen, setIndOpen] = useState(false);
53
- const [ssOpen, setSsOpen] = useState(false);
54
- const ssRef = useRef(null);
55
- const tfRef = useRef(null);
56
- useEffect(() => {
57
- if (!ssOpen)
58
- return;
59
- const handler = (e) => {
60
- if (ssRef.current && !ssRef.current.contains(e.target))
61
- setSsOpen(false);
62
- };
63
- document.addEventListener('mousedown', handler);
64
- return () => document.removeEventListener('mousedown', handler);
65
- }, [ssOpen]);
66
- // Close dropdown on outside click is handled inside TimeframeDropdown itself.
67
- return (_jsxs("div", { style: {
68
- display: 'flex',
69
- alignItems: 'center',
70
- gap: 8,
71
- padding: '6px 12px',
72
- background: 'var(--toolbar-bg)',
73
- borderRadius: 8,
74
- flexShrink: 0,
75
- }, children: [_jsx("span", { style: { fontWeight: 700, letterSpacing: '-0.5px', color: 'var(--accent)' }, children: "ForgeCharts" }), _jsx("div", { className: "toolbar-sep" }), _jsxs("button", { className: "sym-trigger", onClick: () => setSymOpen(true), title: "Search symbols", children: [_jsxs("svg", { viewBox: "0 0 14 14", width: "12", height: "12", stroke: "currentColor", fill: "none", strokeWidth: "1.8", strokeLinecap: "round", children: [_jsx("circle", { cx: "5.5", cy: "5.5", r: "4" }), _jsx("line", { x1: "9", y1: "9", x2: "13", y2: "13" })] }), _jsx("span", { children: symbol }), _jsx("svg", { viewBox: "0 0 10 6", width: "8", height: "6", fill: "currentColor", children: _jsx("path", { d: "M0 0l5 6 5-6z" }) })] }), symOpen && (_jsx(SymbolSearchDialog, { current: symbol, onSelect: onSymbolChange, onClose: () => setSymOpen(false), symbolResolver: symbolResolver })), _jsx("div", { className: "toolbar-sep" }), _jsxs("div", { ref: tfRef, style: { display: 'flex', gap: 2, position: 'relative' }, children: [favorites.map((tf) => (_jsx("button", { className: tf === timeframe ? 'active' : undefined, onClick: () => onTimeframeChange(tf), children: tf }, tf))), !favorites.includes(timeframe) && timeframe && (_jsx("button", { className: "active", style: { fontStyle: 'italic' }, children: timeframe })), _jsx("button", { className: tfOpen ? 'active' : undefined, onClick: () => setTfOpen((o) => !o), title: "More timeframes", style: { fontSize: 11, padding: '4px 7px' }, children: "\u25BE" }), tfOpen && (_jsx(TimeframeDropdown, { timeframe: timeframe, customTimeframes: customTimeframes, favorites: favorites, onSelect: onTimeframeChange, onToggleFavorite: (tf) => {
76
- const next = favorites.includes(tf)
77
- ? favorites.filter((f) => f !== tf)
78
- : [...favorites, tf];
79
- onFavoritesChange(next);
80
- }, onAddCustom: onAddCustomTimeframe, onClose: () => setTfOpen(false) }))] }), _jsx("div", { className: "toolbar-sep" }), _jsxs("button", { className: `ind-trigger${indOpen ? ' active' : ''}`, onClick: () => setIndOpen((o) => !o), title: "Indicators", children: [_jsxs("svg", { viewBox: "0 0 16 16", width: "13", height: "13", stroke: "currentColor", fill: "none", strokeWidth: "1.6", strokeLinecap: "round", children: [_jsx("polyline", { points: "2,12 6,7 9,10 14,4" }), _jsx("line", { x1: "11", y1: "2", x2: "14", y2: "2" }), _jsx("line", { x1: "14", y1: "2", x2: "14", y2: "5" })] }), "Indicators"] }), indOpen && (_jsx(IndicatorsDialog, { onAdd: (config) => { onAddIndicator(config); }, onClose: () => setIndOpen(false) })), _jsxs("div", { style: { marginLeft: 'auto', display: 'flex', alignItems: 'center', gap: 4 }, children: [showTradeButton && (_jsxs(_Fragment, { children: [_jsxs("button", { className: `top-trade-btn${tradeDrawerOpen ? ' active' : ''}`, onClick: onToggleTradeDrawer, title: "Trade \u2014 Connect your broker", style: { display: 'inline-flex', alignItems: 'center', gap: 5, padding: '4px 8px', fontSize: 12 }, children: [_jsxs("svg", { viewBox: "0 0 16 16", width: "11", height: "11", fill: "none", stroke: "currentColor", strokeWidth: "1.6", children: [_jsx("rect", { x: "1.5", y: "3", width: "13", height: "10", rx: "1.5" }), _jsx("line", { x1: "5", y1: "8", x2: "11", y2: "8" }), _jsx("line", { x1: "8", y1: "5", x2: "8", y2: "11" })] }), "Trade"] }), _jsx("div", { className: "toolbar-sep" })] })), _jsx(LayoutMenu, { currentName: currentLayoutName, currentLayoutId: currentLayoutId, autoSave: autoSave, onFetchLayouts: onFetchLayouts, onSave: onSaveLayout, onLoad: onLoadLayout, onRename: onRenameLayout, onCopy: onCopyLayout, onToggleAutoSave: onToggleAutoSave, onDelete: onDeleteLayout, onOpenInNewTab: onOpenLayoutInNewTab }), _jsx("button", { onClick: onToggleTheme, title: `Switch to ${theme === 'dark' ? 'light' : 'dark'} mode`, style: { fontSize: 14, padding: '4px 8px' }, children: theme === 'dark' ? '☀' : '☾' }), _jsxs("div", { ref: ssRef, style: { position: 'relative' }, children: [_jsx("button", { className: ssOpen ? 'active' : undefined, onClick: () => setSsOpen((o) => !o), title: "Screenshot", style: { display: 'inline-flex', alignItems: 'center', padding: '4px 7px' }, children: _jsxs("svg", { viewBox: "0 0 16 16", width: "14", height: "14", stroke: "currentColor", fill: "none", strokeWidth: "1.5", children: [_jsx("rect", { x: "2", y: "4", width: "12", height: "9", rx: "1" }), _jsx("circle", { cx: "8", cy: "8.5", r: "2.5" }), _jsx("path", { d: "M6 4l1-2h2l1 2" })] }) }), ssOpen && (_jsxs("div", { className: "ss-dropdown", children: [_jsxs("button", { className: "ss-dropdown-item", onClick: () => { setSsOpen(false); onCopyScreenshot(); }, children: [_jsxs("svg", { viewBox: "0 0 16 16", width: "13", height: "13", stroke: "currentColor", fill: "none", strokeWidth: "1.5", children: [_jsx("rect", { x: "5", y: "5", width: "9", height: "9", rx: "1" }), _jsx("path", { d: "M3 11H2a1 1 0 01-1-1V2a1 1 0 011-1h8a1 1 0 011 1v1" })] }), "Copy to Clipboard"] }), _jsxs("button", { className: "ss-dropdown-item", onClick: () => { setSsOpen(false); onDownloadScreenshot(); }, children: [_jsxs("svg", { viewBox: "0 0 16 16", width: "13", height: "13", stroke: "currentColor", fill: "none", strokeWidth: "1.5", strokeLinecap: "round", children: [_jsx("line", { x1: "8", y1: "2", x2: "8", y2: "11" }), _jsx("polyline", { points: "4,7 8,11 12,7" }), _jsx("line", { x1: "2", y1: "14", x2: "14", y2: "14" })] }), "Download PNG"] })] }))] }), _jsx("button", { onClick: onFullscreen, title: isFullscreen ? 'Exit Fullscreen' : 'Fullscreen', style: { display: 'inline-flex', alignItems: 'center', padding: '4px 7px' }, children: isFullscreen ? (_jsx("svg", { viewBox: "0 0 16 16", width: "14", height: "14", stroke: "currentColor", fill: "none", strokeWidth: "1.5", children: _jsx("path", { d: "M6 2v4H2M10 2v4h4M10 14v-4h4M6 14v-4H2" }) })) : (_jsx("svg", { viewBox: "0 0 16 16", width: "14", height: "14", stroke: "currentColor", fill: "none", strokeWidth: "1.5", children: _jsx("path", { d: "M2 6V2h4M10 2h4v4M14 10v4h-4M6 14H2v-4" }) })) })] })] }));
81
- }
82
- //# sourceMappingURL=TopToolbar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TopToolbar.js","sourceRoot":"","sources":["../../../../src/react/workspace/toolbars/TopToolbar.tsx"],"names":[],"mappings":"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"}
@@ -1,98 +0,0 @@
1
- import { mapRange } from '@forgecharts/utils';
2
- /**
3
- * CandlestickRenderer — draws OHLCV data as Japanese candlesticks.
4
- * All rendering is pure Canvas 2D; no third-party dependencies.
5
- */
6
- export class CandlestickRenderer {
7
- _colors;
8
- constructor(colors) {
9
- this._colors = colors;
10
- }
11
- draw(ctx, bars, viewport, rect, options) {
12
- if (options.type !== 'candlestick' && options.type !== 'heikinashi' && options.type !== 'bar') {
13
- return;
14
- }
15
- const plotData = options.type === 'heikinashi' ? this._toHeikinAshi(bars) : bars;
16
- const upColor = 'upColor' in options ? (options.upColor ?? '#26a641') : '#26a641';
17
- const downColor = 'downColor' in options ? (options.downColor ?? '#f85149') : '#f85149';
18
- const wickUpColor = 'wickUpColor' in options ? (options.wickUpColor ?? upColor) : upColor;
19
- const wickDownColor = 'wickDownColor' in options ? (options.wickDownColor ?? downColor) : downColor;
20
- const borderVisible = 'borderVisible' in options ? (options.borderVisible ?? false) : false;
21
- const plotW = rect.width - 70; // price axis reserved
22
- const plotH = rect.height - 30; // time axis reserved
23
- // ── Bar pitch: pixels per candle ─────────────────────────────────────────
24
- // IMPORTANT: must be derived from the visible time range + candle interval,
25
- // NOT from total bar count. Using bar count means pitch shrinks as you pan
26
- // into history (more bars → narrower candles) and widens as you pan forward
27
- // (fewer bars visible → wider candles with gaps), which is wrong.
28
- // Infer candle interval from the median gap between consecutive bars.
29
- let candleInterval = 0;
30
- if (plotData.length >= 2) {
31
- const deltas = [];
32
- for (let i = 1; i < Math.min(plotData.length, 20); i++) {
33
- const d = plotData[i].time - plotData[i - 1].time;
34
- if (d > 0)
35
- deltas.push(d);
36
- }
37
- if (deltas.length > 0) {
38
- deltas.sort((a, b) => a - b);
39
- candleInterval = deltas[Math.floor(deltas.length / 2)];
40
- }
41
- }
42
- const visibleSpan = viewport.timeRange.to - viewport.timeRange.from;
43
- const pixelsPerSecond = visibleSpan > 0 ? plotW / visibleSpan : 1;
44
- const barPitch = candleInterval > 0
45
- ? candleInterval * pixelsPerSecond // correct: interval-based
46
- : plotW / Math.max(1, plotData.length); // fallback for edge cases
47
- const minBarWidth = 1;
48
- const maxBarWidth = 20;
49
- const gap = Math.max(1, Math.round(barPitch * 0.15));
50
- const barWidth = Math.min(maxBarWidth, Math.max(minBarWidth, Math.floor(barPitch) - gap));
51
- const halfBar = Math.max(0.5, barWidth / 2);
52
- for (const bar of plotData) {
53
- const x = mapRange(bar.time, viewport.timeRange.from, viewport.timeRange.to, 0, plotW);
54
- if (x < -barWidth || x > plotW + barWidth)
55
- continue;
56
- const yOpen = mapRange(bar.open, viewport.priceRange.max, viewport.priceRange.min, 0, plotH);
57
- const yClose = mapRange(bar.close, viewport.priceRange.max, viewport.priceRange.min, 0, plotH);
58
- const yHigh = mapRange(bar.high, viewport.priceRange.max, viewport.priceRange.min, 0, plotH);
59
- const yLow = mapRange(bar.low, viewport.priceRange.max, viewport.priceRange.min, 0, plotH);
60
- const bullish = bar.close >= bar.open;
61
- const bodyColor = bullish ? upColor : downColor;
62
- const bodyTop = Math.min(yOpen, yClose);
63
- const bodyBottom = Math.max(yOpen, yClose);
64
- const bodyH = Math.max(1, bodyBottom - bodyTop);
65
- // Wick
66
- ctx.beginPath();
67
- ctx.strokeStyle = bullish ? wickUpColor : wickDownColor;
68
- ctx.lineWidth = 1;
69
- ctx.moveTo(x, yHigh);
70
- ctx.lineTo(x, bodyTop);
71
- ctx.moveTo(x, bodyBottom);
72
- ctx.lineTo(x, yLow);
73
- ctx.stroke();
74
- // Body
75
- ctx.fillStyle = bodyColor;
76
- ctx.fillRect(x - halfBar, bodyTop, barWidth, bodyH);
77
- if (borderVisible) {
78
- ctx.strokeStyle = bodyColor;
79
- ctx.lineWidth = 1;
80
- ctx.strokeRect(x - halfBar, bodyTop, barWidth, bodyH);
81
- }
82
- }
83
- }
84
- _toHeikinAshi(bars) {
85
- const result = [];
86
- for (let i = 0; i < bars.length; i++) {
87
- const bar = bars[i];
88
- const prev = result[i - 1] ?? bar;
89
- const haClose = (bar.open + bar.high + bar.low + bar.close) / 4;
90
- const haOpen = (prev.open + prev.close) / 2;
91
- const haHigh = Math.max(bar.high, haOpen, haClose);
92
- const haLow = Math.min(bar.low, haOpen, haClose);
93
- result.push({ time: bar.time, open: haOpen, high: haHigh, low: haLow, close: haClose, volume: bar.volume });
94
- }
95
- return result;
96
- }
97
- }
98
- //# sourceMappingURL=CandlestickRenderer.js.map