@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.
Files changed (195) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +910 -858
  3. package/dist/Chart.d.ts +606 -23
  4. package/dist/Chart.d.ts.map +1 -1
  5. package/dist/DataManager.d.ts +5 -0
  6. package/dist/DataManager.d.ts.map +1 -1
  7. package/dist/HistoryPager.d.ts +58 -0
  8. package/dist/HistoryPager.d.ts.map +1 -0
  9. package/dist/LayoutSession-CTZB90NX.cjs +2 -0
  10. package/dist/LayoutSession-CTZB90NX.cjs.map +1 -0
  11. package/dist/LayoutSession-CWn3sdbs.js +3967 -0
  12. package/dist/LayoutSession-CWn3sdbs.js.map +1 -0
  13. package/dist/ThemeManager.d.ts +5 -1
  14. package/dist/ThemeManager.d.ts.map +1 -1
  15. package/dist/chartA11y.d.ts +59 -0
  16. package/dist/chartA11y.d.ts.map +1 -0
  17. package/dist/charts/ChartTypeStrategy.d.ts +5 -4
  18. package/dist/charts/ChartTypeStrategy.d.ts.map +1 -1
  19. package/dist/grid/ChartGrid.d.ts +6 -1
  20. package/dist/grid/ChartGrid.d.ts.map +1 -1
  21. package/dist/i18n-CiQ8EDVs.js +1469 -0
  22. package/dist/i18n-CiQ8EDVs.js.map +1 -0
  23. package/dist/i18n-WsLA9SmD.cjs +2 -0
  24. package/dist/i18n-WsLA9SmD.cjs.map +1 -0
  25. package/dist/index.cjs +1 -1
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.d.ts +22 -3
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +31 -31
  30. package/dist/index.js.map +1 -1
  31. package/dist/indicatorLabel.d.ts +7 -0
  32. package/dist/indicatorLabel.d.ts.map +1 -0
  33. package/dist/layout/LayoutManager.d.ts +50 -0
  34. package/dist/layout/LayoutManager.d.ts.map +1 -1
  35. package/dist/layout/priceAxisWidth.d.ts +2 -0
  36. package/dist/layout/priceAxisWidth.d.ts.map +1 -1
  37. package/dist/regularHours.d.ts +10 -0
  38. package/dist/regularHours.d.ts.map +1 -0
  39. package/dist/state/LayoutSession.d.ts +101 -0
  40. package/dist/state/LayoutSession.d.ts.map +1 -0
  41. package/dist/state/layoutStorage.d.ts +46 -0
  42. package/dist/state/layoutStorage.d.ts.map +1 -0
  43. package/dist/trading/wireExecution.d.ts +7 -3
  44. package/dist/trading/wireExecution.d.ts.map +1 -1
  45. package/dist/widget/ChartWidget.d.ts +219 -10
  46. package/dist/widget/ChartWidget.d.ts.map +1 -1
  47. package/dist/widget/ChartWidgetGrid.d.ts +166 -0
  48. package/dist/widget/ChartWidgetGrid.d.ts.map +1 -0
  49. package/dist/widget/DrawingTemplateStore.d.ts +29 -8
  50. package/dist/widget/DrawingTemplateStore.d.ts.map +1 -1
  51. package/dist/widget/WatchlistStore.d.ts +65 -0
  52. package/dist/widget/WatchlistStore.d.ts.map +1 -0
  53. package/dist/widget/WidgetAccountPanel.d.ts +72 -0
  54. package/dist/widget/WidgetAccountPanel.d.ts.map +1 -0
  55. package/dist/widget/WidgetAlertsPanel.d.ts +50 -3
  56. package/dist/widget/WidgetAlertsPanel.d.ts.map +1 -1
  57. package/dist/widget/WidgetBracketBar.d.ts +3 -1
  58. package/dist/widget/WidgetBracketBar.d.ts.map +1 -1
  59. package/dist/widget/WidgetChartNav.d.ts +36 -0
  60. package/dist/widget/WidgetChartNav.d.ts.map +1 -0
  61. package/dist/widget/WidgetCommandPalette.d.ts +3 -1
  62. package/dist/widget/WidgetCommandPalette.d.ts.map +1 -1
  63. package/dist/widget/WidgetContextMenu.d.ts +40 -0
  64. package/dist/widget/WidgetContextMenu.d.ts.map +1 -0
  65. package/dist/widget/WidgetDataWindow.d.ts +3 -1
  66. package/dist/widget/WidgetDataWindow.d.ts.map +1 -1
  67. package/dist/widget/WidgetDepthLadder.d.ts +3 -1
  68. package/dist/widget/WidgetDepthLadder.d.ts.map +1 -1
  69. package/dist/widget/WidgetDrawingSettings.d.ts +108 -0
  70. package/dist/widget/WidgetDrawingSettings.d.ts.map +1 -0
  71. package/dist/widget/WidgetDrawingSidebar.d.ts +14 -1
  72. package/dist/widget/WidgetDrawingSidebar.d.ts.map +1 -1
  73. package/dist/widget/WidgetDrawingStyle.d.ts +3 -1
  74. package/dist/widget/WidgetDrawingStyle.d.ts.map +1 -1
  75. package/dist/widget/WidgetDropdown.d.ts.map +1 -1
  76. package/dist/widget/WidgetGoToDate.d.ts +5 -4
  77. package/dist/widget/WidgetGoToDate.d.ts.map +1 -1
  78. package/dist/widget/WidgetHistoryPill.d.ts +23 -0
  79. package/dist/widget/WidgetHistoryPill.d.ts.map +1 -0
  80. package/dist/widget/WidgetHotkeySheet.d.ts.map +1 -1
  81. package/dist/widget/WidgetIndicatorLegend.d.ts +31 -1
  82. package/dist/widget/WidgetIndicatorLegend.d.ts.map +1 -1
  83. package/dist/widget/WidgetIndicatorSettings.d.ts +62 -7
  84. package/dist/widget/WidgetIndicatorSettings.d.ts.map +1 -1
  85. package/dist/widget/WidgetIntervalInput.d.ts +34 -0
  86. package/dist/widget/WidgetIntervalInput.d.ts.map +1 -0
  87. package/dist/widget/WidgetLayoutsDialog.d.ts +39 -0
  88. package/dist/widget/WidgetLayoutsDialog.d.ts.map +1 -0
  89. package/dist/widget/WidgetLayoutsUI.d.ts +37 -0
  90. package/dist/widget/WidgetLayoutsUI.d.ts.map +1 -0
  91. package/dist/widget/WidgetNamePrompt.d.ts +31 -0
  92. package/dist/widget/WidgetNamePrompt.d.ts.map +1 -0
  93. package/dist/widget/WidgetObjectTree.d.ts +21 -3
  94. package/dist/widget/WidgetObjectTree.d.ts.map +1 -1
  95. package/dist/widget/WidgetOrderTicket.d.ts +49 -0
  96. package/dist/widget/WidgetOrderTicket.d.ts.map +1 -0
  97. package/dist/widget/WidgetReplayBar.d.ts +15 -0
  98. package/dist/widget/WidgetReplayBar.d.ts.map +1 -1
  99. package/dist/widget/WidgetSettings.d.ts +13 -1
  100. package/dist/widget/WidgetSettings.d.ts.map +1 -1
  101. package/dist/widget/WidgetStatusBar.d.ts +3 -0
  102. package/dist/widget/WidgetStatusBar.d.ts.map +1 -1
  103. package/dist/widget/WidgetStyles.d.ts +3 -1
  104. package/dist/widget/WidgetStyles.d.ts.map +1 -1
  105. package/dist/widget/WidgetSymbolInfo.d.ts +64 -0
  106. package/dist/widget/WidgetSymbolInfo.d.ts.map +1 -0
  107. package/dist/widget/WidgetSymbolSearch.d.ts +26 -5
  108. package/dist/widget/WidgetSymbolSearch.d.ts.map +1 -1
  109. package/dist/widget/WidgetToolbar.d.ts +30 -1
  110. package/dist/widget/WidgetToolbar.d.ts.map +1 -1
  111. package/dist/widget/WidgetWatchlist.d.ts +53 -13
  112. package/dist/widget/WidgetWatchlist.d.ts.map +1 -1
  113. package/dist/widget/chartMenu.d.ts +40 -0
  114. package/dist/widget/chartMenu.d.ts.map +1 -0
  115. package/dist/widget/drawingMenu.d.ts +21 -0
  116. package/dist/widget/drawingMenu.d.ts.map +1 -0
  117. package/dist/widget/focusTrap.d.ts +8 -0
  118. package/dist/widget/focusTrap.d.ts.map +1 -0
  119. package/dist/widget/i18n.d.ts +20 -89
  120. package/dist/widget/i18n.d.ts.map +1 -1
  121. package/dist/widget/iconSet.d.ts.map +1 -1
  122. package/dist/widget/index.cjs +4294 -3028
  123. package/dist/widget/index.cjs.map +1 -1
  124. package/dist/widget/index.d.ts +15 -1
  125. package/dist/widget/index.d.ts.map +1 -1
  126. package/dist/widget/index.js +6326 -1185
  127. package/dist/widget/index.js.map +1 -1
  128. package/dist/widget/indicatorTemplates.d.ts +24 -0
  129. package/dist/widget/indicatorTemplates.d.ts.map +1 -0
  130. package/dist/widget/keyTarget.d.ts +11 -0
  131. package/dist/widget/keyTarget.d.ts.map +1 -0
  132. package/dist/widget/legendValues.d.ts +11 -6
  133. package/dist/widget/legendValues.d.ts.map +1 -1
  134. package/dist/widget/locales/ar.d.ts +4 -0
  135. package/dist/widget/locales/ar.d.ts.map +1 -0
  136. package/dist/widget/locales/de.d.ts +4 -0
  137. package/dist/widget/locales/de.d.ts.map +1 -0
  138. package/dist/widget/locales/en.d.ts +722 -0
  139. package/dist/widget/locales/en.d.ts.map +1 -0
  140. package/dist/widget/locales/es.d.ts +4 -0
  141. package/dist/widget/locales/es.d.ts.map +1 -0
  142. package/dist/widget/locales/fr.d.ts +4 -0
  143. package/dist/widget/locales/fr.d.ts.map +1 -0
  144. package/dist/widget/locales/he.d.ts +4 -0
  145. package/dist/widget/locales/he.d.ts.map +1 -0
  146. package/dist/widget/locales/id.d.ts +4 -0
  147. package/dist/widget/locales/id.d.ts.map +1 -0
  148. package/dist/widget/locales/index.cjs +2 -0
  149. package/dist/widget/locales/index.cjs.map +1 -0
  150. package/dist/widget/locales/index.d.ts +33 -0
  151. package/dist/widget/locales/index.d.ts.map +1 -0
  152. package/dist/widget/locales/index.js +10089 -0
  153. package/dist/widget/locales/index.js.map +1 -0
  154. package/dist/widget/locales/ja.d.ts +4 -0
  155. package/dist/widget/locales/ja.d.ts.map +1 -0
  156. package/dist/widget/locales/ko.d.ts +4 -0
  157. package/dist/widget/locales/ko.d.ts.map +1 -0
  158. package/dist/widget/locales/pt.d.ts +4 -0
  159. package/dist/widget/locales/pt.d.ts.map +1 -0
  160. package/dist/widget/locales/ru.d.ts +4 -0
  161. package/dist/widget/locales/ru.d.ts.map +1 -0
  162. package/dist/widget/locales/th.d.ts +4 -0
  163. package/dist/widget/locales/th.d.ts.map +1 -0
  164. package/dist/widget/locales/tr.d.ts +4 -0
  165. package/dist/widget/locales/tr.d.ts.map +1 -0
  166. package/dist/widget/locales/vi.d.ts +4 -0
  167. package/dist/widget/locales/vi.d.ts.map +1 -0
  168. package/dist/widget/locales/zh.d.ts +4 -0
  169. package/dist/widget/locales/zh.d.ts.map +1 -0
  170. package/dist/widget/locales/zhHant.d.ts +4 -0
  171. package/dist/widget/locales/zhHant.d.ts.map +1 -0
  172. package/dist/widget/orderTicket.d.ts +27 -0
  173. package/dist/widget/orderTicket.d.ts.map +1 -0
  174. package/dist/widget/settingsControls.d.ts +24 -0
  175. package/dist/widget/settingsControls.d.ts.map +1 -0
  176. package/dist/widget/types.d.ts +182 -6
  177. package/dist/widget/types.d.ts.map +1 -1
  178. package/dist/widget/widgetConfig.d.ts.map +1 -1
  179. package/dist/widget/widgetLayout.d.ts +22 -0
  180. package/dist/widget/widgetLayout.d.ts.map +1 -0
  181. package/dist/widget/widgetLocales.d.ts +17 -0
  182. package/dist/widget/widgetLocales.d.ts.map +1 -0
  183. package/dist/widget/widgetTimeframes.d.ts +8 -0
  184. package/dist/widget/widgetTimeframes.d.ts.map +1 -1
  185. package/dist/widget/widgetTimezones.d.ts +32 -0
  186. package/dist/widget/widgetTimezones.d.ts.map +1 -0
  187. package/dist/widget/widgetUI.d.ts +126 -0
  188. package/dist/widget/widgetUI.d.ts.map +1 -0
  189. package/package.json +8 -3
  190. package/dist/DragDropImporter-C5kgfbET.cjs +0 -2
  191. package/dist/DragDropImporter-C5kgfbET.cjs.map +0 -1
  192. package/dist/DragDropImporter-Dd9Mud5J.js +0 -2099
  193. package/dist/DragDropImporter-Dd9Mud5J.js.map +0 -1
  194. package/dist/charts/IndicatorPriceRange.d.ts +0 -20
  195. package/dist/charts/IndicatorPriceRange.d.ts.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import { DrawingStyle } from '@tradecanvas/commons';
2
2
  import { DrawingTemplateStore } from './DrawingTemplateStore.js';
3
+ import { Translator } from './i18n.js';
3
4
  export interface DrawingStyleCallbacks {
4
5
  /** Apply a style change to the active (next) drawing and the selected one. */
5
6
  onStyleChange: (style: Partial<DrawingStyle>) => void;
@@ -12,13 +13,14 @@ export interface DrawingStyleCallbacks {
12
13
  * persisted via `DrawingTemplateStore`.
13
14
  */
14
15
  export declare class WidgetDrawingStyle {
16
+ private readonly t;
15
17
  private el;
16
18
  private templatesEl;
17
19
  private nameInput;
18
20
  private callbacks;
19
21
  private store;
20
22
  private open;
21
- constructor(host: HTMLElement, callbacks: DrawingStyleCallbacks, store: DrawingTemplateStore);
23
+ constructor(host: HTMLElement, callbacks: DrawingStyleCallbacks, store: DrawingTemplateStore, t?: Translator);
22
24
  isOpen(): boolean;
23
25
  toggle(): void;
24
26
  openPanel(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetDrawingStyle.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetDrawingStyle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IACtD,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,YAAY,CAAC;CAC9B;AAMD;;;;GAIG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,qBAAqB,EAAE,KAAK,EAAE,oBAAoB;IAuD5F,MAAM,IAAI,OAAO;IAIjB,MAAM,IAAI,IAAI;IAId,SAAS,IAAI,IAAI;IAOjB,KAAK,IAAI,IAAI;IAKb,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,QAAQ;IAqBhB,OAAO,CAAC,QAAQ;IAiBhB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,UAAU;IAKlB,2DAA2D;IAC3D,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,eAAe;CA4CxB"}
1
+ {"version":3,"file":"WidgetDrawingStyle.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetDrawingStyle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAG3D,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IACtD,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,YAAY,CAAC;CAC9B;AAMD;;;;GAIG;AACH,qBAAa,kBAAkB;IAY3B,OAAO,CAAC,QAAQ,CAAC,CAAC;IAXpB,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,IAAI,CAAS;gBAGnB,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,qBAAqB,EAChC,KAAK,EAAE,oBAAoB,EACV,CAAC,GAAE,UAA0B;IAwDhD,MAAM,IAAI,OAAO;IAIjB,MAAM,IAAI,IAAI;IAId,SAAS,IAAI,IAAI;IAOjB,KAAK,IAAI,IAAI;IAKb,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,QAAQ;IAqBhB,OAAO,CAAC,QAAQ;IAiBhB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,UAAU;IAKlB,2DAA2D;IAC3D,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,eAAe;CA4CxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetDropdown.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetDropdown.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,cAAc,CAAa;gBAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAO;IAwC3F,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B,IAAI,IAAI,IAAI;IAQZ,KAAK,IAAI,IAAI;IAQb,MAAM,IAAI,OAAO;IAIjB,OAAO,IAAI,IAAI;CAMhB"}
1
+ {"version":3,"file":"WidgetDropdown.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetDropdown.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,cAAc,CAAa;gBAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAO;IA0C3F,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B,IAAI,IAAI,IAAI;IAQZ,KAAK,IAAI,IAAI;IAQb,MAAM,IAAI,OAAO;IAIjB,OAAO,IAAI,IAAI;CAMhB"}
@@ -1,11 +1,12 @@
1
+ import { TimeZoneSetting } from '@tradecanvas/commons';
1
2
  /**
2
3
  * A wall-clock date ("2026-03-01") and time ("14:30", empty = midnight) in the
3
- * display timezone (`tzOffsetMinutes` east of UTC; null = the browser's) as a
4
- * UTC timestamp. Null when the date or time is not valid.
4
+ * display timezone (an IANA zone, minutes east of UTC, or null for the
5
+ * browser's) as a UTC timestamp. Null when the date or time is not valid.
5
6
  */
6
- export declare function wallTimeToUtc(date: string, time: string, tzOffsetMinutes: number | null): number | null;
7
+ export declare function wallTimeToUtc(date: string, time: string, tz: TimeZoneSetting): number | null;
7
8
  /** The date and time fields' values for `ts` in the display timezone. */
8
- export declare function utcToWallTime(ts: number, tzOffsetMinutes: number | null): {
9
+ export declare function utcToWallTime(ts: number, tz: TimeZoneSetting): {
9
10
  date: string;
10
11
  time: string;
11
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetGoToDate.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetGoToDate.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAavG;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAcxG;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,qBAAa,cAAc;IAWvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAZ3B,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,WAAW,CAA4B;IAC/C,mFAAmF;IACnF,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGxB;gBAGiB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI;IAG5E,MAAM,IAAI,OAAO;IAIjB,IAAI,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,GAAE,OAAO,GAAG,IAAW,GAAG,IAAI;IAmDlF,KAAK,IAAI,IAAI;IAUb,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,KAAK;CAad"}
1
+ {"version":3,"file":"WidgetGoToDate.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetGoToDate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAKlF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAS5F;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAO7F;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,qBAAa,cAAc;IAWvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAZ3B,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,WAAW,CAA4B;IAC/C,mFAAmF;IACnF,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGxB;gBAGiB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI;IAG5E,MAAM,IAAI,OAAO;IAIjB,IAAI,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,GAAE,OAAO,GAAG,IAAW,GAAG,IAAI;IAmDlF,KAAK,IAAI,IAAI;IAUb,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,KAAK;CAad"}
@@ -0,0 +1,23 @@
1
+ import { HistoryLoadPayload } from '@tradecanvas/commons';
2
+ /** How long a failed history page stays reported. */
3
+ export declare const HISTORY_ERROR_MS = 4000;
4
+ /**
5
+ * A small status pill at the left edge of the chart while older bars load
6
+ * (scrolling back in time), and briefly when a page fails.
7
+ */
8
+ export declare class WidgetHistoryPill {
9
+ private readonly texts;
10
+ private readonly el;
11
+ private readonly text;
12
+ private hideTimer;
13
+ constructor(parent: HTMLElement, texts: {
14
+ loading: string;
15
+ failed: string;
16
+ });
17
+ update(payload: HistoryLoadPayload): void;
18
+ destroy(): void;
19
+ private show;
20
+ private hide;
21
+ private clearTimer;
22
+ }
23
+ //# sourceMappingURL=WidgetHistoryPill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetHistoryPill.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetHistoryPill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,qDAAqD;AACrD,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;;GAGG;AACH,qBAAa,iBAAiB;IAKK,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJvD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;IACvC,OAAO,CAAC,SAAS,CAA8C;gBAEnD,MAAM,EAAE,WAAW,EAAmB,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAc5F,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAYzC,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,UAAU;CAInB"}
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetHotkeySheet.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetHotkeySheet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,WAAW,CAAC;AAExD;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAkFD,qBAAa,iBAAiB;IAW1B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAVvB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,CAAC,CAAa;IACtB,OAAO,CAAC,YAAY,CAA6B;IAEjD,6FAA6F;gBAE3F,SAAS,EAAE,oBAAoB,EAC/B,CAAC,EAAE,UAAU,EACI,IAAI,GAAE,MAAM,WAAiC;IAYhE,IAAI,IAAI,IAAI;IAsFZ,KAAK,IAAI,IAAI;IASb,MAAM,IAAI,OAAO;IAIjB,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"WidgetHotkeySheet.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetHotkeySheet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,WAAW,CAAC;AAExD;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAiGD,qBAAa,iBAAiB;IAW1B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAVvB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,CAAC,CAAa;IACtB,OAAO,CAAC,YAAY,CAA6B;IAEjD,6FAA6F;gBAE3F,SAAS,EAAE,oBAAoB,EAC/B,CAAC,EAAE,UAAU,EACI,IAAI,GAAE,MAAM,WAAiC;IAYhE,IAAI,IAAI,IAAI;IA4FZ,KAAK,IAAI,IAAI;IASb,MAAM,IAAI,OAAO;IAIjB,OAAO,IAAI,IAAI;CAGhB"}
@@ -18,10 +18,29 @@ export interface IndicatorLegendRow {
18
18
  width: number;
19
19
  } | null;
20
20
  }
21
+ /** An indicator pane, for the buttons at its top right. */
22
+ export interface IndicatorLegendPane {
23
+ /** The indicator whose pane it is. */
24
+ instanceId: string;
25
+ /** The pane's top right corner, inside the price axis (container px). */
26
+ x: number;
27
+ y: number;
28
+ /** For the buttons' names: "Collapse pane RSI 14". */
29
+ label: string;
30
+ collapsed: boolean;
31
+ maximized: boolean;
32
+ canMoveUp: boolean;
33
+ canMoveDown: boolean;
34
+ }
35
+ export type PaneAction = 'up' | 'down' | 'collapse' | 'expand' | 'maximize' | 'restore';
21
36
  export interface IndicatorLegendCallbacks {
22
37
  onToggleVisible: (instanceId: string, visible: boolean) => void;
23
38
  onSettings: (instanceId: string) => void;
24
39
  onRemove: (instanceId: string) => void;
40
+ /** The row's "more" button: a menu under `anchor` (move to another pane…). */
41
+ onMore?: (instanceId: string, anchor: HTMLElement) => void;
42
+ /** A pane's button: move it, fold it, maximise it. */
43
+ onPaneAction?: (instanceId: string, action: PaneAction) => void;
25
44
  }
26
45
  export interface IndicatorLegendLabels {
27
46
  show: string;
@@ -30,6 +49,13 @@ export interface IndicatorLegendLabels {
30
49
  remove: string;
31
50
  collapse: string;
32
51
  expand: string;
52
+ more?: string;
53
+ paneUp?: string;
54
+ paneDown?: string;
55
+ paneCollapse?: string;
56
+ paneExpand?: string;
57
+ paneMaximize?: string;
58
+ paneRestore?: string;
33
59
  }
34
60
  /**
35
61
  * The indicators on the chart itself, instead of chips in the toolbar: price
@@ -47,6 +73,7 @@ export declare class WidgetIndicatorLegend {
47
73
  private readonly stack;
48
74
  private readonly toggle;
49
75
  private readonly rows;
76
+ private readonly panes;
50
77
  private collapsed;
51
78
  private toggleKey;
52
79
  private stackKey;
@@ -54,8 +81,11 @@ export declare class WidgetIndicatorLegend {
54
81
  update(rows: readonly IndicatorLegendRow[], overlay: {
55
82
  left: number;
56
83
  top: number;
57
- }): void;
84
+ }, panes?: readonly IndicatorLegendPane[]): void;
58
85
  destroy(): void;
86
+ /** Each pane's buttons at its top right: move up, move down, fold, maximise. */
87
+ private updatePanes;
88
+ private createPane;
59
89
  private createRow;
60
90
  private fill;
61
91
  /** Pane rows are placed in their pane; stacked rows flow in the stack. */
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetIndicatorLegend.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetIndicatorLegend.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,MAAM,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;IAC1D;;;OAGG;IACH,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACtD;AAED,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAChE,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAkBD;;;;;;;;GAQG;AACH,qBAAa,qBAAqB;IAS9B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,QAAQ,CAAM;gBAGH,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,wBAAwB,EACnC,MAAM,EAAE,qBAAqB;IAehD,MAAM,CAAC,IAAI,EAAE,SAAS,kBAAkB,EAAE,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAiCzF,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,SAAS;IAwCjB,OAAO,CAAC,IAAI;IAwBZ,0EAA0E;IAC1E,OAAO,CAAC,KAAK;IAUb,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,YAAY;IAIpB,wEAAwE;IACxE,OAAO,CAAC,YAAY;CAcrB"}
1
+ {"version":3,"file":"WidgetIndicatorLegend.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetIndicatorLegend.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { IndicatorInputSpec, IndicatorPlot } from '@tradecanvas/commons';
2
+ import { Translator } from './i18n.js';
1
3
  export type IndicatorParamValue = number | string | boolean;
2
4
  export interface IndicatorSettingsTarget {
3
5
  instanceId: string;
@@ -6,37 +8,90 @@ export interface IndicatorSettingsTarget {
6
8
  defaults: Record<string, unknown>;
7
9
  /** Current values, overlaid on defaults. */
8
10
  params: Record<string, unknown>;
11
+ /** How parameters are edited (the descriptor's `inputs`). */
12
+ inputs?: Readonly<Record<string, IndicatorInputSpec>>;
13
+ /** Other indicators' lines a source can be: value `ind:<instanceId>:<key>`. */
14
+ lineSources?: readonly {
15
+ value: string;
16
+ label: string;
17
+ }[];
18
+ /** What it draws; with `colors`, the Style tab. */
19
+ plots?: readonly IndicatorPlot[];
20
+ colors?: readonly string[];
21
+ lineWidth?: number;
22
+ /** Its levels and its indicator's defaults; with them, the Levels tab. */
23
+ levels?: readonly number[];
24
+ defaultLevels?: readonly number[];
25
+ /** The price scale an overlay is on; set only for price-pane overlays. */
26
+ scale?: 'right' | 'left';
9
27
  }
10
28
  export interface IndicatorSettingsCallbacks {
11
29
  onApply: (instanceId: string, params: Record<string, IndicatorParamValue>) => void;
30
+ onStyle?: (instanceId: string, style: {
31
+ colors?: string[];
32
+ lineWidths?: number[];
33
+ }) => void;
34
+ /** `null` restores the indicator's default levels. */
35
+ onLevels?: (instanceId: string, levels: number[] | null) => void;
36
+ /** Move an overlay to the left price scale or back to the price scale. */
37
+ onScale?: (instanceId: string, scale: 'right' | 'left') => void;
12
38
  onClose: () => void;
13
39
  }
14
40
  /**
15
- * Per-indicator parameter editor. Introspects the indicator's default config to
16
- * decide each control (number → stepper, boolean → toggle, hex string → color,
17
- * other string → text) and applies edits live via `onApply`.
41
+ * Per-indicator settings: its inputs (a stepper, toggle, colour, choice or
42
+ * source for each parameter), its style (a colour per line, the line width)
43
+ * and its levels. Every edit applies at once.
18
44
  */
19
45
  export declare class WidgetIndicatorSettings {
20
46
  private backdrop;
21
47
  private modal;
22
48
  private bodyEl;
23
49
  private titleEl;
50
+ private tabsEl;
51
+ private resetBtn;
24
52
  private callbacks;
25
53
  private target;
26
54
  private draft;
27
- constructor(host: HTMLElement, callbacks: IndicatorSettingsCallbacks);
55
+ private colors;
56
+ private levels;
57
+ private tab;
58
+ private tabButtons;
59
+ private returnFocus;
60
+ private readonly uid;
61
+ private readonly t;
62
+ constructor(host: HTMLElement, callbacks: IndicatorSettingsCallbacks, t?: Translator);
28
63
  open(target: IndicatorSettingsTarget): void;
29
64
  close(): void;
30
65
  isOpen(): boolean;
31
66
  destroy(): void;
67
+ private tabs;
68
+ /** The tab buttons for this indicator; built on open, then only marked (focus stays put). */
69
+ private renderTabs;
70
+ private markTabs;
71
+ private selectTab;
72
+ /** Arrow keys, Home and End move between tabs. */
73
+ private onTabKey;
74
+ /** Escape closes; Tab stays inside the dialog. */
75
+ private onKeyDown;
76
+ private renderBody;
32
77
  private currentValue;
33
78
  private setValue;
34
- private resetDefaults;
35
- private renderFields;
79
+ private renderInputs;
36
80
  private fieldRow;
81
+ private sourceControl;
82
+ private choiceControl;
37
83
  private toggleControl;
38
84
  private numberControl;
39
- private colorControl;
40
85
  private textControl;
86
+ /** One row per colour the indicator uses: the lines drawn in it, and "up" / "down" for two-tone ones. */
87
+ private renderStyle;
88
+ private renderLevels;
89
+ private applyLevels;
90
+ private resetTab;
91
+ /** A labelled control: clicking the label reaches the control. */
92
+ private row;
93
+ private note;
94
+ private option;
95
+ private colorInput;
41
96
  }
42
97
  //# sourceMappingURL=WidgetIndicatorSettings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetIndicatorSettings.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetIndicatorSettings.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE5D,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,KAAK,IAAI,CAAC;IACnF,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAYD;;;;GAIG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,KAAK,CAA2C;gBAE5C,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,0BAA0B;IAgDpE,IAAI,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAQ3C,KAAK,IAAI,IAAI;IAMb,MAAM,IAAI,OAAO;IAIjB,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,QAAQ;IAuBhB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,WAAW;CAQpB"}
1
+ {"version":3,"file":"WidgetIndicatorSettings.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetIndicatorSettings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { TimeFrame } from '@tradecanvas/commons';
2
+ export interface IntervalInputLabels {
3
+ /** The field's name: "Change interval". */
4
+ title: string;
5
+ /** Under it: "5, 15m, 1h, 1D — Enter to apply". */
6
+ hint: string;
7
+ /** When the text isn't an interval the chart can show. */
8
+ invalid: string;
9
+ }
10
+ /**
11
+ * Typing a number on the chart opens this: the interval typed so far, in a
12
+ * small field over the chart. Enter switches to it, Escape or leaving it
13
+ * closes it.
14
+ */
15
+ export declare class WidgetIntervalInput {
16
+ private readonly labels;
17
+ /** Switch to `tf`; false when the chart can't show it. */
18
+ private readonly onApply;
19
+ private el;
20
+ private input;
21
+ private hint;
22
+ private returnFocus;
23
+ constructor(host: HTMLElement, labels: IntervalInputLabels,
24
+ /** Switch to `tf`; false when the chart can't show it. */
25
+ onApply: (tf: TimeFrame) => boolean);
26
+ /** Open with what was typed so far (the first digit). */
27
+ open(text: string): void;
28
+ close(restoreFocus?: boolean): void;
29
+ isOpen(): boolean;
30
+ destroy(): void;
31
+ private check;
32
+ private apply;
33
+ }
34
+ //# sourceMappingURL=WidgetIntervalInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetIntervalInput.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetIntervalInput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;;;GAIG;AACH,qBAAa,mBAAmB;IAQ5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAT1B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,WAAW,CAA4B;gBAG7C,IAAI,EAAE,WAAW,EACA,MAAM,EAAE,mBAAmB;IAC5C,0DAA0D;IACzC,OAAO,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,OAAO;IAsCtD,yDAAyD;IACzD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASxB,KAAK,CAAC,YAAY,UAAO,GAAG,IAAI;IAQhC,MAAM,IAAI,OAAO;IAIjB,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,KAAK;CASd"}
@@ -0,0 +1,39 @@
1
+ import { Translator } from './i18n.js';
2
+ import { SavedLayoutSummary } from '../state/layoutStorage.js';
3
+ export interface LayoutsDialogCallbacks {
4
+ list: () => Promise<SavedLayoutSummary[]>;
5
+ /** The id of the layout showing now. */
6
+ currentId: () => string | null;
7
+ onOpen: (id: string) => void;
8
+ onRename: (layout: SavedLayoutSummary) => void;
9
+ onDelete: (id: string) => Promise<void>;
10
+ formatTime: (ms: number) => string;
11
+ }
12
+ /** Every saved layout, searchable: open one, rename it or delete it (asked twice). */
13
+ export declare class WidgetLayoutsDialog {
14
+ private readonly callbacks;
15
+ private readonly t;
16
+ private backdrop;
17
+ private search;
18
+ private listEl;
19
+ private layouts;
20
+ private confirming;
21
+ private returnFocus;
22
+ private loadSeq;
23
+ private readonly uid;
24
+ constructor(host: HTMLElement, callbacks: LayoutsDialogCallbacks, t?: Translator);
25
+ open(): Promise<void>;
26
+ /** Read the list again (after a rename, say). */
27
+ refresh(): Promise<void>;
28
+ close(): void;
29
+ isOpen(): boolean;
30
+ destroy(): void;
31
+ private shown;
32
+ private render;
33
+ private row;
34
+ private iconButton;
35
+ /** Ask before deleting; focus follows to the button that asks (or back). */
36
+ private setConfirming;
37
+ private remove;
38
+ }
39
+ //# sourceMappingURL=WidgetLayoutsDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetLayoutsDialog.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetLayoutsDialog.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC1C,wCAAwC;IACxC,SAAS,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC/C,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC;AAID,sFAAsF;AACtF,qBAAa,mBAAmB;IAUC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAA0B,OAAO,CAAC,QAAQ,CAAC,CAAC;IATrG,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,IAAI,EAAE,WAAW,EAAmB,SAAS,EAAE,sBAAsB,EAAmB,CAAC,GAAE,UAA0B;IA0D3H,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,iDAAiD;IAC3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B,KAAK,IAAI,IAAI;IAQb,MAAM,IAAI,OAAO;IAIjB,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,GAAG;IAoDX,OAAO,CAAC,UAAU;IAWlB,4EAA4E;IAC5E,OAAO,CAAC,aAAa;YAUP,MAAM;CASrB"}
@@ -0,0 +1,37 @@
1
+ import { Translator } from './i18n.js';
2
+ import { LayoutSession } from '../state/LayoutSession.js';
3
+ import { SavedLayoutSummary } from '../state/layoutStorage.js';
4
+ export interface LayoutsUIHost {
5
+ /** Where the menu, the name prompt and the dialog live. */
6
+ root: HTMLElement;
7
+ t: Translator;
8
+ toast: (message: string, kind?: 'info' | 'error') => void;
9
+ formatTime: (ms: number) => string;
10
+ }
11
+ /**
12
+ * The named-layouts controls over a {@link LayoutSession}: the menu under the
13
+ * layouts button (save, save as, rename, auto-save, the latest layouts, open
14
+ * another), the name prompt and the list of every layout. Failures are told
15
+ * in a toast.
16
+ */
17
+ export declare class WidgetLayoutsUI {
18
+ private readonly session;
19
+ private readonly host;
20
+ private readonly menu;
21
+ private readonly prompt;
22
+ private readonly dialog;
23
+ private destroyed;
24
+ constructor(session: LayoutSession, host: LayoutsUIHost);
25
+ /** Save into the open layout, or ask for a name when there is none. */
26
+ save(): Promise<void>;
27
+ /** Open a saved layout by id; `false` (and a toast) when it could not be. */
28
+ open(id: string): Promise<boolean>;
29
+ promptSaveAs(): void;
30
+ promptRename(layout?: SavedLayoutSummary | null): void;
31
+ /** Every layout, to open, rename or delete. */
32
+ openDialog(): Promise<void>;
33
+ /** The layouts menu under `anchor` (a second press closes it). */
34
+ openMenu(anchor: HTMLElement): Promise<void>;
35
+ destroy(): void;
36
+ }
37
+ //# sourceMappingURL=WidgetLayoutsUI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetLayoutsUI.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetLayoutsUI.ts"],"names":[],"mappings":"AAGA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAKpE,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,IAAI,EAAE,WAAW,CAAC;IAClB,CAAC,EAAE,UAAU,CAAC;IACd,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC;IAC1D,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC;AAED;;;;;GAKG;AACH,qBAAa,eAAe;IAMd,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAiB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAL1E,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,SAAS,CAAS;gBAEG,OAAO,EAAE,aAAa,EAAmB,IAAI,EAAE,aAAa;IAoBzF,uEAAuE;IACjE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3B,6EAA6E;IACvE,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUxC,YAAY,IAAI,IAAI;IAmBpB,YAAY,CAAC,MAAM,GAAE,kBAAkB,GAAG,IAA6B,GAAG,IAAI;IAmB9E,+CAA+C;IAC/C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,kEAAkE;IAC5D,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAsClD,OAAO,IAAI,IAAI;CAMhB"}
@@ -0,0 +1,31 @@
1
+ import { Translator } from './i18n.js';
2
+ export interface NamePromptRequest {
3
+ title: string;
4
+ /** The name to start from (a rename), selected. */
5
+ value?: string;
6
+ submitLabel: string;
7
+ /** Example text in the empty field (default: a layout's). */
8
+ placeholder?: string;
9
+ /** Resolves when done; a rejection keeps the prompt open. */
10
+ onSubmit: (name: string) => void | Promise<void>;
11
+ }
12
+ /** A small dialog asking for a name (save a layout as, rename one). */
13
+ export declare class WidgetNamePrompt {
14
+ private readonly t;
15
+ private backdrop;
16
+ private titleEl;
17
+ private input;
18
+ private submit;
19
+ private request;
20
+ private returnFocus;
21
+ private busy;
22
+ private readonly uid;
23
+ constructor(host: HTMLElement, t?: Translator);
24
+ open(request: NamePromptRequest): void;
25
+ close(): void;
26
+ isOpen(): boolean;
27
+ destroy(): void;
28
+ private check;
29
+ private done;
30
+ }
31
+ //# sourceMappingURL=WidgetNamePrompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetNamePrompt.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetNamePrompt.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAI3D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAID,uEAAuE;AACvE,qBAAa,gBAAgB;IAUI,OAAO,CAAC,QAAQ,CAAC,CAAC;IATjD,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,IAAI,EAAE,WAAW,EAAmB,CAAC,GAAE,UAA0B;IA4E7E,IAAI,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IActC,KAAK,IAAI,IAAI;IAQb,MAAM,IAAI,OAAO;IAIjB,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,KAAK;YAIC,IAAI;CAgBnB"}
@@ -1,3 +1,4 @@
1
+ import { Translator } from './i18n.js';
1
2
  export interface ObjectTreeIndicator {
2
3
  instanceId: string;
3
4
  name: string;
@@ -8,6 +9,11 @@ export interface ObjectTreeDrawing {
8
9
  label: string;
9
10
  visible: boolean;
10
11
  locked: boolean;
12
+ /** The group it belongs to; a group's drawings are listed under one row. */
13
+ group?: {
14
+ id: string;
15
+ name: string;
16
+ };
11
17
  }
12
18
  export interface ObjectTreeCompare {
13
19
  id: string;
@@ -21,6 +27,13 @@ export interface ObjectTreeCallbacks {
21
27
  onRemoveDrawing: (id: string) => void;
22
28
  onToggleDrawingVisible: (id: string, visible: boolean) => void;
23
29
  onToggleDrawingLocked: (id: string, locked: boolean) => void;
30
+ /** When provided, each drawing row gets a settings button. */
31
+ onConfigureDrawing?: (id: string) => void;
32
+ /** Group rows: hide, lock, rename (or double-click its name) and ungroup the group. */
33
+ onToggleGroupVisible?: (groupId: string, visible: boolean) => void;
34
+ onToggleGroupLocked?: (groupId: string, locked: boolean) => void;
35
+ onUngroup?: (groupId: string) => void;
36
+ onRenameGroup?: (groupId: string, name: string) => void;
24
37
  /** When provided, a Compare section with an "add" button is shown. */
25
38
  onAddCompare?: () => void;
26
39
  onRemoveCompare?: (id: string) => void;
@@ -32,13 +45,14 @@ export interface ObjectTreeCallbacks {
32
45
  * from the toolbar layers button; the host wires actions back to the chart.
33
46
  */
34
47
  export declare class WidgetObjectTree {
48
+ private readonly t;
35
49
  private el;
36
50
  private indicatorsEl;
37
51
  private drawingsEl;
38
52
  private compareEl;
39
53
  private callbacks;
40
54
  private open;
41
- constructor(host: HTMLElement, callbacks: ObjectTreeCallbacks);
55
+ constructor(host: HTMLElement, callbacks: ObjectTreeCallbacks, t?: Translator);
42
56
  isOpen(): boolean;
43
57
  toggle(): void;
44
58
  openPanel(): void;
@@ -49,11 +63,15 @@ export declare class WidgetObjectTree {
49
63
  private makeSection;
50
64
  private renderIndicators;
51
65
  private renderDrawings;
66
+ private groupRow;
67
+ /** Swap a group's name for a text box: Enter or leaving it renames, Escape keeps the name. */
68
+ private renameGroup;
69
+ private drawingRow;
52
70
  private renderCompares;
53
71
  private row;
54
72
  private emptyRow;
55
73
  private iconButton;
56
74
  }
57
- /** Human-readable label for a drawing type, falling back to the raw key. */
58
- export declare function drawingTypeLabel(type: string): string;
75
+ /** Label for a drawing type in the widget's language, falling back to English, then the raw key. */
76
+ export declare function drawingTypeLabel(type: string, t?: Translator): string;
59
77
  //# sourceMappingURL=WidgetObjectTree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetObjectTree.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetObjectTree.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,wBAAwB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1E,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,sBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/D,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7D,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB;IA8B7D,MAAM,IAAI,OAAO;IAIjB,MAAM,IAAI,IAAI;IAId,SAAS,IAAI,IAAI;IAKjB,KAAK,IAAI,IAAI;IAKb,OAAO,IAAI,IAAI;IAIf,kEAAkE;IAClE,UAAU,CACR,UAAU,EAAE,mBAAmB,EAAE,EACjC,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,QAAQ,GAAE,iBAAiB,EAAO,GACjC,IAAI;IAMP,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,cAAc;IAgCtB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,GAAG;IAWX,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,UAAU;CAUnB;AA8CD,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD"}
1
+ {"version":3,"file":"WidgetObjectTree.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetObjectTree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { OrderPlaceIntent, OrderSide } from '@tradecanvas/commons';
2
+ import { Translator } from './i18n.js';
3
+ export interface OrderTicketCallbacks {
4
+ onSubmit: (intent: OrderPlaceIntent) => void;
5
+ formatPrice: (price: number) => string;
6
+ }
7
+ /** Where a ticket starts: a side and a price (a click on the chart), and the market. */
8
+ export interface OrderTicketStart {
9
+ side?: OrderSide;
10
+ price?: number;
11
+ lastPrice: number | null;
12
+ }
13
+ /**
14
+ * An order ticket: side, type, quantity, price, stop-loss, take-profit and
15
+ * time in force, checked as it is filled in; Place sends an `orderPlace`
16
+ * intent. Escape, Cancel or a click outside close it.
17
+ */
18
+ export declare class WidgetOrderTicket {
19
+ private readonly callbacks;
20
+ private readonly t;
21
+ private backdrop;
22
+ private modal;
23
+ private body;
24
+ private problemsEl;
25
+ private submit;
26
+ private draft;
27
+ private lastPrice;
28
+ private returnFocus;
29
+ private readonly uid;
30
+ constructor(host: HTMLElement, callbacks: OrderTicketCallbacks, t?: Translator);
31
+ open(start: OrderTicketStart): void;
32
+ close(): void;
33
+ isOpen(): boolean;
34
+ /** The latest price, while the ticket is open (a market order's price, the checks). */
35
+ setLastPrice(price: number | null): void;
36
+ destroy(): void;
37
+ private place;
38
+ private set;
39
+ private render;
40
+ /** Buy or Sell, as two pressed buttons. */
41
+ private sideToggle;
42
+ /** A number checked as it is typed (not only when it is left). */
43
+ private number;
44
+ /** A price that is off unless switched on (a stop-loss, a take-profit). */
45
+ private optionalPrice;
46
+ /** Show what is wrong and the reward:risk, and enable Place only for a sound order. */
47
+ private check;
48
+ }
49
+ //# sourceMappingURL=WidgetOrderTicket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetOrderTicket.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetOrderTicket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAe,MAAM,sBAAsB,CAAC;AAErF,OAAO,EAAwC,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAUlF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7C,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAED,wFAAwF;AACxF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAID;;;;GAIG;AACH,qBAAa,iBAAiB;IAWG,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAwB,OAAO,CAAC,QAAQ,CAAC,CAAC;IAVnG,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,IAAI,EAAE,WAAW,EAAmB,SAAS,EAAE,oBAAoB,EAAmB,CAAC,GAAE,UAA0B;IA8D/H,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAgBnC,KAAK,IAAI,IAAI;IAQb,MAAM,IAAI,OAAO;IAIjB,uFAAuF;IACvF,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAMxC,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,GAAG;IAOX,OAAO,CAAC,MAAM;IAoCd,2CAA2C;IAC3C,OAAO,CAAC,UAAU;IAiBlB,kEAAkE;IAClE,OAAO,CAAC,MAAM;IAWd,2EAA2E;IAC3E,OAAO,CAAC,aAAa;IAkBrB,uFAAuF;IACvF,OAAO,CAAC,KAAK;CAiBd"}
@@ -18,6 +18,13 @@ export interface ReplayBarCallbacks {
18
18
  onSpeedChange: (barsPerSecond: number) => void;
19
19
  onRandomStart: () => void;
20
20
  onClose: () => void;
21
+ /** The step picked: `'bar'`, or a finer interval to replay through. */
22
+ onStepChange?: (step: string) => void;
23
+ }
24
+ /** A replay step on offer: `'bar'` or a finer interval. */
25
+ export interface ReplayStepOption {
26
+ value: string;
27
+ label: string;
21
28
  }
22
29
  export interface ReplayBarLabels {
23
30
  selectHint: string;
@@ -28,6 +35,10 @@ export interface ReplayBarLabels {
28
35
  pause: string;
29
36
  stepBack: string;
30
37
  stepForward: string;
38
+ replay: string;
39
+ position: string;
40
+ speed: string;
41
+ step: string;
31
42
  }
32
43
  export declare const DEFAULT_REPLAY_LABELS: ReplayBarLabels;
33
44
  export type ReplayBarState = 'playing' | 'paused' | 'stopped';
@@ -47,12 +58,16 @@ export declare class WidgetReplayBar {
47
58
  private ended;
48
59
  private total;
49
60
  private speed;
61
+ private steps;
62
+ private step;
50
63
  private readonly labels;
51
64
  constructor(callbacks: ReplayBarCallbacks, labels?: Partial<ReplayBarLabels>);
52
65
  mount(host: HTMLElement, opts: {
53
66
  total: number;
54
67
  speed?: number;
55
68
  mode?: ReplayBarMode;
69
+ steps?: readonly ReplayStepOption[];
70
+ step?: string;
56
71
  }): void;
57
72
  unmount(): void;
58
73
  isMounted(): boolean;