@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetReplayBar.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetReplayBar.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,gCAAgC;IAChC,aAAa,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"WidgetReplayBar.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetReplayBar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ChartType } from '@tradecanvas/commons';
|
|
1
2
|
import { ChartSettingsState, SettingsCallbacks } from './types.js';
|
|
2
3
|
import { Translator } from './i18n.js';
|
|
3
4
|
export declare class WidgetSettings {
|
|
@@ -12,6 +13,8 @@ export declare class WidgetSettings {
|
|
|
12
13
|
private currentSettings;
|
|
13
14
|
private bodyEl;
|
|
14
15
|
private tabButtons;
|
|
16
|
+
/** The chart's type, whose settings the Style tab offers. */
|
|
17
|
+
private chartType;
|
|
15
18
|
/**
|
|
16
19
|
* `barCountdown` / `logScale` false leave out the controls for features the
|
|
17
20
|
* chart has switched off.
|
|
@@ -19,16 +22,25 @@ export declare class WidgetSettings {
|
|
|
19
22
|
constructor(callbacks: SettingsCallbacks, t: Translator, available?: {
|
|
20
23
|
barCountdown?: boolean;
|
|
21
24
|
logScale?: boolean;
|
|
25
|
+
/** Offer the exchange's time zone; returns it (null while unknown). */
|
|
26
|
+
exchangeZone?: () => string | null;
|
|
22
27
|
},
|
|
23
28
|
/** Where the panel mounts (the widget's portal: themed, and inside it when fullscreen). */
|
|
24
29
|
host?: () => HTMLElement);
|
|
25
|
-
open(currentSettings: ChartSettingsState): void;
|
|
30
|
+
open(currentSettings: ChartSettingsState, chartType?: ChartType | null): void;
|
|
31
|
+
isOpen(): boolean;
|
|
32
|
+
/** The settings as they are now (after an undo), on the tab that's open. */
|
|
33
|
+
refresh(settings: ChartSettingsState): void;
|
|
26
34
|
close(): void;
|
|
27
35
|
private buildModal;
|
|
28
36
|
private renderTabContent;
|
|
29
37
|
private renderStyleTab;
|
|
30
38
|
private renderDisplayTab;
|
|
31
39
|
private renderScaleTab;
|
|
40
|
+
/** The settings of the chart's type, when it has any (Renko's box, Kagi's reversal…). */
|
|
41
|
+
private renderChartTypeSection;
|
|
42
|
+
/** A number field; empty means "worked out from the data" (shown as Auto). Only numbers above 0 are taken. */
|
|
43
|
+
private numberRow;
|
|
32
44
|
private patch;
|
|
33
45
|
private section;
|
|
34
46
|
private colorRow;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetSettings.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"WidgetSettings.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAK5C,qBAAa,cAAc;IAmBvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAM1B,2FAA2F;IAC3F,OAAO,CAAC,QAAQ,CAAC,IAAI;IAzBvB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,CAAC,CAAa;IACtB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,UAAU,CAA2B;IAC7C,6DAA6D;IAC7D,OAAO,CAAC,SAAS,CAA0B;IAE3C;;;OAGG;gBAED,SAAS,EAAE,iBAAiB,EAC5B,CAAC,EAAE,UAAU,EACI,SAAS,GAAE;QAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,uEAAuE;QACvE,YAAY,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;KAC/B;IACN,2FAA2F;IAC1E,IAAI,GAAE,MAAM,WAAiC;IAMhE,IAAI,CAAC,eAAe,EAAE,kBAAkB,EAAE,SAAS,GAAE,SAAS,GAAG,IAAW,GAAG,IAAI;IAOnF,MAAM,IAAI,OAAO;IAIjB,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAM3C,KAAK,IAAI,IAAI;IASb,OAAO,CAAC,UAAU;IAuFlB,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,gBAAgB;IAqDxB,OAAO,CAAC,cAAc;IAmBtB,yFAAyF;IACzF,OAAO,CAAC,sBAAsB;IA8C9B,8GAA8G;IAC9G,OAAO,CAAC,SAAS;IA+BjB,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,QAAQ;IA+BhB,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,SAAS;IA4BjB,OAAO,CAAC,QAAQ;IA2ChB,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -17,6 +17,7 @@ export declare class WidgetStatusBar {
|
|
|
17
17
|
private dotEl;
|
|
18
18
|
private messageEl;
|
|
19
19
|
private infoEl;
|
|
20
|
+
private marketEl;
|
|
20
21
|
constructor(host: HTMLElement, range?: StatusBarRange);
|
|
21
22
|
update(state: {
|
|
22
23
|
connectionState: string;
|
|
@@ -24,6 +25,8 @@ export declare class WidgetStatusBar {
|
|
|
24
25
|
symbol: string;
|
|
25
26
|
timeframe: string;
|
|
26
27
|
}): void;
|
|
28
|
+
/** The market's status (open or closed); hidden for a market around the clock. */
|
|
29
|
+
setMarket(state: 'open' | 'closed' | 'always', text: string): void;
|
|
27
30
|
destroy(): void;
|
|
28
31
|
private buildRange;
|
|
29
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetStatusBar.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetStatusBar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,8DAA8D;IAC9D,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,MAAM,CAAkB;
|
|
1
|
+
{"version":3,"file":"WidgetStatusBar.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetStatusBar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,8DAA8D;IAC9D,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAkB;gBAEtB,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,cAAc;IAkCrD,MAAM,CAAC,KAAK,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAYpG,kFAAkF;IAClF,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAMlE,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,UAAU;CA2BnB"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Inject the widget stylesheet
|
|
2
|
+
* Inject the widget stylesheet at the top of `document.head`, so the page's
|
|
3
|
+
* own CSS wins a tie of specificity (a `.tcw-root { --tcw-radius: 0 }` of
|
|
4
|
+
* yours sets the token). Reference-counted so
|
|
3
5
|
* multiple `ChartWidget` instances share the same `<style>` tag and the last
|
|
4
6
|
* to detach removes it. CSS lives in a sibling `.css` file and is inlined at
|
|
5
7
|
* build time via Vite's `?raw` query — consumers see a plain string at runtime.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetStyles.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetStyles.ts"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"WidgetStyles.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetStyles.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CASzC;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAQzC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Translator } from './i18n.js';
|
|
2
|
+
/** What the symbol info panel shows, formatted by the widget. */
|
|
3
|
+
export interface SymbolInfoView {
|
|
4
|
+
symbol: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
/** Exchange, type, currency, joined. */
|
|
7
|
+
meta?: string;
|
|
8
|
+
price?: string;
|
|
9
|
+
change?: {
|
|
10
|
+
text: string;
|
|
11
|
+
up: boolean;
|
|
12
|
+
};
|
|
13
|
+
status: {
|
|
14
|
+
state: 'open' | 'closed' | 'always';
|
|
15
|
+
text: string;
|
|
16
|
+
};
|
|
17
|
+
stats: {
|
|
18
|
+
label: string;
|
|
19
|
+
value: string;
|
|
20
|
+
}[];
|
|
21
|
+
}
|
|
22
|
+
export interface SymbolInfoNewsItem {
|
|
23
|
+
title: string;
|
|
24
|
+
url?: string;
|
|
25
|
+
/** Source and age, joined. */
|
|
26
|
+
meta: string;
|
|
27
|
+
}
|
|
28
|
+
/** The news part: no source, loading, failed, or the headlines (maybe none). */
|
|
29
|
+
export type SymbolInfoNews = {
|
|
30
|
+
kind: 'none';
|
|
31
|
+
} | {
|
|
32
|
+
kind: 'loading';
|
|
33
|
+
} | {
|
|
34
|
+
kind: 'failed';
|
|
35
|
+
} | {
|
|
36
|
+
kind: 'items';
|
|
37
|
+
items: SymbolInfoNewsItem[];
|
|
38
|
+
};
|
|
39
|
+
export interface SymbolInfoCallbacks {
|
|
40
|
+
/** After it opens or closes. */
|
|
41
|
+
onToggle?: (open: boolean) => void;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Symbol info — a floating panel with the symbol's names, price and move,
|
|
45
|
+
* market status, the day's numbers, its hours, and news. It only renders:
|
|
46
|
+
* the widget builds what it shows.
|
|
47
|
+
*/
|
|
48
|
+
export declare class WidgetSymbolInfo {
|
|
49
|
+
private readonly t;
|
|
50
|
+
private readonly callbacks;
|
|
51
|
+
private el;
|
|
52
|
+
private bodyEl;
|
|
53
|
+
private newsEl;
|
|
54
|
+
private shown;
|
|
55
|
+
constructor(host: HTMLElement, t?: Translator, callbacks?: SymbolInfoCallbacks);
|
|
56
|
+
isOpen(): boolean;
|
|
57
|
+
toggle(): void;
|
|
58
|
+
open(): void;
|
|
59
|
+
close(): void;
|
|
60
|
+
render(view: SymbolInfoView): void;
|
|
61
|
+
renderNews(news: SymbolInfoNews): void;
|
|
62
|
+
destroy(): void;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=WidgetSymbolInfo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetSymbolInfo.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetSymbolInfo.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAE3D,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC;IACvC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,gFAAgF;AAChF,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,kBAAkB,EAAE,CAAA;CAAE,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAQzB,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAR5B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAAS;gBAGpB,IAAI,EAAE,WAAW,EACA,CAAC,GAAE,UAA0B,EAC7B,SAAS,GAAE,mBAAwB;IA+BtD,MAAM,IAAI,OAAO;IAIjB,MAAM,IAAI,IAAI;IAKd,IAAI,IAAI,IAAI;IAOZ,KAAK,IAAI,IAAI;IAOb,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IA+BlC,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAkCtC,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -1,14 +1,24 @@
|
|
|
1
|
+
import { SymbolInfo } from '@tradecanvas/commons';
|
|
2
|
+
import { Translator } from './i18n.js';
|
|
1
3
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
4
|
+
* Symbol picker. Reuses the command-palette CSS for visual consistency.
|
|
5
|
+
*
|
|
6
|
+
* - Without a search function it filters the symbols it was given with a
|
|
7
|
+
* cheap subsequence match, good enough for lists in the low thousands.
|
|
8
|
+
* - With one (a feed's `searchSymbols`) it asks once typing pauses, cancels a
|
|
9
|
+
* query a newer one replaced, and lists names and exchanges.
|
|
5
10
|
*/
|
|
6
11
|
export interface SymbolSearchCallbacks {
|
|
7
12
|
onPick: (symbol: string) => void;
|
|
8
13
|
onClose: () => void;
|
|
9
14
|
}
|
|
15
|
+
/** Symbols matching a query, best first; aborted when a newer query replaces it. */
|
|
16
|
+
export type SymbolSearchFn = (query: string, signal: AbortSignal) => Promise<SymbolInfo[]>;
|
|
17
|
+
/** How long typing must pause before a search function is asked. */
|
|
18
|
+
export declare const SYMBOL_SEARCH_DEBOUNCE_MS = 150;
|
|
10
19
|
export declare class WidgetSymbolSearch {
|
|
11
20
|
private readonly host;
|
|
21
|
+
private readonly t;
|
|
12
22
|
private backdrop;
|
|
13
23
|
private modal;
|
|
14
24
|
private input;
|
|
@@ -21,13 +31,24 @@ export declare class WidgetSymbolSearch {
|
|
|
21
31
|
private boundKeydown;
|
|
22
32
|
/** One-shot pick override — when set, this open() routes picks here instead. */
|
|
23
33
|
private pickOverride;
|
|
34
|
+
private searchFn;
|
|
35
|
+
private searchTimer;
|
|
36
|
+
private searchAbort;
|
|
37
|
+
private status;
|
|
38
|
+
/** Enter came before the results for what was typed: take the top one when they land. */
|
|
39
|
+
private pickOnResults;
|
|
24
40
|
/** Where the overlay mounts (the widget's portal: themed, and inside it when fullscreen). */
|
|
25
|
-
constructor(callbacks: SymbolSearchCallbacks, host?: () => HTMLElement);
|
|
26
|
-
open(symbols: string[], current: string, onPick?: (symbol: string) => void): void;
|
|
41
|
+
constructor(callbacks: SymbolSearchCallbacks, host?: () => HTMLElement, t?: Translator);
|
|
42
|
+
open(symbols: string[], current: string, onPick?: (symbol: string) => void, search?: SymbolSearchFn): void;
|
|
27
43
|
close(): void;
|
|
28
44
|
isOpen(): boolean;
|
|
29
45
|
destroy(): void;
|
|
30
46
|
private filter;
|
|
47
|
+
private scheduleSearch;
|
|
48
|
+
/** Run the search the pause would have started, now. */
|
|
49
|
+
private searchNow;
|
|
50
|
+
private runSearch;
|
|
51
|
+
private cancelSearch;
|
|
31
52
|
private renderList;
|
|
32
53
|
private updateSelection;
|
|
33
54
|
private pick;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetSymbolSearch.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetSymbolSearch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WidgetSymbolSearch.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetSymbolSearch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAC3D;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,oFAAoF;AACpF,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;AAE3F,oEAAoE;AACpE,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAU7C,qBAAa,kBAAkB;IAuB3B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,CAAC;IAvBpB,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,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,YAAY,CAA6B;IACjD,gFAAgF;IAChF,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,MAAM,CAA2C;IACzD,yFAAyF;IACzF,OAAO,CAAC,aAAa,CAAS;IAE9B,6FAA6F;gBAE3F,SAAS,EAAE,qBAAqB,EACf,IAAI,GAAE,MAAM,WAAiC,EAC7C,CAAC,GAAE,UAA0B;IAMhD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI;IA2D1G,KAAK,IAAI,IAAI;IAeb,MAAM,IAAI,OAAO;IAIjB,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,MAAM;IAqBd,OAAO,CAAC,cAAc;IAQtB,wDAAwD;IACxD,OAAO,CAAC,SAAS;YAMH,SAAS;IAgCvB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,UAAU;IA0DlB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,aAAa;CAgCtB"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { TimeFrame } from '@tradecanvas/commons';
|
|
2
|
-
import { ToolbarConfig, ToolbarCallbacks, WidgetState } from './types.js';
|
|
2
|
+
import { ToolbarButtonSpec, ToolbarConfig, ToolbarCallbacks, WidgetState } from './types.js';
|
|
3
3
|
import { Translator } from './i18n.js';
|
|
4
|
+
/** A host button's name: its label, with the text it shows when that says more ("News: 3"). */
|
|
5
|
+
export declare function setHostButtonName(btn: HTMLButtonElement, label: string): void;
|
|
4
6
|
export declare class WidgetToolbar {
|
|
5
7
|
private config;
|
|
6
8
|
private callbacks;
|
|
@@ -11,19 +13,46 @@ export declare class WidgetToolbar {
|
|
|
11
13
|
private tfGroup;
|
|
12
14
|
private tfDropdown;
|
|
13
15
|
private tfFavorites;
|
|
16
|
+
/** Tells this toolbar's element ids apart from another widget's on the page. */
|
|
17
|
+
private readonly uid;
|
|
14
18
|
private tfRendered;
|
|
15
19
|
private themeBtn;
|
|
20
|
+
/** Indicator templates' names, listed atop the indicators menu. */
|
|
21
|
+
private indicatorTemplates;
|
|
16
22
|
private fullscreenBtn;
|
|
23
|
+
/** Where hosts' own buttons go: after the chart controls, and before the panel buttons. */
|
|
24
|
+
private hostLeft;
|
|
25
|
+
private hostRight;
|
|
17
26
|
constructor(host: HTMLElement, config: ToolbarConfig, callbacks: ToolbarCallbacks, t: Translator);
|
|
18
27
|
private build;
|
|
28
|
+
/** A host's own button, on the left or the right of the toolbar. */
|
|
29
|
+
addHostButton(spec: ToolbarButtonSpec): HTMLButtonElement;
|
|
30
|
+
private hostGroup;
|
|
31
|
+
/** Show a panel button (by its role: 'account', 'objects'…) as on or off. */
|
|
32
|
+
setActive(role: string, on: boolean): void;
|
|
33
|
+
/** The layout open now on its button (`null`: none saved yet), with a dot while it has unsaved changes. */
|
|
34
|
+
setLayout(name: string | null, dirty: boolean): void;
|
|
19
35
|
/** Swap the fullscreen button between enter and exit. */
|
|
20
36
|
setFullscreen(on: boolean): void;
|
|
21
37
|
private chartTypeLabel;
|
|
22
38
|
private buildChartTypeMenu;
|
|
39
|
+
/** The symbol's name on its button, as a tooltip ("Apple Inc. · NASDAQ"). */
|
|
40
|
+
setSymbolDescription(text: string | null): void;
|
|
41
|
+
/** A new list of timeframes (a custom one added or removed), with its pins. */
|
|
42
|
+
setTimeframes(timeframes: ToolbarConfig['timeframes'], favorites: TimeFrame[]): void;
|
|
23
43
|
/** Re-pin after the user starred or unstarred a timeframe. */
|
|
24
44
|
setTimeframeFavorites(favorites: TimeFrame[]): void;
|
|
25
45
|
private buildTimeframeMenu;
|
|
46
|
+
/** The custom-interval field: Enter or + adds it; text that isn't an interval is marked and kept. */
|
|
47
|
+
private wireCustomTimeframe;
|
|
26
48
|
private renderTimeframes;
|
|
49
|
+
/**
|
|
50
|
+
* The indicator templates to list (names), after one is saved or deleted.
|
|
51
|
+
* `keepFocus`: focus was in the menu (a delete), so it goes to "Save…".
|
|
52
|
+
*/
|
|
53
|
+
setIndicatorTemplates(names: readonly string[], keepFocus?: boolean): void;
|
|
54
|
+
/** Templates atop the indicators menu: apply one, delete one, save the chart's. */
|
|
55
|
+
private templatesMenuHtml;
|
|
27
56
|
private buildIndicatorMenu;
|
|
28
57
|
update(state: WidgetState): void;
|
|
29
58
|
private sep;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetToolbar.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetToolbar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"WidgetToolbar.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetToolbar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIlG,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAKlD,+FAA+F;AAC/F,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI7E;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,CAAC,CAAa;IACtB,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,WAAW,CAAmB;IACtC,gFAAgF;IAChF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiC;IACrD,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,QAAQ,CAAkC;IAClD,mEAAmE;IACnE,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,aAAa,CAAkC;IACvD,2FAA2F;IAC3F,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,SAAS,CAA+B;gBAEpC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,EAAE,UAAU;IAUhG,OAAO,CAAC,KAAK;IAwJb,oEAAoE;IACpE,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB;IAsBzD,OAAO,CAAC,SAAS;IAMjB,6EAA6E;IAC7E,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI;IAO1C,2GAA2G;IAC3G,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAYpD,yDAAyD;IACzD,aAAa,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI;IAQhC,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,kBAAkB;IAkB1B,6EAA6E;IAC7E,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAO/C,+EAA+E;IAC/E,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI;IAKpF,8DAA8D;IAC9D,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI;IAMnD,OAAO,CAAC,kBAAkB;IAiD1B,qGAAqG;IACrG,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,gBAAgB;IAsBxB;;;OAGG;IACH,qBAAqB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,UAAQ,GAAG,IAAI;IAMxE,mFAAmF;IACnF,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,kBAAkB;IA6C1B,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAiChC,OAAO,CAAC,GAAG;IAMX,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,OAAO;IASf,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { WatchlistList } from './WatchlistStore.js';
|
|
1
2
|
/**
|
|
2
|
-
* Watchlist sidebar
|
|
3
|
-
*
|
|
3
|
+
* Watchlist sidebar: the shown list's symbols, each with last price, % change
|
|
4
|
+
* and a mini sparkline. A menu switches, creates, renames and deletes lists;
|
|
5
|
+
* rows are added, removed and reordered (drag, or Alt+↑/↓). It only renders
|
|
6
|
+
* and reports: the widget keeps the lists (see WatchlistStore).
|
|
4
7
|
*
|
|
5
|
-
* The widget tracks the
|
|
6
|
-
*
|
|
7
|
-
* `setEntry(symbol, …)` so the row reflects whatever the app already has.
|
|
8
|
+
* The widget tracks the chart's symbol from the live stream, and fills the
|
|
9
|
+
* other rows from a quote source or what the host pushes (`setEntry`).
|
|
8
10
|
*/
|
|
9
11
|
export interface WatchlistEntry {
|
|
10
12
|
symbol: string;
|
|
@@ -16,27 +18,65 @@ export interface WatchlistEntry {
|
|
|
16
18
|
}
|
|
17
19
|
export interface WatchlistCallbacks {
|
|
18
20
|
onSelect: (symbol: string) => void;
|
|
21
|
+
/** "+": add a symbol to the shown list (the widget opens its symbol search). */
|
|
22
|
+
onAdd?: () => void;
|
|
23
|
+
onRemove?: (symbol: string) => void;
|
|
24
|
+
/** Move a symbol to `index` in the shown list. */
|
|
25
|
+
onMove?: (symbol: string, index: number) => void;
|
|
26
|
+
onPickList?: (id: string) => void;
|
|
27
|
+
onCreateList?: (name: string) => void;
|
|
28
|
+
onRenameList?: (id: string, name: string) => void;
|
|
29
|
+
onDeleteList?: (id: string) => void;
|
|
30
|
+
}
|
|
31
|
+
export interface WatchlistLabels {
|
|
32
|
+
title: string;
|
|
33
|
+
lists: string;
|
|
34
|
+
newList: string;
|
|
35
|
+
rename: string;
|
|
36
|
+
deleteList: string;
|
|
37
|
+
/** `{name}`: the list's name. */
|
|
38
|
+
confirmDelete: string;
|
|
39
|
+
add: string;
|
|
40
|
+
/** `{symbol}`. */
|
|
41
|
+
remove: string;
|
|
42
|
+
empty: string;
|
|
43
|
+
listName: string;
|
|
19
44
|
}
|
|
20
45
|
export declare class WidgetWatchlist {
|
|
46
|
+
private readonly callbacks;
|
|
47
|
+
private readonly labels;
|
|
21
48
|
private el;
|
|
49
|
+
private headerEl;
|
|
50
|
+
private nameBtn;
|
|
51
|
+
private menuEl;
|
|
22
52
|
private listEl;
|
|
23
53
|
private rowMap;
|
|
24
54
|
private entries;
|
|
55
|
+
private lists;
|
|
56
|
+
private activeList;
|
|
25
57
|
private active;
|
|
26
|
-
private callbacks;
|
|
27
58
|
private locale;
|
|
28
|
-
|
|
59
|
+
private dragging;
|
|
60
|
+
private readonly onOutside;
|
|
61
|
+
constructor(host: HTMLElement, callbacks: WatchlistCallbacks, labels: WatchlistLabels);
|
|
62
|
+
/** The lists, and which one shows. Rows are diffed so prices stay. */
|
|
63
|
+
setLists(lists: WatchlistList[], activeId: string): void;
|
|
29
64
|
/** Set the BCP 47 locale used for price/percent formatting. */
|
|
30
65
|
setLocale(locale: string | undefined): void;
|
|
31
|
-
/**
|
|
32
|
-
setSymbols(symbols: string[]): void;
|
|
66
|
+
/** The chart's symbol, marked in the list. */
|
|
33
67
|
setActive(symbol: string): void;
|
|
34
|
-
/**
|
|
35
|
-
* the active symbol. Apps can call it for the rest. */
|
|
68
|
+
/** A row's price, move and sparkline. Kept for symbols not shown yet. */
|
|
36
69
|
setEntry(symbol: string, patch: Partial<WatchlistEntry>): void;
|
|
37
70
|
destroy(): void;
|
|
38
|
-
private
|
|
39
|
-
private
|
|
71
|
+
private shownList;
|
|
72
|
+
private renderRows;
|
|
73
|
+
private makeRow;
|
|
74
|
+
private onRowKey;
|
|
40
75
|
private renderRow;
|
|
76
|
+
private openMenu;
|
|
77
|
+
private closeMenu;
|
|
78
|
+
private renderMenu;
|
|
79
|
+
/** A name typed in place of the list's: Enter keeps it, Escape or leaving drops it. */
|
|
80
|
+
private editName;
|
|
41
81
|
}
|
|
42
82
|
//# sourceMappingURL=WidgetWatchlist.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetWatchlist.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetWatchlist.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"WidgetWatchlist.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetWatchlist.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ChartContextArea, PriceScaleMode } from '@tradecanvas/commons';
|
|
2
|
+
import { ContextMenuEntry } from './WidgetContextMenu.js';
|
|
3
|
+
import { Translator } from './i18n.js';
|
|
4
|
+
/** What a menu on the chart (a right-click, or the "+" by the price axis) can do. */
|
|
5
|
+
export type ChartMenuAction = 'alert' | 'buyLimit' | 'buyStop' | 'sellLimit' | 'sellStop' | 'orderTicket' | 'horizontalLine' | 'resetView' | 'hideDrawings' | 'showDrawings' | 'removeDrawings' | 'settings' | 'exportData' | 'autoScale' | 'logScale' | 'percentScale' | 'invertScale' | 'goToDate' | 'paneLog' | 'paneInvert' | 'panePercent';
|
|
6
|
+
/** What the widget can do here, and how the chart is set now. */
|
|
7
|
+
export interface ChartMenuContext {
|
|
8
|
+
/** The price at the click (the price pane, the price axis, the "+"). */
|
|
9
|
+
price?: number;
|
|
10
|
+
/** The latest price, to tell a limit from a stop. */
|
|
11
|
+
lastPrice: number | null;
|
|
12
|
+
formatPrice: (price: number) => string;
|
|
13
|
+
canAlert: boolean;
|
|
14
|
+
canTrade: boolean;
|
|
15
|
+
/** An order ticket to open (the account panel is on). */
|
|
16
|
+
canOrderTicket?: boolean;
|
|
17
|
+
canDraw: boolean;
|
|
18
|
+
hasDrawings: boolean;
|
|
19
|
+
drawingsHidden: boolean;
|
|
20
|
+
canGoToDate: boolean;
|
|
21
|
+
/** A download of the bars and indicator lines (`features.dataExport`). */
|
|
22
|
+
canExport?: boolean;
|
|
23
|
+
autoScale: boolean;
|
|
24
|
+
scaleMode: PriceScaleMode;
|
|
25
|
+
inverted: boolean;
|
|
26
|
+
/** For a pane's menu: its scale switches. */
|
|
27
|
+
pane?: {
|
|
28
|
+
log: boolean;
|
|
29
|
+
invert: boolean;
|
|
30
|
+
percent: boolean;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* What to do at a price: an alert, a buy and a sell (a limit on the side of
|
|
35
|
+
* the market it would wait on, else a stop), a horizontal line.
|
|
36
|
+
*/
|
|
37
|
+
export declare function priceEntries(ctx: ChartMenuContext, t: Translator): ContextMenuEntry[];
|
|
38
|
+
/** The right-click menu for where it landed. */
|
|
39
|
+
export declare function chartMenuEntries(area: ChartContextArea, ctx: ChartMenuContext, t: Translator): ContextMenuEntry[];
|
|
40
|
+
//# sourceMappingURL=chartMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chartMenu.d.ts","sourceRoot":"","sources":["../../src/widget/chartMenu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAElD,qFAAqF;AACrF,MAAM,MAAM,eAAe,GACvB,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,gBAAgB,GAC9F,WAAW,GAAG,cAAc,GAAG,cAAc,GAAG,gBAAgB,GAAG,UAAU,GAAG,YAAY,GAC5F,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,aAAa,GACzD,UAAU,GACV,SAAS,GACT,YAAY,GACZ,aAAa,CAAC;AAElB,iEAAiE;AACjE,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,yDAAyD;IACzD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,cAAc,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,IAAI,CAAC,EAAE;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAC5D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,EAAE,CAAC,EAAE,UAAU,GAAG,gBAAgB,EAAE,CAoBrF;AAED,gDAAgD;AAChD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,EAAE,UAAU,GAAG,gBAAgB,EAAE,CAgDjH"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ContextMenuEntry } from './WidgetContextMenu.js';
|
|
2
|
+
import { Translator } from './i18n.js';
|
|
3
|
+
/** What a right-clicked drawing's menu can do. */
|
|
4
|
+
export type DrawingMenuAction = 'settings' | 'alert' | 'front' | 'forward' | 'backward' | 'back' | 'group' | 'ungroup' | 'lock' | 'unlock' | 'hide' | 'duplicate' | 'delete';
|
|
5
|
+
/** The right-clicked drawing and the selection it is part of. */
|
|
6
|
+
export interface DrawingMenuTarget {
|
|
7
|
+
/** Selected drawings: the right-clicked one, its group, or a selection it was part of. */
|
|
8
|
+
selected: readonly {
|
|
9
|
+
id: string;
|
|
10
|
+
locked: boolean;
|
|
11
|
+
groupId: string | null;
|
|
12
|
+
}[];
|
|
13
|
+
canConfigure: boolean;
|
|
14
|
+
canAlert: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* The menu's entries: settings and alert for one drawing, order, grouping,
|
|
18
|
+
* then lock, hide, duplicate and delete for the whole selection.
|
|
19
|
+
*/
|
|
20
|
+
export declare function drawingMenuEntries(target: DrawingMenuTarget, t: Translator): ContextMenuEntry[];
|
|
21
|
+
//# sourceMappingURL=drawingMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawingMenu.d.ts","sourceRoot":"","sources":["../../src/widget/drawingMenu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,kDAAkD;AAClD,MAAM,MAAM,iBAAiB,GACzB,UAAU,GAAG,OAAO,GACpB,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GACzC,OAAO,GAAG,SAAS,GACnB,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExD,iEAAiE;AACjE,MAAM,WAAW,iBAAiB;IAChC,0FAA0F;IAC1F,QAAQ,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;IAC7E,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,EAAE,UAAU,GAAG,gBAAgB,EAAE,CA8B/F"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** What Tab can land on inside a dialog. */
|
|
2
|
+
export declare const FOCUSABLE = "button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])";
|
|
3
|
+
/**
|
|
4
|
+
* Keep Tab inside `container` (a modal dialog): from its last control Tab
|
|
5
|
+
* goes to its first, and Shift+Tab the other way. Call from its keydown.
|
|
6
|
+
*/
|
|
7
|
+
export declare function keepTabInside(e: KeyboardEvent, container: HTMLElement): void;
|
|
8
|
+
//# sourceMappingURL=focusTrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focusTrap.d.ts","sourceRoot":"","sources":["../../src/widget/focusTrap.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,eAAO,MAAM,SAAS,uIAAqI,CAAC;AAE5J;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,GAAG,IAAI,CAe5E"}
|
package/dist/widget/i18n.d.ts
CHANGED
|
@@ -1,96 +1,27 @@
|
|
|
1
|
+
import { EN_MESSAGES, MessageKey, WidgetMessages } from './locales/en.js';
|
|
2
|
+
import { VI_MESSAGES } from './locales/vi.js';
|
|
3
|
+
export { EN_MESSAGES, VI_MESSAGES };
|
|
4
|
+
export type { MessageKey, WidgetMessages };
|
|
5
|
+
/** The locales registered so far: English, Vietnamese and any added with `registerWidgetLocale`. */
|
|
6
|
+
export declare const BUILTIN_LOCALES: Readonly<Record<string, Partial<WidgetMessages>>>;
|
|
1
7
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* display names, drawing-tool names, timezone/locale option labels) — those
|
|
6
|
-
* stay in English for now; see README "Widget i18n" for the current
|
|
7
|
-
* coverage and how to extend it via `messages`.
|
|
8
|
+
* Make a language available to `locale` on every ChartWidget, e.g.
|
|
9
|
+
* `registerWidgetLocale('ja', ja)` with `ja` from
|
|
10
|
+
* `@tradecanvas/chart/widget/locales`. Codes match case-insensitively.
|
|
8
11
|
*/
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
readonly 'toolbar.indicators.popular': "Popular";
|
|
13
|
-
readonly 'toolbar.indicators.all': "All";
|
|
14
|
-
readonly 'indicatorType.overlay': "overlay";
|
|
15
|
-
readonly 'indicatorType.panel': "panel";
|
|
16
|
-
readonly 'toolbar.replay': "Bar replay";
|
|
17
|
-
readonly 'replay.selectHint': "Click a bar to start the replay";
|
|
18
|
-
readonly 'replay.random': "Random bar";
|
|
19
|
-
readonly 'replay.realtime': "Back to realtime";
|
|
20
|
-
readonly 'replay.barsPerSecond': "bars/s";
|
|
21
|
-
readonly 'replay.play': "Play";
|
|
22
|
-
readonly 'replay.pause': "Pause";
|
|
23
|
-
readonly 'replay.stepBack': "Step back (Shift+←)";
|
|
24
|
-
readonly 'replay.stepForward': "Step forward (Shift+→)";
|
|
25
|
-
readonly 'toolbar.longBracket': "Long bracket";
|
|
26
|
-
readonly 'toolbar.shortBracket': "Short bracket";
|
|
27
|
-
readonly 'toolbar.depthLadder': "Depth ladder";
|
|
28
|
-
readonly 'toolbar.objects': "Objects";
|
|
29
|
-
readonly 'toolbar.priceAlerts': "Price alerts";
|
|
30
|
-
readonly 'toolbar.screenshot': "Screenshot";
|
|
31
|
-
readonly 'toolbar.settings': "Chart Settings";
|
|
32
|
-
readonly 'toolbar.toggleTheme': "Toggle theme";
|
|
33
|
-
readonly 'toolbar.timeframes': "Timeframes";
|
|
34
|
-
readonly 'toolbar.timeframes.pin': "Pin to toolbar";
|
|
35
|
-
readonly 'toolbar.fullscreen': "Fullscreen";
|
|
36
|
-
readonly 'legend.show': "Show";
|
|
37
|
-
readonly 'legend.hide': "Hide";
|
|
38
|
-
readonly 'legend.settings': "Settings";
|
|
39
|
-
readonly 'legend.remove': "Remove";
|
|
40
|
-
readonly 'legend.collapse': "Collapse indicators";
|
|
41
|
-
readonly 'legend.expand': "Show indicators";
|
|
42
|
-
readonly 'toolbar.exitFullscreen': "Exit fullscreen";
|
|
43
|
-
readonly 'range.presets': "Visible range";
|
|
44
|
-
readonly 'range.all': "All";
|
|
45
|
-
readonly 'range.goTo': "Go to date";
|
|
46
|
-
readonly 'range.goToSubmit': "Go to";
|
|
47
|
-
readonly 'range.date': "Date";
|
|
48
|
-
readonly 'range.time': "Time";
|
|
49
|
-
readonly 'range.cancel': "Cancel";
|
|
50
|
-
readonly 'range.beforeData': "Showing the earliest loaded bar";
|
|
51
|
-
readonly 'chartType.candlestick': "Candlestick";
|
|
52
|
-
readonly 'chartType.line': "Line";
|
|
53
|
-
readonly 'chartType.area': "Area";
|
|
54
|
-
readonly 'chartType.bar': "Bar";
|
|
55
|
-
readonly 'chartType.heikinAshi': "Heikin-Ashi";
|
|
56
|
-
readonly 'chartType.hollowCandle': "Hollow Candle";
|
|
57
|
-
readonly 'chartType.baseline': "Baseline";
|
|
58
|
-
readonly 'chartType.volumeCandles': "Volume Candles";
|
|
59
|
-
readonly 'chartType.equivolume': "Equivolume";
|
|
60
|
-
readonly 'chartType.hlcArea': "HLC Area";
|
|
61
|
-
readonly 'chartType.stepLine': "Step Line";
|
|
62
|
-
readonly 'chartType.lineWithMarkers': "Line + Markers";
|
|
63
|
-
readonly 'watchlist.title': "Watchlist";
|
|
64
|
-
readonly 'status.connecting': "Connecting...";
|
|
65
|
-
readonly 'status.live': "Live";
|
|
66
|
-
readonly 'status.connectionFailed': "Connection failed";
|
|
67
|
-
readonly 'status.loading': "Loading chart...";
|
|
68
|
-
readonly 'settings.title': "Chart Settings";
|
|
69
|
-
readonly 'settings.tab.style': "style";
|
|
70
|
-
readonly 'settings.tab.display': "display";
|
|
71
|
-
readonly 'settings.tab.scale': "scale";
|
|
72
|
-
readonly 'settings.resetToDefaults': "Reset to defaults";
|
|
73
|
-
readonly 'settings.done': "Done";
|
|
74
|
-
readonly 'settings.section.candleColors': "Candle Colors";
|
|
75
|
-
readonly 'settings.section.background': "Background";
|
|
76
|
-
readonly 'hotkeys.title': "Keyboard shortcuts";
|
|
77
|
-
readonly 'hotkeys.close': "Close";
|
|
78
|
-
readonly 'hotkeys.gotIt': "Got it";
|
|
79
|
-
readonly 'hotkeys.group.searchNavigation': "Search & navigation";
|
|
80
|
-
readonly 'hotkeys.group.chartManipulation': "Chart manipulation";
|
|
81
|
-
readonly 'hotkeys.group.touch': "Touch (mobile / tablet)";
|
|
82
|
-
readonly 'hotkeys.group.keyboard': "Keyboard";
|
|
83
|
-
readonly 'hotkeys.group.drawing': "Drawing";
|
|
84
|
-
};
|
|
85
|
-
export declare const VI_MESSAGES: Partial<Record<MessageKey, string>>;
|
|
86
|
-
export declare const BUILTIN_LOCALES: Record<string, Partial<Record<MessageKey, string>>>;
|
|
12
|
+
export declare function registerWidgetLocale(code: string, messages: Partial<WidgetMessages>): void;
|
|
13
|
+
/** The table for `locale`, if one is registered for it or its language. */
|
|
14
|
+
export declare function findWidgetLocale(locale: string): Partial<WidgetMessages> | undefined;
|
|
87
15
|
/**
|
|
88
16
|
* Resolve the widget's message table: built-in English as the base, the
|
|
89
|
-
*
|
|
90
|
-
* English
|
|
91
|
-
* `messages` overrides layered last so they always win.
|
|
17
|
+
* table for `locale` (or its language) on top, falling back key by key to
|
|
18
|
+
* English, then the host's `messages` last so they always win.
|
|
92
19
|
*/
|
|
93
|
-
export declare function resolveMessages(locale: string | undefined, overrides: Partial<
|
|
20
|
+
export declare function resolveMessages(locale: string | undefined, overrides: Partial<WidgetMessages> | undefined): WidgetMessages;
|
|
94
21
|
export type Translator = (key: MessageKey) => string;
|
|
95
|
-
export declare function createTranslator(messages:
|
|
22
|
+
export declare function createTranslator(messages: WidgetMessages): Translator;
|
|
23
|
+
/** English strings, for components used without a widget. */
|
|
24
|
+
export declare const EN_TRANSLATOR: Translator;
|
|
25
|
+
/** Fill `{name}` placeholders: `fill('Comparing {symbol}', { symbol: 'ETH' })`. */
|
|
26
|
+
export declare function fill(template: string, values: Record<string, string | number>): string;
|
|
96
27
|
//# sourceMappingURL=i18n.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/widget/i18n.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/widget/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AACpC,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;AAO3C,oGAAoG;AACpG,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAQ5E,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAE1F;AAYD,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,CAMpF;AAID;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAC7C,cAAc,CAahB;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,MAAM,CAAC;AAErD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,UAAU,CAErE;AAED,6DAA6D;AAC7D,eAAO,MAAM,aAAa,EAAE,UAA0C,CAAC;AAEvE,mFAAmF;AACnF,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAEtF"}
|