@tradecanvas/chart 1.4.0 → 1.7.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/LICENSE +21 -21
- package/README.md +910 -858
- package/dist/Chart.d.ts +606 -23
- package/dist/Chart.d.ts.map +1 -1
- package/dist/DataManager.d.ts +5 -0
- package/dist/DataManager.d.ts.map +1 -1
- package/dist/HistoryPager.d.ts +58 -0
- package/dist/HistoryPager.d.ts.map +1 -0
- package/dist/LayoutSession-CTZB90NX.cjs +2 -0
- package/dist/LayoutSession-CTZB90NX.cjs.map +1 -0
- package/dist/LayoutSession-CWn3sdbs.js +3967 -0
- package/dist/LayoutSession-CWn3sdbs.js.map +1 -0
- package/dist/ThemeManager.d.ts +5 -1
- package/dist/ThemeManager.d.ts.map +1 -1
- package/dist/chartA11y.d.ts +59 -0
- package/dist/chartA11y.d.ts.map +1 -0
- package/dist/charts/ChartTypeStrategy.d.ts +5 -4
- package/dist/charts/ChartTypeStrategy.d.ts.map +1 -1
- package/dist/grid/ChartGrid.d.ts +6 -1
- package/dist/grid/ChartGrid.d.ts.map +1 -1
- package/dist/i18n-CiQ8EDVs.js +1469 -0
- package/dist/i18n-CiQ8EDVs.js.map +1 -0
- package/dist/i18n-WsLA9SmD.cjs +2 -0
- package/dist/i18n-WsLA9SmD.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +22 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -31
- package/dist/index.js.map +1 -1
- package/dist/indicatorLabel.d.ts +7 -0
- package/dist/indicatorLabel.d.ts.map +1 -0
- package/dist/layout/LayoutManager.d.ts +50 -0
- package/dist/layout/LayoutManager.d.ts.map +1 -1
- package/dist/layout/priceAxisWidth.d.ts +2 -0
- package/dist/layout/priceAxisWidth.d.ts.map +1 -1
- package/dist/regularHours.d.ts +10 -0
- package/dist/regularHours.d.ts.map +1 -0
- package/dist/state/LayoutSession.d.ts +101 -0
- package/dist/state/LayoutSession.d.ts.map +1 -0
- package/dist/state/layoutStorage.d.ts +46 -0
- package/dist/state/layoutStorage.d.ts.map +1 -0
- package/dist/trading/wireExecution.d.ts +7 -3
- package/dist/trading/wireExecution.d.ts.map +1 -1
- package/dist/widget/ChartWidget.d.ts +219 -10
- package/dist/widget/ChartWidget.d.ts.map +1 -1
- package/dist/widget/ChartWidgetGrid.d.ts +166 -0
- package/dist/widget/ChartWidgetGrid.d.ts.map +1 -0
- package/dist/widget/DrawingTemplateStore.d.ts +29 -8
- package/dist/widget/DrawingTemplateStore.d.ts.map +1 -1
- package/dist/widget/WatchlistStore.d.ts +65 -0
- package/dist/widget/WatchlistStore.d.ts.map +1 -0
- package/dist/widget/WidgetAccountPanel.d.ts +72 -0
- package/dist/widget/WidgetAccountPanel.d.ts.map +1 -0
- package/dist/widget/WidgetAlertsPanel.d.ts +50 -3
- package/dist/widget/WidgetAlertsPanel.d.ts.map +1 -1
- package/dist/widget/WidgetBracketBar.d.ts +3 -1
- package/dist/widget/WidgetBracketBar.d.ts.map +1 -1
- package/dist/widget/WidgetChartNav.d.ts +36 -0
- package/dist/widget/WidgetChartNav.d.ts.map +1 -0
- package/dist/widget/WidgetCommandPalette.d.ts +3 -1
- package/dist/widget/WidgetCommandPalette.d.ts.map +1 -1
- package/dist/widget/WidgetContextMenu.d.ts +40 -0
- package/dist/widget/WidgetContextMenu.d.ts.map +1 -0
- package/dist/widget/WidgetDataWindow.d.ts +3 -1
- package/dist/widget/WidgetDataWindow.d.ts.map +1 -1
- package/dist/widget/WidgetDepthLadder.d.ts +3 -1
- package/dist/widget/WidgetDepthLadder.d.ts.map +1 -1
- package/dist/widget/WidgetDrawingSettings.d.ts +108 -0
- package/dist/widget/WidgetDrawingSettings.d.ts.map +1 -0
- package/dist/widget/WidgetDrawingSidebar.d.ts +14 -1
- package/dist/widget/WidgetDrawingSidebar.d.ts.map +1 -1
- package/dist/widget/WidgetDrawingStyle.d.ts +3 -1
- package/dist/widget/WidgetDrawingStyle.d.ts.map +1 -1
- package/dist/widget/WidgetDropdown.d.ts.map +1 -1
- package/dist/widget/WidgetGoToDate.d.ts +5 -4
- package/dist/widget/WidgetGoToDate.d.ts.map +1 -1
- package/dist/widget/WidgetHistoryPill.d.ts +23 -0
- package/dist/widget/WidgetHistoryPill.d.ts.map +1 -0
- package/dist/widget/WidgetHotkeySheet.d.ts.map +1 -1
- package/dist/widget/WidgetIndicatorLegend.d.ts +31 -1
- package/dist/widget/WidgetIndicatorLegend.d.ts.map +1 -1
- package/dist/widget/WidgetIndicatorSettings.d.ts +62 -7
- package/dist/widget/WidgetIndicatorSettings.d.ts.map +1 -1
- package/dist/widget/WidgetIntervalInput.d.ts +34 -0
- package/dist/widget/WidgetIntervalInput.d.ts.map +1 -0
- package/dist/widget/WidgetLayoutsDialog.d.ts +39 -0
- package/dist/widget/WidgetLayoutsDialog.d.ts.map +1 -0
- package/dist/widget/WidgetLayoutsUI.d.ts +37 -0
- package/dist/widget/WidgetLayoutsUI.d.ts.map +1 -0
- package/dist/widget/WidgetNamePrompt.d.ts +31 -0
- package/dist/widget/WidgetNamePrompt.d.ts.map +1 -0
- package/dist/widget/WidgetObjectTree.d.ts +21 -3
- package/dist/widget/WidgetObjectTree.d.ts.map +1 -1
- package/dist/widget/WidgetOrderTicket.d.ts +49 -0
- package/dist/widget/WidgetOrderTicket.d.ts.map +1 -0
- package/dist/widget/WidgetReplayBar.d.ts +15 -0
- package/dist/widget/WidgetReplayBar.d.ts.map +1 -1
- package/dist/widget/WidgetSettings.d.ts +13 -1
- package/dist/widget/WidgetSettings.d.ts.map +1 -1
- package/dist/widget/WidgetStatusBar.d.ts +3 -0
- package/dist/widget/WidgetStatusBar.d.ts.map +1 -1
- package/dist/widget/WidgetStyles.d.ts +3 -1
- package/dist/widget/WidgetStyles.d.ts.map +1 -1
- package/dist/widget/WidgetSymbolInfo.d.ts +64 -0
- package/dist/widget/WidgetSymbolInfo.d.ts.map +1 -0
- package/dist/widget/WidgetSymbolSearch.d.ts +26 -5
- package/dist/widget/WidgetSymbolSearch.d.ts.map +1 -1
- package/dist/widget/WidgetToolbar.d.ts +30 -1
- package/dist/widget/WidgetToolbar.d.ts.map +1 -1
- package/dist/widget/WidgetWatchlist.d.ts +53 -13
- package/dist/widget/WidgetWatchlist.d.ts.map +1 -1
- package/dist/widget/chartMenu.d.ts +40 -0
- package/dist/widget/chartMenu.d.ts.map +1 -0
- package/dist/widget/drawingMenu.d.ts +21 -0
- package/dist/widget/drawingMenu.d.ts.map +1 -0
- package/dist/widget/focusTrap.d.ts +8 -0
- package/dist/widget/focusTrap.d.ts.map +1 -0
- package/dist/widget/i18n.d.ts +20 -89
- package/dist/widget/i18n.d.ts.map +1 -1
- package/dist/widget/iconSet.d.ts.map +1 -1
- package/dist/widget/index.cjs +4294 -3028
- package/dist/widget/index.cjs.map +1 -1
- package/dist/widget/index.d.ts +15 -1
- package/dist/widget/index.d.ts.map +1 -1
- package/dist/widget/index.js +6326 -1185
- package/dist/widget/index.js.map +1 -1
- package/dist/widget/indicatorTemplates.d.ts +24 -0
- package/dist/widget/indicatorTemplates.d.ts.map +1 -0
- package/dist/widget/keyTarget.d.ts +11 -0
- package/dist/widget/keyTarget.d.ts.map +1 -0
- package/dist/widget/legendValues.d.ts +11 -6
- package/dist/widget/legendValues.d.ts.map +1 -1
- package/dist/widget/locales/ar.d.ts +4 -0
- package/dist/widget/locales/ar.d.ts.map +1 -0
- package/dist/widget/locales/de.d.ts +4 -0
- package/dist/widget/locales/de.d.ts.map +1 -0
- package/dist/widget/locales/en.d.ts +722 -0
- package/dist/widget/locales/en.d.ts.map +1 -0
- package/dist/widget/locales/es.d.ts +4 -0
- package/dist/widget/locales/es.d.ts.map +1 -0
- package/dist/widget/locales/fr.d.ts +4 -0
- package/dist/widget/locales/fr.d.ts.map +1 -0
- package/dist/widget/locales/he.d.ts +4 -0
- package/dist/widget/locales/he.d.ts.map +1 -0
- package/dist/widget/locales/id.d.ts +4 -0
- package/dist/widget/locales/id.d.ts.map +1 -0
- package/dist/widget/locales/index.cjs +2 -0
- package/dist/widget/locales/index.cjs.map +1 -0
- package/dist/widget/locales/index.d.ts +33 -0
- package/dist/widget/locales/index.d.ts.map +1 -0
- package/dist/widget/locales/index.js +10089 -0
- package/dist/widget/locales/index.js.map +1 -0
- package/dist/widget/locales/ja.d.ts +4 -0
- package/dist/widget/locales/ja.d.ts.map +1 -0
- package/dist/widget/locales/ko.d.ts +4 -0
- package/dist/widget/locales/ko.d.ts.map +1 -0
- package/dist/widget/locales/pt.d.ts +4 -0
- package/dist/widget/locales/pt.d.ts.map +1 -0
- package/dist/widget/locales/ru.d.ts +4 -0
- package/dist/widget/locales/ru.d.ts.map +1 -0
- package/dist/widget/locales/th.d.ts +4 -0
- package/dist/widget/locales/th.d.ts.map +1 -0
- package/dist/widget/locales/tr.d.ts +4 -0
- package/dist/widget/locales/tr.d.ts.map +1 -0
- package/dist/widget/locales/vi.d.ts +4 -0
- package/dist/widget/locales/vi.d.ts.map +1 -0
- package/dist/widget/locales/zh.d.ts +4 -0
- package/dist/widget/locales/zh.d.ts.map +1 -0
- package/dist/widget/locales/zhHant.d.ts +4 -0
- package/dist/widget/locales/zhHant.d.ts.map +1 -0
- package/dist/widget/orderTicket.d.ts +27 -0
- package/dist/widget/orderTicket.d.ts.map +1 -0
- package/dist/widget/settingsControls.d.ts +24 -0
- package/dist/widget/settingsControls.d.ts.map +1 -0
- package/dist/widget/types.d.ts +182 -6
- package/dist/widget/types.d.ts.map +1 -1
- package/dist/widget/widgetConfig.d.ts.map +1 -1
- package/dist/widget/widgetLayout.d.ts +22 -0
- package/dist/widget/widgetLayout.d.ts.map +1 -0
- package/dist/widget/widgetLocales.d.ts +17 -0
- package/dist/widget/widgetLocales.d.ts.map +1 -0
- package/dist/widget/widgetTimeframes.d.ts +8 -0
- package/dist/widget/widgetTimeframes.d.ts.map +1 -1
- package/dist/widget/widgetTimezones.d.ts +32 -0
- package/dist/widget/widgetTimezones.d.ts.map +1 -0
- package/dist/widget/widgetUI.d.ts +126 -0
- package/dist/widget/widgetUI.d.ts.map +1 -0
- package/package.json +8 -3
- package/dist/DragDropImporter-C5kgfbET.cjs +0 -2
- package/dist/DragDropImporter-C5kgfbET.cjs.map +0 -1
- package/dist/DragDropImporter-Dd9Mud5J.js +0 -2099
- package/dist/DragDropImporter-Dd9Mud5J.js.map +0 -1
- package/dist/charts/IndicatorPriceRange.d.ts +0 -20
- package/dist/charts/IndicatorPriceRange.d.ts.map +0 -1
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import { Theme, TimeFrame, DepthData, DataSeries } from '@tradecanvas/commons';
|
|
1
|
+
import { Quote, Theme, TimeFrame, DepthData, DataSeries } from '@tradecanvas/commons';
|
|
2
2
|
import { Chart } from '../Chart.js';
|
|
3
3
|
import { ChartWidgetOptions } from './types.js';
|
|
4
4
|
import { WatchlistEntry } from './WidgetWatchlist.js';
|
|
5
|
+
import { WatchlistList } from './WatchlistStore.js';
|
|
6
|
+
import { indicatorChipLabel } from '../indicatorLabel.js';
|
|
7
|
+
import { ResolvedWidgetUI, WidgetUIPreset, WidgetUITheme } from './widgetUI.js';
|
|
8
|
+
import { WidgetLayoutContent } from './widgetLayout.js';
|
|
9
|
+
import { LayoutSession } from '../state/LayoutSession.js';
|
|
5
10
|
export declare class ChartWidget {
|
|
6
11
|
private chart;
|
|
7
12
|
private state;
|
|
@@ -20,7 +25,8 @@ export declare class ChartWidget {
|
|
|
20
25
|
*/
|
|
21
26
|
private readonly portal;
|
|
22
27
|
private readonly overlayHost;
|
|
23
|
-
|
|
28
|
+
/** Stops following presses for the page's shortcuts (see keyTarget). */
|
|
29
|
+
private unregisterKeys;
|
|
24
30
|
private readonly onFullscreenChange;
|
|
25
31
|
private commandPalette;
|
|
26
32
|
private symbolSearch;
|
|
@@ -31,6 +37,29 @@ export declare class ChartWidget {
|
|
|
31
37
|
private objectTree;
|
|
32
38
|
private indicatorSettings;
|
|
33
39
|
private drawingStyle;
|
|
40
|
+
private drawingSettings;
|
|
41
|
+
private drawingMenu;
|
|
42
|
+
private chartMenu;
|
|
43
|
+
/** The pane a chart menu was opened on (its scale switches act on it). */
|
|
44
|
+
private menuPane;
|
|
45
|
+
/** Whether the chart menu offers a download of the data. */
|
|
46
|
+
private canExport;
|
|
47
|
+
/** The latest fetch of each symbol the chart's indicators read. */
|
|
48
|
+
private symbolLoads;
|
|
49
|
+
/** The widget's look. */
|
|
50
|
+
private ui;
|
|
51
|
+
/** The legend row's "more" menu: move the indicator to another pane. */
|
|
52
|
+
private legendMenu;
|
|
53
|
+
private templates;
|
|
54
|
+
private templatePrompt;
|
|
55
|
+
private intervalInput;
|
|
56
|
+
/** The note shown over a signal marker under the pointer. */
|
|
57
|
+
private markerTip;
|
|
58
|
+
private accountPanel;
|
|
59
|
+
private orderTicket;
|
|
60
|
+
private accountFrame;
|
|
61
|
+
private layoutSession;
|
|
62
|
+
private layoutsUI;
|
|
34
63
|
private bracketBar;
|
|
35
64
|
private alertNotifier;
|
|
36
65
|
private depthLadder;
|
|
@@ -41,6 +70,8 @@ export declare class ChartWidget {
|
|
|
41
70
|
private favoritesStore;
|
|
42
71
|
/** Timeframes pinned to the toolbar (same store shape as drawing favourites). */
|
|
43
72
|
private timeframeFavorites;
|
|
73
|
+
/** Intervals the user typed in the timeframe menu. */
|
|
74
|
+
private customTimeframes;
|
|
44
75
|
/** Timeframes on offer, shortest first. */
|
|
45
76
|
private timeframes;
|
|
46
77
|
private watchlist;
|
|
@@ -49,9 +80,32 @@ export declare class ChartWidget {
|
|
|
49
80
|
/** Per-symbol refPrice explicitly pushed by the host via `setWatchlistEntry` — takes precedence over `sessionRefPrice`. */
|
|
50
81
|
private hostWatchlistRefPrice;
|
|
51
82
|
private watchlistInterval;
|
|
83
|
+
private watchlistStore;
|
|
84
|
+
/** The list follows `setSymbols` (no lists given, none kept). */
|
|
85
|
+
private watchlistFromSymbols;
|
|
86
|
+
private quoteSource;
|
|
87
|
+
private stopQuotes;
|
|
88
|
+
/** The symbols quotes are coming for, joined. */
|
|
89
|
+
private quotedKey;
|
|
90
|
+
/** The latest quote of each symbol. */
|
|
91
|
+
private quotes;
|
|
92
|
+
private symbolInfoPanel;
|
|
93
|
+
/** Bumped by each news request: a late answer for an earlier symbol is dropped. */
|
|
94
|
+
private newsRequest;
|
|
95
|
+
/** Headlines per symbol, kept a few minutes. */
|
|
96
|
+
private newsCache;
|
|
97
|
+
private marketTimer;
|
|
98
|
+
private chartNav;
|
|
99
|
+
/** Bars on screen, for the navigation's scroll step. */
|
|
100
|
+
private visibleBarCount;
|
|
52
101
|
private replayPollInterval;
|
|
53
102
|
/** Bars revealed per second. */
|
|
54
103
|
private replaySpeed;
|
|
104
|
+
/** `'bar'`, or the finer interval a replay steps through. */
|
|
105
|
+
private replayStep;
|
|
106
|
+
private replayStartSeq;
|
|
107
|
+
/** Finer bars fetched or built for the last replay in steps. */
|
|
108
|
+
private replayStepsCache;
|
|
55
109
|
/** While picking the start bar: shades the bars right of the pointer. */
|
|
56
110
|
private replayShade;
|
|
57
111
|
private layoutKeyPrefix;
|
|
@@ -60,6 +114,7 @@ export declare class ChartWidget {
|
|
|
60
114
|
private root;
|
|
61
115
|
private chartContainer;
|
|
62
116
|
private loading;
|
|
117
|
+
private historyPill;
|
|
63
118
|
/** Bumped per stream connect; a connect that is no longer the latest leaves the UI to the newer one. */
|
|
64
119
|
private connectSeq;
|
|
65
120
|
/** Bumped per local resample and widget.setData; a deferred local switch that is no longer the latest is skipped. */
|
|
@@ -70,6 +125,8 @@ export declare class ChartWidget {
|
|
|
70
125
|
private options;
|
|
71
126
|
private symbols;
|
|
72
127
|
private settingsState;
|
|
128
|
+
/** What Reset in the settings panel goes back to: the defaults, as the host's features set them. */
|
|
129
|
+
private settingsDefaults;
|
|
73
130
|
private t;
|
|
74
131
|
private adapter;
|
|
75
132
|
private boundGlobalKeydown;
|
|
@@ -79,6 +136,39 @@ export declare class ChartWidget {
|
|
|
79
136
|
constructor(container: HTMLElement, options?: ChartWidgetOptions);
|
|
80
137
|
/** Replace the searchable symbol catalog. Does not change the active symbol. */
|
|
81
138
|
setSymbols(symbols: string[]): void;
|
|
139
|
+
/** Every watchlist, in order. */
|
|
140
|
+
getWatchlists(): WatchlistList[];
|
|
141
|
+
/** The shown watchlist's id, or null without a watchlist. */
|
|
142
|
+
getActiveWatchlist(): string | null;
|
|
143
|
+
/** Replace every watchlist (and which one shows). */
|
|
144
|
+
setWatchlists(lists: WatchlistList[], activeList?: string): void;
|
|
145
|
+
setActiveWatchlist(id: string): void;
|
|
146
|
+
/** Add a symbol to a watchlist (the shown one by default). */
|
|
147
|
+
addToWatchlist(symbol: string, listId?: string): void;
|
|
148
|
+
removeFromWatchlist(symbol: string, listId?: string): void;
|
|
149
|
+
/**
|
|
150
|
+
* Quotes for the watchlist's rows (and `getQuote`), from your own feed.
|
|
151
|
+
* What isn't a quote (no symbol, no finite last price) is left out.
|
|
152
|
+
*/
|
|
153
|
+
setQuotes(quotes: readonly Quote[]): void;
|
|
154
|
+
/** The latest quote of a symbol, from the quote source or `setQuotes`. */
|
|
155
|
+
getQuote(symbol: string): Quote | null;
|
|
156
|
+
/** Open or close the symbol info panel (toggle when `open` is left out). */
|
|
157
|
+
toggleSymbolInfo(open?: boolean): void;
|
|
158
|
+
/** The market's status in the status bar, and the panel when it's open. */
|
|
159
|
+
private refreshMarket;
|
|
160
|
+
private refreshSymbolInfo;
|
|
161
|
+
private symbolInfoView;
|
|
162
|
+
/** Headlines for the chart's symbol into the open panel; cached a few minutes. */
|
|
163
|
+
private loadNews;
|
|
164
|
+
/** The BCP 47 tag numbers in the panels are written in. */
|
|
165
|
+
private intlLocale;
|
|
166
|
+
/** The language words in the panels are written in ("in 3 hours", weekday names): the widget's. */
|
|
167
|
+
private textLocale;
|
|
168
|
+
private createWatchlist;
|
|
169
|
+
/** Quotes for the shown list's symbols: a new subscription when they change. */
|
|
170
|
+
private followQuotes;
|
|
171
|
+
private takeQuotes;
|
|
82
172
|
setSymbol(symbol: string): Promise<void>;
|
|
83
173
|
/**
|
|
84
174
|
* Push an entry into the watchlist (e.g., from your own WebSocket).
|
|
@@ -95,17 +185,72 @@ export declare class ChartWidget {
|
|
|
95
185
|
setTimeframe(tf: TimeFrame): Promise<void>;
|
|
96
186
|
setTheme(theme: import('@tradecanvas/commons').ThemeName | Theme): void;
|
|
97
187
|
getChart(): Chart;
|
|
188
|
+
/**
|
|
189
|
+
* Change the widget's look: a preset (`'studio'`, `'terminal'`,
|
|
190
|
+
* `'capsule'`) or your theme over one. Colours stay with `setTheme`.
|
|
191
|
+
*/
|
|
192
|
+
setUI(theme: WidgetUIPreset | WidgetUITheme): void;
|
|
193
|
+
/** The widget's look, every token set. */
|
|
194
|
+
getUI(): ResolvedWidgetUI;
|
|
195
|
+
/** The chart's own tags and pills take the look's corners. */
|
|
196
|
+
private applyChartShapes;
|
|
98
197
|
destroy(): void;
|
|
99
198
|
private handleSymbolClick;
|
|
199
|
+
/** The host's symbol search, else the adapter's; none filters `symbols`. */
|
|
200
|
+
private symbolSearchFn;
|
|
100
201
|
private handleTimeframe;
|
|
101
202
|
/** Fill the screen with the widget, or leave fullscreen. */
|
|
102
203
|
toggleFullscreen(): void;
|
|
103
|
-
/**
|
|
104
|
-
private
|
|
204
|
+
/** A drawing tool's name in the widget's language. */
|
|
205
|
+
private drawingToolName;
|
|
206
|
+
/** Open a drawing's settings (double-click on it, or the object tree's settings button). */
|
|
207
|
+
private openDrawingSettings;
|
|
208
|
+
/** Add a "price crosses this drawing" alert and say so. */
|
|
209
|
+
private addDrawingAlert;
|
|
210
|
+
/** The menu of a right-clicked drawing; the chart has selected it (and its group) by now. */
|
|
211
|
+
private openDrawingMenu;
|
|
212
|
+
private runDrawingMenuAction;
|
|
213
|
+
/** What the chart's menus can offer here, and how the chart is set now. */
|
|
214
|
+
private chartMenuContext;
|
|
215
|
+
/**
|
|
216
|
+
* Open a chart menu at (x, y) in the chart's pixels, the host's own entries
|
|
217
|
+
* last; nothing when it has no entries.
|
|
218
|
+
*/
|
|
219
|
+
private openChartMenu;
|
|
220
|
+
/**
|
|
221
|
+
* A button of your own on the toolbar: an icon (built-in or yours), text,
|
|
222
|
+
* a switch. `null` without a toolbar.
|
|
223
|
+
*/
|
|
224
|
+
addToolbarButton(spec: import('./types.js').ToolbarButtonSpec): import('./types.js').ToolbarButtonHandle | null;
|
|
225
|
+
private runChartMenuAction;
|
|
226
|
+
/** Open or close the account panel (no argument: the other way from now). */
|
|
227
|
+
toggleAccountPanel(open?: boolean): void;
|
|
228
|
+
/** The order ticket, at a price from the chart (or the market). */
|
|
229
|
+
private openOrderTicket;
|
|
230
|
+
/** Redraw the account panel once a frame at most (ticks, fills and order changes come in bursts). */
|
|
231
|
+
private refreshAccountSoon;
|
|
232
|
+
private refreshAccount;
|
|
233
|
+
/** Ask for a limit or stop order at `price` (one unit), and say so. */
|
|
234
|
+
private placeOrderAt;
|
|
235
|
+
/** The display timezone from the settings; 'exchange' is the zone the chart resolved it to. */
|
|
236
|
+
private displayTimezone;
|
|
105
237
|
private toggleGoToDate;
|
|
106
238
|
private goToWallTime;
|
|
107
239
|
/** Pinned timeframes that are still on offer, shortest first. */
|
|
108
240
|
private pinnedTimeframes;
|
|
241
|
+
/** The timeframe menu's rows, typed intervals marked so they can be removed. */
|
|
242
|
+
private timeframeMenu;
|
|
243
|
+
/** A typed interval: switch to it, adding and pinning it when it is new. False when it isn't one. */
|
|
244
|
+
private handleAddTimeframe;
|
|
245
|
+
/** A note by a signal marker: its source or label, side, confidence, price and time; null hides it. */
|
|
246
|
+
private showMarkerTip;
|
|
247
|
+
/** A typed interval: one on offer is picked; another joins the menu (not the toolbar's pins). */
|
|
248
|
+
private selectTypedTimeframe;
|
|
249
|
+
/** Put a template's indicators in place of the chart's (one undo step). */
|
|
250
|
+
private applyIndicatorTemplate;
|
|
251
|
+
/** Save the chart's indicators as a template, asking for its name. */
|
|
252
|
+
private promptSaveIndicatorTemplate;
|
|
253
|
+
private handleRemoveTimeframe;
|
|
109
254
|
private handleToggleTimeframeFavorite;
|
|
110
255
|
/**
|
|
111
256
|
* Load the widget's base series. Prefer this over `getChart().setData()` so
|
|
@@ -144,18 +289,35 @@ export declare class ChartWidget {
|
|
|
144
289
|
private openIndicatorSettings;
|
|
145
290
|
private refreshObjects;
|
|
146
291
|
private handleAddCompare;
|
|
147
|
-
/**
|
|
148
|
-
|
|
292
|
+
/** How to compare with `symbol`: a menu by the chart's top left. */
|
|
293
|
+
private pickCompareWay;
|
|
294
|
+
/**
|
|
295
|
+
* Compare with another symbol: its percent change on the price scale
|
|
296
|
+
* (`'percent'`, the default), its price on a scale of its own (`'scale'`)
|
|
297
|
+
* or in a pane of its own (`'pane'`), or the spread or ratio of this
|
|
298
|
+
* symbol to it (`'spread'`, `'ratio'`). Its bars come through the adapter.
|
|
299
|
+
*/
|
|
300
|
+
addCompareSymbol(symbol: string, way?: CompareWay): Promise<void>;
|
|
149
301
|
private handleRemoveCompare;
|
|
302
|
+
/**
|
|
303
|
+
* Bars of a symbol the chart's indicators read (a compare on its own
|
|
304
|
+
* scale, a spread), at the chart's interval. A later interval wins.
|
|
305
|
+
*/
|
|
306
|
+
private loadSymbolSeries;
|
|
150
307
|
/** Refetch every comparison overlay at the current symbol/timeframe. */
|
|
151
308
|
private refetchCompares;
|
|
152
309
|
private refreshAlerts;
|
|
310
|
+
private alertListItem;
|
|
311
|
+
/** An alert in words, for a toast or a notification: "Price crossing EMA 20", "RSI greater than 70". */
|
|
312
|
+
private alertText;
|
|
153
313
|
/** Price + every active indicator line, as selectable alert sources. */
|
|
154
314
|
private buildAlertSources;
|
|
155
315
|
/** Latest value for an alert source channel (price or indicator line). */
|
|
156
316
|
private getAlertChannelValue;
|
|
157
317
|
private formatAlertPrice;
|
|
318
|
+
/** The user picked a chart type: applied, and undoable. */
|
|
158
319
|
private handleChartType;
|
|
320
|
+
private applyChartType;
|
|
159
321
|
/**
|
|
160
322
|
* Add another instance — picking EMA twice gives two EMAs (e.g. 20 and 50
|
|
161
323
|
* once their settings are changed). Remove one from its chip.
|
|
@@ -166,8 +328,10 @@ export declare class ChartWidget {
|
|
|
166
328
|
private buildCommandItems;
|
|
167
329
|
private handleAction;
|
|
168
330
|
private handleDrawingTool;
|
|
331
|
+
/** The cursor button: no tool, no eraser, no zoom box. */
|
|
169
332
|
private handleCancelDrawing;
|
|
170
333
|
private handleToggleStayInDrawing;
|
|
334
|
+
/** The magnet button goes off → weak → strong → off. */
|
|
171
335
|
private handleToggleMagnet;
|
|
172
336
|
private handleToggleTheme;
|
|
173
337
|
private openSettings;
|
|
@@ -177,6 +341,25 @@ export declare class ChartWidget {
|
|
|
177
341
|
* exposed so apps can post their own (e.g. "alert triggered at 64,200").
|
|
178
342
|
*/
|
|
179
343
|
toast(message: string, kind?: 'info' | 'error'): void;
|
|
344
|
+
/** Named layouts: save, open, rename, delete, auto-save. `null` with `layouts: false`. */
|
|
345
|
+
getLayoutSession(): LayoutSession | null;
|
|
346
|
+
/** The symbol showing. */
|
|
347
|
+
getSymbol(): string;
|
|
348
|
+
/** The interval showing. */
|
|
349
|
+
getTimeframe(): TimeFrame;
|
|
350
|
+
/** This chart as a layout: symbol, interval, scale and the chart's state (no theme). A copy, free to keep. */
|
|
351
|
+
captureLayout(): WidgetLayoutContent;
|
|
352
|
+
/** Show a layout from `captureLayout()`. */
|
|
353
|
+
restoreLayout(content: WidgetLayoutContent): Promise<void>;
|
|
354
|
+
/** `captureLayout()` as JSON. */
|
|
355
|
+
getLayoutContent(): string;
|
|
356
|
+
/** Show a layout from `getLayoutContent()`; `false` when it is not one. */
|
|
357
|
+
applyLayoutContent(content: string): Promise<boolean>;
|
|
358
|
+
private setupLayouts;
|
|
359
|
+
/** Save into the open layout, or ask for a name when there is none. */
|
|
360
|
+
saveLayout(): Promise<void>;
|
|
361
|
+
/** Open a saved layout by id; `false` when it could not be. */
|
|
362
|
+
openLayout(id: string): Promise<boolean>;
|
|
180
363
|
/**
|
|
181
364
|
* Wipe the layout saved for `symbol` (or the active symbol if omitted).
|
|
182
365
|
* Useful as an "Reset layout" command in user-facing menus.
|
|
@@ -202,6 +385,10 @@ export declare class ChartWidget {
|
|
|
202
385
|
replayFrom(index: number, play?: boolean): void;
|
|
203
386
|
/** Cut the chart at `index` and wait paused (or play at once). */
|
|
204
387
|
private startReplayAt;
|
|
388
|
+
/** Finer intervals a replay can step through: they divide the chart's, and the feed (or the bars loaded) has them. */
|
|
389
|
+
private replayStepOptions;
|
|
390
|
+
/** The finer bars for a replay in `tf` steps: from the feed, or built from the bars loaded. Null when there are none. */
|
|
391
|
+
private replayStepsFor;
|
|
205
392
|
/** Bars available to replay: the whole series, not the slice on screen. */
|
|
206
393
|
private replayTotal;
|
|
207
394
|
/** Mirror the replay engine in the bar; close it if the session ended elsewhere. */
|
|
@@ -215,19 +402,41 @@ export declare class ChartWidget {
|
|
|
215
402
|
private teardownReplayUi;
|
|
216
403
|
private applySettings;
|
|
217
404
|
private resetSettings;
|
|
405
|
+
/**
|
|
406
|
+
* A settings change the user made: applied, and put in the chart's undo
|
|
407
|
+
* history with its drawings and indicators. A burst on the same settings
|
|
408
|
+
* (a colour dragged across the picker) is one step.
|
|
409
|
+
*/
|
|
410
|
+
private changeSettings;
|
|
411
|
+
/** Settings back as they were (an undo or redo), shown in the settings if they're open. */
|
|
412
|
+
private restoreSettings;
|
|
218
413
|
private connectStream;
|
|
219
414
|
/** Redraw the on-chart indicator list on the next frame (coalesced). */
|
|
220
415
|
private scheduleLegend;
|
|
221
416
|
private renderLegend;
|
|
417
|
+
/** A pane's button on the chart. */
|
|
418
|
+
private runPaneAction;
|
|
419
|
+
/**
|
|
420
|
+
* An indicator's "more" menu: into the pane above or below it (the price
|
|
421
|
+
* pane at the top), a pane of its own, back to the price pane; then its
|
|
422
|
+
* settings and remove.
|
|
423
|
+
*/
|
|
424
|
+
private openLegendMenu;
|
|
222
425
|
private updateUI;
|
|
223
426
|
private resolveIsDark;
|
|
224
427
|
private resolveTheme;
|
|
225
428
|
private isColorDark;
|
|
226
429
|
}
|
|
430
|
+
export { indicatorChipLabel };
|
|
431
|
+
type ActiveIndicator = ReturnType<Chart['getActiveIndicators']>[number];
|
|
432
|
+
/** How `addCompareSymbol` compares: percent change on the price scale, its own scale or pane, spread, ratio. */
|
|
433
|
+
export type CompareWay = 'percent' | 'scale' | 'pane' | 'spread' | 'ratio';
|
|
227
434
|
/**
|
|
228
|
-
*
|
|
229
|
-
*
|
|
230
|
-
* same indicator can be told apart.
|
|
435
|
+
* The lines `instanceId` can be computed from: every drawn line of the other
|
|
436
|
+
* indicators, except those that already read from it (that would be a loop).
|
|
231
437
|
*/
|
|
232
|
-
export declare function
|
|
438
|
+
export declare function lineSourcesFor(instanceId: string, active: readonly ActiveIndicator[]): {
|
|
439
|
+
value: string;
|
|
440
|
+
label: string;
|
|
441
|
+
}[];
|
|
233
442
|
//# sourceMappingURL=ChartWidget.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartWidget.d.ts","sourceRoot":"","sources":["../../src/widget/ChartWidget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ChartWidget.d.ts","sourceRoot":"","sources":["../../src/widget/ChartWidget.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { DataAdapter, Theme, ThemeName } from '@tradecanvas/commons';
|
|
2
|
+
import { ChartWidget } from './ChartWidget.js';
|
|
3
|
+
import { ChartWidgetOptions, WidgetLayoutsOptions } from './types.js';
|
|
4
|
+
import { GridLayout } from '../grid/ChartGrid.js';
|
|
5
|
+
import { LayoutSession } from '../state/LayoutSession.js';
|
|
6
|
+
import { WidgetLayoutContent } from './widgetLayout.js';
|
|
7
|
+
import { ResolvedWidgetUI, WidgetUIPreset, WidgetUITheme } from './widgetUI.js';
|
|
8
|
+
/** What the charts of a grid follow from each other. */
|
|
9
|
+
export interface WidgetGridSync {
|
|
10
|
+
/** A new symbol on one chart goes to all. */
|
|
11
|
+
symbol: boolean;
|
|
12
|
+
/** A new interval on one chart goes to all. */
|
|
13
|
+
interval: boolean;
|
|
14
|
+
/** The crosshair's time shows on every chart. */
|
|
15
|
+
crosshair: boolean;
|
|
16
|
+
/** Scrolling and zooming one chart moves the others to the same times. */
|
|
17
|
+
time: boolean;
|
|
18
|
+
/** Drawings are copied to the charts showing the same symbol. */
|
|
19
|
+
drawings: boolean;
|
|
20
|
+
/** A replay on one chart replays the others to the same time. */
|
|
21
|
+
replay: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare const DEFAULT_GRID_SYNC: Readonly<WidgetGridSync>;
|
|
24
|
+
/** Columns and rows of each arrangement. */
|
|
25
|
+
export declare const GRID_SHAPES: Readonly<Record<GridLayout, {
|
|
26
|
+
cols: number;
|
|
27
|
+
rows: number;
|
|
28
|
+
}>>;
|
|
29
|
+
export interface ChartWidgetGridOptions {
|
|
30
|
+
/** How the charts are arranged. Default `'1x2'` (two side by side). */
|
|
31
|
+
layout?: GridLayout;
|
|
32
|
+
/** The arrangements the bar offers. Default all of them. */
|
|
33
|
+
layoutChoices?: readonly GridLayout[];
|
|
34
|
+
/**
|
|
35
|
+
* Options for every chart. Leave `adapter` out of these when there is more
|
|
36
|
+
* than one chart: an adapter keeps one stream, so each chart needs its own
|
|
37
|
+
* (see `adapter`).
|
|
38
|
+
*/
|
|
39
|
+
widget?: ChartWidgetOptions;
|
|
40
|
+
/** Makes each chart's data adapter, `new BinanceAdapter()` say; called once per chart. */
|
|
41
|
+
adapter?: (index: number) => DataAdapter;
|
|
42
|
+
/** Each chart's own options, by position (its symbol and interval, say), over `widget`. */
|
|
43
|
+
cells?: readonly ChartWidgetOptions[];
|
|
44
|
+
/** What the charts follow from each other; see {@link DEFAULT_GRID_SYNC}. */
|
|
45
|
+
sync?: Partial<WidgetGridSync>;
|
|
46
|
+
/** Named layouts of the whole grid (arrangement, sync and every chart). Default `true`. */
|
|
47
|
+
layouts?: boolean | WidgetLayoutsOptions;
|
|
48
|
+
/** The bar above the charts: arrangement, sync, layouts. Default `true`. */
|
|
49
|
+
bar?: boolean;
|
|
50
|
+
/** The chart in use changed (pressed, or the grid shrank). */
|
|
51
|
+
onActiveChange?: (index: number, widget: ChartWidget) => void;
|
|
52
|
+
/** A chart was made: at the start, and when the grid grows. Feed it data, add indicators… */
|
|
53
|
+
onChartAdd?: (widget: ChartWidget, index: number) => void;
|
|
54
|
+
}
|
|
55
|
+
/** What a grid's named layout holds. */
|
|
56
|
+
export interface WidgetGridLayoutContent {
|
|
57
|
+
v: 1;
|
|
58
|
+
kind: 'grid';
|
|
59
|
+
layout: GridLayout;
|
|
60
|
+
sync: WidgetGridSync;
|
|
61
|
+
active: number;
|
|
62
|
+
cells: WidgetLayoutContent[];
|
|
63
|
+
}
|
|
64
|
+
/** An arrangement the grid knows (own keys only: a stored `"constructor"` is not one). */
|
|
65
|
+
export declare function isGridLayout(value: unknown): value is GridLayout;
|
|
66
|
+
/** A grid's layout read back from storage, or `null` when it is not one. */
|
|
67
|
+
export declare function readGridLayout(value: unknown): WidgetGridLayoutContent | null;
|
|
68
|
+
/**
|
|
69
|
+
* Several chart widgets side by side, each with its own symbol, interval,
|
|
70
|
+
* indicators and drawings. A bar above them picks the arrangement, links them
|
|
71
|
+
* (symbol, interval, crosshair, time, drawings) and saves the whole grid as a
|
|
72
|
+
* named layout. The chart pressed last is the active one.
|
|
73
|
+
*/
|
|
74
|
+
export declare class ChartWidgetGrid {
|
|
75
|
+
private readonly options;
|
|
76
|
+
private root;
|
|
77
|
+
private cellsEl;
|
|
78
|
+
private cells;
|
|
79
|
+
private layout;
|
|
80
|
+
private sync;
|
|
81
|
+
private active;
|
|
82
|
+
/** The chart under the pointer: scrolling there moves the others. */
|
|
83
|
+
private hovered;
|
|
84
|
+
/** Above 0 while the grid itself changes charts (a relay, a restore), so they don't pass it back. */
|
|
85
|
+
private relayDepth;
|
|
86
|
+
/** The look given to setUI, for charts added later. */
|
|
87
|
+
private uiTheme;
|
|
88
|
+
/** Charts the grid shrank away from, by position: growing again brings them back as they were. */
|
|
89
|
+
private parked;
|
|
90
|
+
private drawingFrame;
|
|
91
|
+
private drawingSource;
|
|
92
|
+
private layoutButtons;
|
|
93
|
+
private syncButtons;
|
|
94
|
+
private layoutsButton;
|
|
95
|
+
private session;
|
|
96
|
+
private layoutsUI;
|
|
97
|
+
private readonly t;
|
|
98
|
+
private destroyed;
|
|
99
|
+
private unregisterKeys;
|
|
100
|
+
private readonly onKeyDown;
|
|
101
|
+
constructor(container: HTMLElement, options?: ChartWidgetGridOptions);
|
|
102
|
+
private get relaying();
|
|
103
|
+
/** Run `change` as the grid's own (the charts it changes don't pass it on). */
|
|
104
|
+
private quietly;
|
|
105
|
+
getWidget(index: number): ChartWidget | null;
|
|
106
|
+
getWidgets(): ChartWidget[];
|
|
107
|
+
getActiveIndex(): number;
|
|
108
|
+
getActiveWidget(): ChartWidget;
|
|
109
|
+
setActive(index: number): void;
|
|
110
|
+
getLayout(): GridLayout;
|
|
111
|
+
/**
|
|
112
|
+
* Arrange the charts. Charts that no longer fit are put away (kept in the
|
|
113
|
+
* saved layout too) and come back as they were when the grid grows again;
|
|
114
|
+
* brand-new ones open on the active chart's symbol and interval when those
|
|
115
|
+
* are synced.
|
|
116
|
+
*/
|
|
117
|
+
setLayout(layout: GridLayout): void;
|
|
118
|
+
getSync(): WidgetGridSync;
|
|
119
|
+
/** Every chart's look, and the bar's (see `ChartWidget.setUI`). */
|
|
120
|
+
setUI(theme: WidgetUIPreset | WidgetUITheme): void;
|
|
121
|
+
/** The grid's look, every token set. */
|
|
122
|
+
getUI(): ResolvedWidgetUI;
|
|
123
|
+
setSync(patch: Partial<WidgetGridSync>): void;
|
|
124
|
+
/** Every chart's theme. */
|
|
125
|
+
setTheme(theme: ThemeName | Theme): void;
|
|
126
|
+
/** Named layouts of the grid. `null` with `layouts: false`. */
|
|
127
|
+
getLayoutSession(): LayoutSession | null;
|
|
128
|
+
/** The grid as a layout: arrangement, sync and every chart, those put away included. */
|
|
129
|
+
captureLayout(): WidgetGridLayoutContent;
|
|
130
|
+
/**
|
|
131
|
+
* Show a layout from `captureLayout()`. Rejects when a chart could not take
|
|
132
|
+
* its part (the others still finish). For a saved layout, open it through
|
|
133
|
+
* `getLayoutSession()`, so an auto-save can't catch it half shown.
|
|
134
|
+
*/
|
|
135
|
+
restoreLayout(content: WidgetGridLayoutContent): Promise<void>;
|
|
136
|
+
getLayoutContent(): string;
|
|
137
|
+
/** Show a layout from `getLayoutContent()`; `false` when it is not one. */
|
|
138
|
+
applyLayoutContent(content: string): Promise<boolean>;
|
|
139
|
+
destroy(): void;
|
|
140
|
+
private shapeCount;
|
|
141
|
+
private applyShape;
|
|
142
|
+
private createCell;
|
|
143
|
+
/** The chart's links to the others (its listeners go with it when the widget is destroyed). */
|
|
144
|
+
private wireCell;
|
|
145
|
+
private destroyCell;
|
|
146
|
+
/** Pass a change from `source` on to the other charts, without it coming back. */
|
|
147
|
+
private relay;
|
|
148
|
+
/** A chart that was put away comes back at `index`, as it was (on the synced symbol and interval). */
|
|
149
|
+
private unpark;
|
|
150
|
+
/** Drawings move in bursts (a drag): copy them once a frame. */
|
|
151
|
+
private copyDrawingsSoon;
|
|
152
|
+
/** `source`'s drawings onto the charts showing its symbol (copies: charts change drawings in place). */
|
|
153
|
+
private copyDrawings;
|
|
154
|
+
/** Drawings sync switched on: each symbol's charts get all their drawings put together (none lost). */
|
|
155
|
+
private mergeDrawings;
|
|
156
|
+
/** Dark or light, as `source` (or the active chart) now is, for the bar and every chart. */
|
|
157
|
+
private followTheme;
|
|
158
|
+
private markActive;
|
|
159
|
+
private buildBar;
|
|
160
|
+
private sep;
|
|
161
|
+
private renderBar;
|
|
162
|
+
private renderLayoutsButton;
|
|
163
|
+
private setupLayouts;
|
|
164
|
+
private toast;
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=ChartWidgetGrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartWidgetGrid.d.ts","sourceRoot":"","sources":["../../src/widget/ChartWidgetGrid.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { DrawingStyle } from '@tradecanvas/commons';
|
|
1
|
+
import { DrawingOptions, DrawingStyle, DrawingToolType } from '@tradecanvas/commons';
|
|
2
2
|
export interface DrawingStyleTemplate {
|
|
3
3
|
name: string;
|
|
4
4
|
style: Partial<DrawingStyle>;
|
|
5
|
+
/** The tool it was saved from, with that tool's options; absent for a style-only template. */
|
|
6
|
+
type?: DrawingToolType;
|
|
7
|
+
options?: DrawingOptions;
|
|
5
8
|
}
|
|
6
9
|
/** Minimal storage surface — satisfied by `localStorage` and easy to mock. */
|
|
7
10
|
export interface KeyValueStorage {
|
|
@@ -9,21 +12,39 @@ export interface KeyValueStorage {
|
|
|
9
12
|
setItem(key: string, value: string): void;
|
|
10
13
|
}
|
|
11
14
|
/**
|
|
12
|
-
* Named drawing
|
|
13
|
-
*
|
|
15
|
+
* Named drawing presets, persisted to a key-value store: a style, and for a
|
|
16
|
+
* template saved from a tool, that tool's options. Templates are upserted by
|
|
17
|
+
* name and tool (case-sensitive) and ordered most-recently-saved last.
|
|
14
18
|
*/
|
|
15
19
|
export declare class DrawingTemplateStore {
|
|
16
20
|
private storageKey;
|
|
17
21
|
private storage;
|
|
18
22
|
private templates;
|
|
19
23
|
constructor(storageKey?: string, storage?: KeyValueStorage | null);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
/** Style-only templates, plus with `type` the ones saved from that tool. */
|
|
25
|
+
list(type?: DrawingToolType): DrawingStyleTemplate[];
|
|
26
|
+
get(name: string, type?: DrawingToolType): DrawingStyleTemplate | null;
|
|
27
|
+
/** Insert or replace a template by name (and tool, when it is saved with one). */
|
|
28
|
+
save(name: string, style: Partial<DrawingStyle>, tool?: {
|
|
29
|
+
type: DrawingToolType;
|
|
30
|
+
options: DrawingOptions;
|
|
31
|
+
}): void;
|
|
32
|
+
remove(name: string, type?: DrawingToolType): void;
|
|
25
33
|
clear(): void;
|
|
26
34
|
private load;
|
|
27
35
|
private persist;
|
|
28
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* The options each drawing tool starts with ("save as default"), persisted to
|
|
39
|
+
* a key-value store. Values are checked by the chart when they are applied.
|
|
40
|
+
*/
|
|
41
|
+
export declare class DrawingDefaultsStore {
|
|
42
|
+
private storageKey;
|
|
43
|
+
private storage;
|
|
44
|
+
private defaults;
|
|
45
|
+
constructor(storageKey?: string, storage?: KeyValueStorage | null);
|
|
46
|
+
all(): Partial<Record<DrawingToolType, DrawingOptions>>;
|
|
47
|
+
/** Remember a tool's default options; null forgets them. */
|
|
48
|
+
set(type: DrawingToolType, options: DrawingOptions | null): void;
|
|
49
|
+
}
|
|
29
50
|
//# sourceMappingURL=DrawingTemplateStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawingTemplateStore.d.ts","sourceRoot":"","sources":["../../src/widget/DrawingTemplateStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"DrawingTemplateStore.d.ts","sourceRoot":"","sources":["../../src/widget/DrawingTemplateStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG1F,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7B,8FAA8F;IAC9F,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AA0BD;;;;GAIG;AACH,qBAAa,oBAAoB;IAI7B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO;IAJjB,OAAO,CAAC,SAAS,CAA8B;gBAGrC,UAAU,SAAuB,EACjC,OAAO,GAAE,eAAe,GAAG,IAAuB;IAK5D,4EAA4E;IAC5E,IAAI,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,oBAAoB,EAAE;IAIpD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,oBAAoB,GAAG,IAAI;IAKtE,kFAAkF;IAClF,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,cAAc,CAAA;KAAE,GAAG,IAAI;IAajH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI;IAKlD,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,IAAI;IAqBZ,OAAO,CAAC,OAAO;CAQhB;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAI7B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO;IAJjB,OAAO,CAAC,QAAQ,CAAwD;gBAG9D,UAAU,SAAyB,EACnC,OAAO,GAAE,eAAe,GAAG,IAAuB;IAiB5D,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;IAIvD,4DAA4D;IAC5D,GAAG,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI;CASjE"}
|