@tradecanvas/chart 1.3.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/README.md +131 -49
- package/dist/Chart.d.ts +724 -18
- 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/PaneManager.d.ts.map +1 -1
- 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 +11 -4
- package/dist/charts/ChartTypeStrategy.d.ts.map +1 -1
- package/dist/grid/ChartGrid.d.ts +7 -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 +24 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +74 -89
- 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 +283 -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 +5 -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 +26 -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 +46 -0
- package/dist/widget/WidgetGoToDate.d.ts.map +1 -0
- package/dist/widget/WidgetHistoryPill.d.ts +23 -0
- package/dist/widget/WidgetHistoryPill.d.ts.map +1 -0
- package/dist/widget/WidgetHotkeySheet.d.ts +3 -1
- package/dist/widget/WidgetHotkeySheet.d.ts.map +1 -1
- package/dist/widget/WidgetIndicatorLegend.d.ts +98 -0
- package/dist/widget/WidgetIndicatorLegend.d.ts.map +1 -0
- 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/WidgetLoadingOverlay.d.ts.map +1 -1
- 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 +52 -7
- package/dist/widget/WidgetReplayBar.d.ts.map +1 -1
- package/dist/widget/WidgetSettings.d.ts +26 -2
- package/dist/widget/WidgetSettings.d.ts.map +1 -1
- package/dist/widget/WidgetStatusBar.d.ts +19 -1
- 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 +28 -5
- package/dist/widget/WidgetSymbolSearch.d.ts.map +1 -1
- package/dist/widget/WidgetToolbar.d.ts +42 -4
- package/dist/widget/WidgetToolbar.d.ts.map +1 -1
- package/dist/widget/WidgetTooltip.d.ts +43 -0
- package/dist/widget/WidgetTooltip.d.ts.map +1 -0
- 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/escapeHtml.d.ts +3 -0
- package/dist/widget/escapeHtml.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 -63
- package/dist/widget/i18n.d.ts.map +1 -1
- package/dist/widget/iconSet.d.ts +26 -0
- package/dist/widget/iconSet.d.ts.map +1 -0
- package/dist/widget/icons.d.ts +5 -0
- package/dist/widget/icons.d.ts.map +1 -1
- package/dist/widget/index.cjs +2145 -405
- package/dist/widget/index.cjs.map +1 -1
- package/dist/widget/index.d.ts +18 -1
- package/dist/widget/index.d.ts.map +1 -1
- package/dist/widget/index.js +7376 -1274
- 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 +19 -0
- package/dist/widget/legendValues.d.ts.map +1 -0
- 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 +215 -13
- package/dist/widget/types.d.ts.map +1 -1
- package/dist/widget/widgetConfig.d.ts +1 -5
- 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 +28 -0
- package/dist/widget/widgetTimeframes.d.ts.map +1 -0
- 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-BazeSQPD.cjs +0 -2
- package/dist/DragDropImporter-BazeSQPD.cjs.map +0 -1
- package/dist/DragDropImporter-cURSpfUb.js +0 -1883
- package/dist/DragDropImporter-cURSpfUb.js.map +0 -1
- package/dist/charts/IndicatorPriceRange.d.ts +0 -20
- package/dist/charts/IndicatorPriceRange.d.ts.map +0 -1
|
@@ -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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { KeyValueStorage } from './DrawingTemplateStore.js';
|
|
2
|
+
/** One watchlist: a name and its symbols, in order. */
|
|
3
|
+
export interface WatchlistList {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
symbols: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface WatchlistStoreOptions {
|
|
9
|
+
/** Lists to start with; when none, one list of `symbols`. */
|
|
10
|
+
lists?: WatchlistList[];
|
|
11
|
+
/** The list shown first, by id. */
|
|
12
|
+
activeList?: string;
|
|
13
|
+
symbols?: string[];
|
|
14
|
+
/** The first list's name when the store makes it. */
|
|
15
|
+
defaultName?: string;
|
|
16
|
+
/** Where the lists are kept between visits; none keeps them in memory only. */
|
|
17
|
+
storage?: KeyValueStorage | null;
|
|
18
|
+
storageKey?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Watchlists from untrusted input (storage, a host): lists need an id and a
|
|
22
|
+
* name; repeated ids, symbols that aren't strings and repeats are dropped;
|
|
23
|
+
* at most 50 lists of 500 symbols. The active id falls back to the first
|
|
24
|
+
* list. Null when no list is left.
|
|
25
|
+
*/
|
|
26
|
+
export declare function readWatchlists(raw: unknown): {
|
|
27
|
+
lists: WatchlistList[];
|
|
28
|
+
active: string;
|
|
29
|
+
} | null;
|
|
30
|
+
/**
|
|
31
|
+
* The widget's watchlists: which one is shown, and their symbols. Every
|
|
32
|
+
* change is kept in storage (when it has one) and told to its listeners;
|
|
33
|
+
* readers get copies.
|
|
34
|
+
*/
|
|
35
|
+
export declare class WatchlistStore {
|
|
36
|
+
private lists;
|
|
37
|
+
private active;
|
|
38
|
+
private readonly listeners;
|
|
39
|
+
private readonly storage;
|
|
40
|
+
private readonly storageKey;
|
|
41
|
+
constructor(options: WatchlistStoreOptions);
|
|
42
|
+
getLists(): WatchlistList[];
|
|
43
|
+
getActive(): WatchlistList;
|
|
44
|
+
setActive(id: string): void;
|
|
45
|
+
/** Replace every list (untrusted input is read as `readWatchlists` does). */
|
|
46
|
+
replace(lists: WatchlistList[], active?: string): void;
|
|
47
|
+
/** A new list, shown at once; null for a name it can't use or one list too many. */
|
|
48
|
+
create(name: string): WatchlistList | null;
|
|
49
|
+
rename(id: string, name: string): void;
|
|
50
|
+
/** Delete a list; the last one stays. */
|
|
51
|
+
remove(id: string): void;
|
|
52
|
+
/** Add a symbol to the end of a list (the shown one by default); false when it's there or unusable. */
|
|
53
|
+
add(symbol: string, id?: string): boolean;
|
|
54
|
+
removeSymbol(symbol: string, id?: string): void;
|
|
55
|
+
/** Move a symbol to `index` in its list. */
|
|
56
|
+
move(symbol: string, index: number, id?: string): void;
|
|
57
|
+
/** Called after every change; returns a function that stops it. */
|
|
58
|
+
subscribe(listener: () => void): () => void;
|
|
59
|
+
private activeList;
|
|
60
|
+
private update;
|
|
61
|
+
private changed;
|
|
62
|
+
private load;
|
|
63
|
+
private save;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=WatchlistStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WatchlistStore.d.ts","sourceRoot":"","sources":["../../src/widget/WatchlistStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA6BD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,aAAa,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiB9F;AAID;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,EAAE,qBAAqB;IAa1C,QAAQ,IAAI,aAAa,EAAE;IAI3B,SAAS,IAAI,aAAa;IAI1B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAM3B,6EAA6E;IAC7E,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtD,oFAAoF;IACpF,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAY1C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAMtC,yCAAyC;IACzC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAOxB,uGAAuG;IACvG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAc,GAAG,OAAO;IAQ9C,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAc,GAAG,IAAI;IAMpD,4CAA4C;IAC5C,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAc,GAAG,IAAI;IAW3D,mEAAmE;IACnE,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAK3C,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,IAAI;CAMb"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { FillEvent, TradingOrder, TradingPosition } from '@tradecanvas/commons';
|
|
2
|
+
import { Translator } from './i18n.js';
|
|
3
|
+
export interface AccountPanelCallbacks {
|
|
4
|
+
onClosePosition: (id: string) => void;
|
|
5
|
+
onReversePosition: (id: string) => void;
|
|
6
|
+
onCancelOrder: (id: string) => void;
|
|
7
|
+
onNewOrder: () => void;
|
|
8
|
+
formatPrice: (price: number) => string;
|
|
9
|
+
formatTime: (ms: number) => string;
|
|
10
|
+
/** Called when the panel opens or closes (the chart above resizes). */
|
|
11
|
+
onToggle?: (open: boolean) => void;
|
|
12
|
+
}
|
|
13
|
+
export interface AccountSnapshot {
|
|
14
|
+
positions: readonly TradingPosition[];
|
|
15
|
+
orders: readonly TradingOrder[];
|
|
16
|
+
fills: readonly FillEvent[];
|
|
17
|
+
/** The latest price, for the positions' profit and loss. */
|
|
18
|
+
price: number | null;
|
|
19
|
+
/** The P&L realised by every fill (the list may keep only the latest); else the listed fills' sum. */
|
|
20
|
+
realisedPnl?: number;
|
|
21
|
+
}
|
|
22
|
+
/** A position's open profit or loss at `price`, and as a percent of what went in. */
|
|
23
|
+
export declare function positionPnl(position: TradingPosition, price: number | null): {
|
|
24
|
+
pnl: number;
|
|
25
|
+
pct: number;
|
|
26
|
+
} | null;
|
|
27
|
+
/**
|
|
28
|
+
* The account at the bottom of the widget: open positions with their profit
|
|
29
|
+
* and loss, working orders, and the fills so far, each with its actions
|
|
30
|
+
* (close, reverse, cancel), and a button for a new order.
|
|
31
|
+
*/
|
|
32
|
+
export declare class WidgetAccountPanel {
|
|
33
|
+
private readonly callbacks;
|
|
34
|
+
private readonly t;
|
|
35
|
+
private el;
|
|
36
|
+
private tabButtons;
|
|
37
|
+
private content;
|
|
38
|
+
private tab;
|
|
39
|
+
private snapshot;
|
|
40
|
+
private open;
|
|
41
|
+
private live;
|
|
42
|
+
constructor(host: HTMLElement, callbacks: AccountPanelCallbacks, t?: Translator);
|
|
43
|
+
isOpen(): boolean;
|
|
44
|
+
toggle(): void;
|
|
45
|
+
openPanel(): void;
|
|
46
|
+
closePanel(): void;
|
|
47
|
+
/**
|
|
48
|
+
* New positions, orders, fills or price; the tabs' counts follow, the open
|
|
49
|
+
* tab redraws. A new price alone only rewrites the price and P&L cells, so
|
|
50
|
+
* a tick never takes a button from under the pointer or the focus.
|
|
51
|
+
*/
|
|
52
|
+
update(snapshot: AccountSnapshot): void;
|
|
53
|
+
destroy(): void;
|
|
54
|
+
private selectTab;
|
|
55
|
+
/** Left and Right move between the tabs. */
|
|
56
|
+
private onTabKey;
|
|
57
|
+
private renderTabs;
|
|
58
|
+
private render;
|
|
59
|
+
/** The price and P&L cells, rewritten in place. */
|
|
60
|
+
private patchPrices;
|
|
61
|
+
private writePnl;
|
|
62
|
+
private table;
|
|
63
|
+
private row;
|
|
64
|
+
/** Long or Short for a position; Buy or Sell for an order or a fill (closing a long is a sell). */
|
|
65
|
+
private sideCell;
|
|
66
|
+
private sideText;
|
|
67
|
+
private actions;
|
|
68
|
+
private renderPositions;
|
|
69
|
+
private renderOrders;
|
|
70
|
+
private renderHistory;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=WidgetAccountPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetAccountPanel.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetAccountPanel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,EAAwC,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAElF,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,uEAAuE;IACvE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IACtC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IAChC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,sGAAsG;IACtG,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAyBD,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOhH;AAMD;;;;GAIG;AACH,qBAAa,kBAAkB;IASE,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAyB,OAAO,CAAC,QAAQ,CAAC,CAAC;IARpG,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,GAAG,CAAoB;IAC/B,OAAO,CAAC,QAAQ,CAA0E;IAC1F,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAmB;gBAEnB,IAAI,EAAE,WAAW,EAAmB,SAAS,EAAE,qBAAqB,EAAmB,CAAC,GAAE,UAA0B;IA4ChI,MAAM,IAAI,OAAO;IAIjB,MAAM,IAAI,IAAI;IAKd,SAAS,IAAI,IAAI;IAOjB,UAAU,IAAI,IAAI;IAOlB;;;;OAIG;IACH,MAAM,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAevC,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,SAAS;IAMjB,4CAA4C;IAC5C,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,MAAM;IAWd,mDAAmD;IACnD,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,KAAK;IAqBb,OAAO,CAAC,GAAG;IAWX,mGAAmG;IACnG,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,OAAO;IAiBf,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,aAAa;CA6BtB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { AlertCondition } from '@tradecanvas/core';
|
|
1
|
+
import { AlertCondition, AlertOptions } from '@tradecanvas/core';
|
|
2
|
+
import { Translator } from './i18n.js';
|
|
2
3
|
export interface AlertListItem {
|
|
3
4
|
id: string;
|
|
4
5
|
price: number;
|
|
@@ -7,6 +8,26 @@ export interface AlertListItem {
|
|
|
7
8
|
triggered: boolean;
|
|
8
9
|
channel?: string;
|
|
9
10
|
label?: string;
|
|
11
|
+
/** Set for an alert on a drawing: its price follows the drawing's line. */
|
|
12
|
+
drawingId?: string;
|
|
13
|
+
/** Another line it compares with, and its name. */
|
|
14
|
+
target?: string;
|
|
15
|
+
targetLabel?: string;
|
|
16
|
+
percent?: number;
|
|
17
|
+
bars?: number;
|
|
18
|
+
onBarClose?: boolean;
|
|
19
|
+
expiresAt?: number;
|
|
20
|
+
expired?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/** What the form asks for. */
|
|
23
|
+
export interface AlertSpec {
|
|
24
|
+
/** The level (NaN when comparing with a line or measuring a move). */
|
|
25
|
+
price: number;
|
|
26
|
+
condition: AlertCondition;
|
|
27
|
+
message: string | undefined;
|
|
28
|
+
channel: string;
|
|
29
|
+
label: string;
|
|
30
|
+
options: AlertOptions;
|
|
10
31
|
}
|
|
11
32
|
export interface AlertSource {
|
|
12
33
|
/** `'price'` or `<instanceId>:<key>`. */
|
|
@@ -14,13 +35,24 @@ export interface AlertSource {
|
|
|
14
35
|
label: string;
|
|
15
36
|
}
|
|
16
37
|
export interface AlertsPanelCallbacks {
|
|
17
|
-
|
|
38
|
+
/** Add the alert; false when the chart turned it down (the form stays as it is). */
|
|
39
|
+
onAdd: (spec: AlertSpec) => boolean | void;
|
|
18
40
|
onRemove: (id: string) => void;
|
|
19
41
|
onClear: () => void;
|
|
20
42
|
/** Latest value for a source channel, used to prefill the add form. */
|
|
21
43
|
getChannelValue: (channel: string) => number | null;
|
|
22
44
|
formatPrice: (price: number) => string;
|
|
45
|
+
/** A time, for "until …". */
|
|
46
|
+
formatTime?: (ms: number) => string;
|
|
47
|
+
/** Now, in ms (an expiry is counted from it). */
|
|
48
|
+
now?: () => number;
|
|
23
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* What an alert watches, in words: "RSI crossing 70", "Price crossing EMA 20",
|
|
52
|
+
* "Price up 5% within 10 bars". `named` names the price too ("Price crossing
|
|
53
|
+
* 105"), for words read away from the list (a toast, a notification).
|
|
54
|
+
*/
|
|
55
|
+
export declare function describeAlert(alert: AlertListItem, t: Translator, formatPrice: (price: number) => string, named?: boolean): string;
|
|
24
56
|
/**
|
|
25
57
|
* Floating price-alerts panel. Lists current alerts (with condition, price,
|
|
26
58
|
* message, and a delete control) and an inline form to add a new one prefilled
|
|
@@ -28,18 +60,31 @@ export interface AlertsPanelCallbacks {
|
|
|
28
60
|
* add/remove back to the chart's `AlertManager`.
|
|
29
61
|
*/
|
|
30
62
|
export declare class WidgetAlertsPanel {
|
|
63
|
+
private readonly t;
|
|
31
64
|
private el;
|
|
32
65
|
private listEl;
|
|
33
66
|
private priceInput;
|
|
34
67
|
private conditionSelect;
|
|
35
68
|
private sourceSelect;
|
|
69
|
+
private targetSelect;
|
|
70
|
+
private percentInput;
|
|
71
|
+
private barsInput;
|
|
72
|
+
private levelRow;
|
|
73
|
+
private moveRow;
|
|
74
|
+
private closeCheck;
|
|
75
|
+
private expirySelect;
|
|
36
76
|
private messageInput;
|
|
37
77
|
private emptyEl;
|
|
38
78
|
private callbacks;
|
|
39
79
|
private open;
|
|
40
80
|
private alerts;
|
|
41
81
|
private sources;
|
|
42
|
-
constructor(host: HTMLElement, callbacks: AlertsPanelCallbacks);
|
|
82
|
+
constructor(host: HTMLElement, callbacks: AlertsPanelCallbacks, t?: Translator);
|
|
83
|
+
private numberField;
|
|
84
|
+
/** A move asks for percent and bars; a level for a value or another line. */
|
|
85
|
+
private showFields;
|
|
86
|
+
/** "Compared with": a value, or any line but the one watched. */
|
|
87
|
+
private renderTargets;
|
|
43
88
|
/** Replace the alert-source options (price + indicator lines). */
|
|
44
89
|
setSources(sources: AlertSource[]): void;
|
|
45
90
|
private renderSources;
|
|
@@ -53,6 +98,8 @@ export declare class WidgetAlertsPanel {
|
|
|
53
98
|
setAlerts(alerts: AlertListItem[]): void;
|
|
54
99
|
destroy(): void;
|
|
55
100
|
private submitForm;
|
|
101
|
+
private markInvalid;
|
|
102
|
+
private describe;
|
|
56
103
|
private renderList;
|
|
57
104
|
}
|
|
58
105
|
//# sourceMappingURL=WidgetAlertsPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetAlertsPanel.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetAlertsPanel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"WidgetAlertsPanel.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetAlertsPanel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Translator } from './i18n.js';
|
|
1
2
|
export interface BracketBarCallbacks {
|
|
2
3
|
onConfirm: () => void;
|
|
3
4
|
onCancel: () => void;
|
|
@@ -8,11 +9,12 @@ export interface BracketBarCallbacks {
|
|
|
8
9
|
* just carries the commit and discard actions (also bound to Enter / Esc).
|
|
9
10
|
*/
|
|
10
11
|
export declare class WidgetBracketBar {
|
|
12
|
+
private readonly t;
|
|
11
13
|
private el;
|
|
12
14
|
private labelEl;
|
|
13
15
|
private callbacks;
|
|
14
16
|
private visible;
|
|
15
|
-
constructor(host: HTMLElement, callbacks: BracketBarCallbacks);
|
|
17
|
+
constructor(host: HTMLElement, callbacks: BracketBarCallbacks, t?: Translator);
|
|
16
18
|
show(side: 'buy' | 'sell'): void;
|
|
17
19
|
hide(): void;
|
|
18
20
|
isVisible(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetBracketBar.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetBracketBar.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WidgetBracketBar.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetBracketBar.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAG3D,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAMoC,OAAO,CAAC,QAAQ,CAAC,CAAC;IALjF,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAmB,CAAC,GAAE,UAA0B;IAiC7G,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI;IAOhC,IAAI,IAAI,IAAI;IAKZ,SAAS,IAAI,OAAO;IAIpB,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Translator } from './i18n.js';
|
|
2
|
+
export interface ChartNavActions {
|
|
3
|
+
zoomIn: () => void;
|
|
4
|
+
zoomOut: () => void;
|
|
5
|
+
/** Scroll a step toward later (1) or earlier (-1) bars. */
|
|
6
|
+
scroll: (direction: 1 | -1) => void;
|
|
7
|
+
/** Back to the whole chart, scaled to fit. */
|
|
8
|
+
reset: () => void;
|
|
9
|
+
/** The plot area in the host, where the buttons sit (centred on its bottom). */
|
|
10
|
+
plotRect: () => {
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
width: number;
|
|
14
|
+
height: number;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Navigation over the chart: zoom out and in, scroll earlier and later
|
|
19
|
+
* (held, it keeps going), reset. It shows while a mouse or pen is over the
|
|
20
|
+
* chart; touch has its own gestures.
|
|
21
|
+
*/
|
|
22
|
+
export declare class WidgetChartNav {
|
|
23
|
+
private readonly host;
|
|
24
|
+
private readonly actions;
|
|
25
|
+
private el;
|
|
26
|
+
private holdTimer;
|
|
27
|
+
private repeatTimer;
|
|
28
|
+
private readonly onMove;
|
|
29
|
+
private readonly onLeave;
|
|
30
|
+
constructor(host: HTMLElement, actions: ChartNavActions, t?: Translator);
|
|
31
|
+
destroy(): void;
|
|
32
|
+
private place;
|
|
33
|
+
private startHold;
|
|
34
|
+
private stopHold;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=WidgetChartNav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetChartNav.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetChartNav.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,2DAA2D;IAC3D,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;IACpC,8CAA8C;IAC9C,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,gFAAgF;IAChF,QAAQ,EAAE,MAAM;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACzE;AAMD;;;;GAIG;AACH,qBAAa,cAAc;IAevB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAf1B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,WAAW,CAA+C;IAClE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAIrB;IACF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGtB;gBAGiB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,eAAe,EACzC,CAAC,GAAE,UAA0B;IAiE/B,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,QAAQ;CAMjB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ChartType, DrawingToolType, TimeFrame } from '@tradecanvas/commons';
|
|
2
|
+
import { Translator } from './i18n.js';
|
|
2
3
|
export interface CommandItem {
|
|
3
4
|
id: string;
|
|
4
5
|
label: string;
|
|
@@ -15,6 +16,8 @@ export interface CommandPaletteCallbacks {
|
|
|
15
16
|
onClose: () => void;
|
|
16
17
|
}
|
|
17
18
|
export declare class WidgetCommandPalette {
|
|
19
|
+
private readonly host;
|
|
20
|
+
private readonly t;
|
|
18
21
|
private backdrop;
|
|
19
22
|
private modal;
|
|
20
23
|
private input;
|
|
@@ -24,7 +27,8 @@ export declare class WidgetCommandPalette {
|
|
|
24
27
|
private selectedIndex;
|
|
25
28
|
private callbacks;
|
|
26
29
|
private boundKeydown;
|
|
27
|
-
|
|
30
|
+
/** Where the overlay mounts (the widget's portal: themed, and inside it when fullscreen). */
|
|
31
|
+
constructor(callbacks: CommandPaletteCallbacks, host?: () => HTMLElement, t?: Translator);
|
|
28
32
|
open(items: CommandItem[]): void;
|
|
29
33
|
close(): void;
|
|
30
34
|
isOpen(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetCommandPalette.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetCommandPalette.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"WidgetCommandPalette.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetCommandPalette.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAG3D,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,aAAa,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/C,WAAW,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,qBAAa,oBAAoB;IAc7B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,CAAC;IAdpB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,IAAI,CAA+B;IAC3C,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,YAAY,CAA6B;IAEjD,6FAA6F;gBAE3F,SAAS,EAAE,uBAAuB,EACjB,IAAI,GAAE,MAAM,WAAiC,EAC7C,CAAC,GAAE,UAA0B;IAMhD,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI;IAqDhC,KAAK,IAAI,IAAI;IAWb,MAAM,IAAI,OAAO;IAIjB,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,UAAU;IA2DlB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,MAAM;IAwBd,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,aAAa;IAWrB,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export type ContextMenuEntry =
|
|
2
|
+
/** `checked` makes it a switch (ticked when on). */
|
|
3
|
+
{
|
|
4
|
+
id: string;
|
|
5
|
+
label: string;
|
|
6
|
+
icon?: string;
|
|
7
|
+
danger?: boolean;
|
|
8
|
+
checked?: boolean;
|
|
9
|
+
} | 'separator';
|
|
10
|
+
/**
|
|
11
|
+
* A small menu opened at a point (a right-click on a drawing, say): arrow
|
|
12
|
+
* keys, Home and End move through it, Enter picks, Escape, Tab or a click
|
|
13
|
+
* outside close it. Focus returns to where it was.
|
|
14
|
+
*/
|
|
15
|
+
export declare class WidgetContextMenu {
|
|
16
|
+
private readonly host;
|
|
17
|
+
private el;
|
|
18
|
+
private onPick;
|
|
19
|
+
private returnFocus;
|
|
20
|
+
/** The button that opened it: pressing it again is its click's to handle (a toggle). */
|
|
21
|
+
private anchor;
|
|
22
|
+
private readonly onDocPointer;
|
|
23
|
+
/** Scrolling, resizing or leaving the window moves the chart from under the menu. */
|
|
24
|
+
private readonly onAway;
|
|
25
|
+
constructor(host: HTMLElement, label: string);
|
|
26
|
+
/**
|
|
27
|
+
* Open at (`x`, `y`) in the host's coordinates. It opens up or to the left
|
|
28
|
+
* of the point when there is no room below or to the right, and stays
|
|
29
|
+
* inside both the host and the window.
|
|
30
|
+
*/
|
|
31
|
+
open(entries: readonly ContextMenuEntry[], x: number, y: number, onPick: (id: string) => void, anchor?: HTMLElement): void;
|
|
32
|
+
close(): void;
|
|
33
|
+
isOpen(): boolean;
|
|
34
|
+
destroy(): void;
|
|
35
|
+
private entry;
|
|
36
|
+
private pick;
|
|
37
|
+
private items;
|
|
38
|
+
private onKeyDown;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=WidgetContextMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetContextMenu.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetContextMenu.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB;AAC1B,oDAAoD;AAClD;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACjF,WAAW,CAAC;AAWhB;;;;GAIG;AACH,qBAAa,iBAAiB;IAchB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAbjC,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,WAAW,CAA4B;IAC/C,wFAAwF;IACxF,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAI3B;IACF,qFAAqF;IACrF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;gBAEhB,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM;IAU7D;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI;IAkB1H,KAAK,IAAI,IAAI;IAab,MAAM,IAAI,OAAO;IAIjB,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,KAAK;IAwBb,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,SAAS;CAiBlB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Translator } from './i18n.js';
|
|
1
2
|
export interface DataWindowIndicator {
|
|
2
3
|
name: string;
|
|
3
4
|
values: {
|
|
@@ -25,11 +26,12 @@ export interface DataWindowCallbacks {
|
|
|
25
26
|
* active indicator value at the hovered bar. Updated from `crosshairMove`.
|
|
26
27
|
*/
|
|
27
28
|
export declare class WidgetDataWindow {
|
|
29
|
+
private readonly t;
|
|
28
30
|
private el;
|
|
29
31
|
private bodyEl;
|
|
30
32
|
private callbacks;
|
|
31
33
|
private open;
|
|
32
|
-
constructor(host: HTMLElement, callbacks: DataWindowCallbacks);
|
|
34
|
+
constructor(host: HTMLElement, callbacks: DataWindowCallbacks, t?: Translator);
|
|
33
35
|
isOpen(): boolean;
|
|
34
36
|
toggle(): void;
|
|
35
37
|
openPanel(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetDataWindow.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetDataWindow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WidgetDataWindow.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetDataWindow.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACxF,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAMoC,OAAO,CAAC,QAAQ,CAAC,CAAC;IALjF,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAmB,CAAC,GAAE,UAA0B;IA4B7G,MAAM,IAAI,OAAO;IAIjB,MAAM,IAAI,IAAI;IAId,SAAS,IAAI,IAAI;IAKjB,KAAK,IAAI,IAAI;IAKb,OAAO,IAAI,IAAI;IAIf,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAkCpC,OAAO,CAAC,GAAG;CAaZ"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DepthData } from '@tradecanvas/commons';
|
|
2
|
+
import { Translator } from './i18n.js';
|
|
2
3
|
export interface DepthLadderCallbacks {
|
|
3
4
|
/** Buy at `price` (clicked an ask cell) or sell at `price` (clicked a bid cell). */
|
|
4
5
|
onTrade: (side: 'buy' | 'sell', price: number) => void;
|
|
@@ -11,12 +12,13 @@ export interface DepthLadderCallbacks {
|
|
|
11
12
|
* size.
|
|
12
13
|
*/
|
|
13
14
|
export declare class WidgetDepthLadder {
|
|
15
|
+
private readonly t;
|
|
14
16
|
private el;
|
|
15
17
|
private bodyEl;
|
|
16
18
|
private callbacks;
|
|
17
19
|
private open;
|
|
18
20
|
private levels;
|
|
19
|
-
constructor(host: HTMLElement, callbacks: DepthLadderCallbacks, levels?: number);
|
|
21
|
+
constructor(host: HTMLElement, callbacks: DepthLadderCallbacks, levels?: number, t?: Translator);
|
|
20
22
|
isOpen(): boolean;
|
|
21
23
|
toggle(): void;
|
|
22
24
|
openPanel(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetDepthLadder.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetDepthLadder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"WidgetDepthLadder.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetDepthLadder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAGjE,MAAM,WAAW,oBAAoB;IACnC,oFAAoF;IACpF,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAED;;;;;GAKG;AACH,qBAAa,iBAAiB;IAOiD,OAAO,CAAC,QAAQ,CAAC,CAAC;IAN/F,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAS;gBAEX,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,SAAK,EAAmB,CAAC,GAAE,UAA0B;IAmC3H,MAAM,IAAI,OAAO;IAIjB,MAAM,IAAI,IAAI;IAId,SAAS,IAAI,IAAI;IAKjB,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI;IAQtC,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,MAAM;CAiDf"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { AnchorPoint, DrawingOptionDefs, DrawingOptions, DrawingStyle, DrawingToolType } from '@tradecanvas/commons';
|
|
2
|
+
import { Translator } from './i18n.js';
|
|
3
|
+
import { DrawingStyleTemplate } from './DrawingTemplateStore.js';
|
|
4
|
+
/** The drawing a settings dialog edits. */
|
|
5
|
+
export interface DrawingSettingsTarget {
|
|
6
|
+
id: string;
|
|
7
|
+
type: DrawingToolType;
|
|
8
|
+
/** The tool's name in the widget's language. */
|
|
9
|
+
name: string;
|
|
10
|
+
style: DrawingStyle;
|
|
11
|
+
/** Every option, defaults filled in. */
|
|
12
|
+
options: DrawingOptions;
|
|
13
|
+
defs: DrawingOptionDefs;
|
|
14
|
+
anchors: AnchorPoint[];
|
|
15
|
+
/** Whether the tool fills an area and draws text (which style fields to offer). */
|
|
16
|
+
fill: boolean;
|
|
17
|
+
text: boolean;
|
|
18
|
+
/** Whether an alert can watch it (it has lines the price can cross). */
|
|
19
|
+
alertable?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface DrawingSettingsPatch {
|
|
22
|
+
anchors?: AnchorPoint[];
|
|
23
|
+
style?: Partial<DrawingStyle>;
|
|
24
|
+
options?: DrawingOptions;
|
|
25
|
+
}
|
|
26
|
+
export interface DrawingSettingsCallbacks {
|
|
27
|
+
/** The dialog opened on a drawing: edits until `onEnd` are one undo step. */
|
|
28
|
+
onBegin: (id: string) => void;
|
|
29
|
+
/** An edit, shown on the chart at once. */
|
|
30
|
+
onChange: (id: string, patch: DrawingSettingsPatch) => void;
|
|
31
|
+
/** OK keeps the edits; Cancel, Escape or the close button put the drawing back. */
|
|
32
|
+
onEnd: (id: string, cancel: boolean) => void;
|
|
33
|
+
/** An anchor's time as the date and time fields show it (the chart's zone), and back. */
|
|
34
|
+
toWallTime: (time: number) => {
|
|
35
|
+
date: string;
|
|
36
|
+
time: string;
|
|
37
|
+
};
|
|
38
|
+
fromWallTime: (date: string, time: string) => number | null;
|
|
39
|
+
/** Alert when the price crosses the drawing. */
|
|
40
|
+
onAddAlert?: (id: string) => void;
|
|
41
|
+
/** Make these the options new drawings of the tool start with. */
|
|
42
|
+
onSaveDefault?: (type: DrawingToolType, options: DrawingOptions) => void;
|
|
43
|
+
/** Saved templates: a style, and the tool's options for those saved from it. */
|
|
44
|
+
templates?: {
|
|
45
|
+
list: (type: DrawingToolType) => DrawingStyleTemplate[];
|
|
46
|
+
save: (name: string, style: Partial<DrawingStyle>, tool: {
|
|
47
|
+
type: DrawingToolType;
|
|
48
|
+
options: DrawingOptions;
|
|
49
|
+
}) => void;
|
|
50
|
+
remove: (name: string, type?: DrawingToolType) => void;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A drawing's settings: its style (colour, width, line, fill and text where
|
|
55
|
+
* the tool has them, saved templates), the tool's own options (levels,
|
|
56
|
+
* extend left/right…), and its anchors as dates and prices. Edits show on the
|
|
57
|
+
* chart at once; OK keeps them as one undo step, Cancel puts it back.
|
|
58
|
+
*/
|
|
59
|
+
export declare class WidgetDrawingSettings {
|
|
60
|
+
private readonly callbacks;
|
|
61
|
+
private readonly t;
|
|
62
|
+
private backdrop;
|
|
63
|
+
private modal;
|
|
64
|
+
private titleEl;
|
|
65
|
+
private tabsEl;
|
|
66
|
+
private bodyEl;
|
|
67
|
+
private footerLeft;
|
|
68
|
+
private tabButtons;
|
|
69
|
+
private target;
|
|
70
|
+
private style;
|
|
71
|
+
private options;
|
|
72
|
+
private anchors;
|
|
73
|
+
private tab;
|
|
74
|
+
private returnFocus;
|
|
75
|
+
private readonly uid;
|
|
76
|
+
constructor(host: HTMLElement, callbacks: DrawingSettingsCallbacks, t?: Translator);
|
|
77
|
+
open(target: DrawingSettingsTarget): void;
|
|
78
|
+
/** Close the dialog, keeping the edits or (with `cancel`) putting the drawing back. */
|
|
79
|
+
close(cancel: boolean): void;
|
|
80
|
+
isOpen(): boolean;
|
|
81
|
+
/** The drawing being edited, if any. */
|
|
82
|
+
editing(): string | null;
|
|
83
|
+
destroy(): void;
|
|
84
|
+
private tabs;
|
|
85
|
+
private renderTabs;
|
|
86
|
+
private markTabs;
|
|
87
|
+
private selectTab;
|
|
88
|
+
private onTabKey;
|
|
89
|
+
/** Escape cancels; Tab stays inside the dialog. */
|
|
90
|
+
private onKeyDown;
|
|
91
|
+
private renderBody;
|
|
92
|
+
private change;
|
|
93
|
+
private setStyle;
|
|
94
|
+
private setOptions;
|
|
95
|
+
private renderStyle;
|
|
96
|
+
private renderFill;
|
|
97
|
+
private renderText;
|
|
98
|
+
private renderTemplates;
|
|
99
|
+
/** A label from the widget's strings (`drawingOption.<key>`), else the tool's own. */
|
|
100
|
+
private label;
|
|
101
|
+
private renderOptions;
|
|
102
|
+
private optionControl;
|
|
103
|
+
/** One row per level: shown or not, its ratio, its colour, remove; and a button to add one. */
|
|
104
|
+
private levelsEditor;
|
|
105
|
+
private renderCoordinates;
|
|
106
|
+
private setAnchor;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=WidgetDrawingSettings.d.ts.map
|