scichart-engine 1.4.0 → 1.5.1

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 (196) hide show
  1. package/dist/EventEmitter-DAbs2K1C.js +60 -0
  2. package/dist/EventEmitter-DAbs2K1C.js.map +1 -0
  3. package/dist/core/ChartControls.d.ts +10 -1
  4. package/dist/core/ChartLegend.d.ts +17 -4
  5. package/dist/core/InteractionManager.d.ts +2 -0
  6. package/dist/core/chart/ChartCore.d.ts +27 -16
  7. package/dist/core/chart/ChartRenderer.d.ts +0 -6
  8. package/dist/core/chart/ChartSetup.d.ts +1 -0
  9. package/dist/core/chart/ChartUI.d.ts +9 -0
  10. package/dist/core/chart/series/index.d.ts +0 -1
  11. package/dist/core/chart/types.d.ts +17 -20
  12. package/dist/core/index.d.ts +0 -1
  13. package/dist/core/responsive/ResponsiveManager.d.ts +2 -1
  14. package/dist/core/selection/SelectionManager.d.ts +1 -1
  15. package/dist/examples/PluginDemonstration.d.ts +20 -0
  16. package/dist/examples.d.ts +2 -2
  17. package/dist/gpuCompute-Be2JAcYX.js +2412 -0
  18. package/dist/gpuCompute-Be2JAcYX.js.map +1 -0
  19. package/dist/index-BeNSvLQt.js +248 -0
  20. package/dist/index-BeNSvLQt.js.map +1 -0
  21. package/dist/index-Btz_voey.js +2403 -0
  22. package/dist/index-Btz_voey.js.map +1 -0
  23. package/dist/index-CWxIHdwX.js +265 -0
  24. package/dist/index-CWxIHdwX.js.map +1 -0
  25. package/dist/index-Clf95QXk.js +309 -0
  26. package/dist/index-Clf95QXk.js.map +1 -0
  27. package/dist/index-DB_1SXBk.js +242 -0
  28. package/dist/index-DB_1SXBk.js.map +1 -0
  29. package/dist/index-IRhlzXlI.js +482 -0
  30. package/dist/index-IRhlzXlI.js.map +1 -0
  31. package/dist/index-q2iX8Vyd.js +194 -0
  32. package/dist/index-q2iX8Vyd.js.map +1 -0
  33. package/dist/index-x4stH3jD.js +282 -0
  34. package/dist/index-x4stH3jD.js.map +1 -0
  35. package/dist/index.core-DRVElg9n.js +5616 -0
  36. package/dist/index.core-DRVElg9n.js.map +1 -0
  37. package/dist/index.core.d.ts +20 -0
  38. package/dist/index.d.ts +7 -5
  39. package/dist/mock-DAXWlHh6.js +519 -0
  40. package/dist/mock-DAXWlHh6.js.map +1 -0
  41. package/dist/plugins/3d/index.d.ts +50 -0
  42. package/dist/plugins/3d.d.ts +3 -0
  43. package/dist/plugins/3d.js +5498 -0
  44. package/dist/plugins/3d.js.map +1 -0
  45. package/dist/plugins/PluginContext.d.ts +53 -0
  46. package/dist/plugins/PluginManager.d.ts +129 -0
  47. package/dist/plugins/PluginRegistry.d.ts +38 -0
  48. package/dist/{core/chart/series → plugins/analysis}/SeriesFit.d.ts +1 -1
  49. package/dist/{analysis → plugins/analysis}/index.d.ts +15 -6
  50. package/dist/plugins/analysis.d.ts +3 -0
  51. package/dist/plugins/analysis.js +1192 -0
  52. package/dist/plugins/analysis.js.map +1 -0
  53. package/dist/plugins/annotations/index.d.ts +16 -0
  54. package/dist/plugins/annotations.d.ts +3 -0
  55. package/dist/plugins/annotations.js +383 -0
  56. package/dist/plugins/annotations.js.map +1 -0
  57. package/dist/plugins/builtins/crosshair/CrosshairPlugin.d.ts +17 -0
  58. package/dist/plugins/builtins/crosshair/index.d.ts +1 -0
  59. package/dist/plugins/builtins/data-logger/DataLoggerPlugin.d.ts +11 -0
  60. package/dist/plugins/builtins/data-logger/index.d.ts +1 -0
  61. package/dist/plugins/builtins/grid-highlight/GridHighlightPlugin.d.ts +17 -0
  62. package/dist/plugins/builtins/grid-highlight/index.d.ts +1 -0
  63. package/dist/plugins/builtins/index.d.ts +23 -0
  64. package/dist/plugins/builtins/stats/StatsPlugin.d.ts +11 -0
  65. package/dist/plugins/builtins/stats/index.d.ts +1 -0
  66. package/dist/plugins/builtins/watermark/WatermarkPlugin.d.ts +15 -0
  67. package/dist/plugins/builtins/watermark/index.d.ts +1 -0
  68. package/dist/plugins/clipboard/index.d.ts +20 -0
  69. package/dist/plugins/clipboard.d.ts +3 -0
  70. package/dist/plugins/clipboard.js +30 -0
  71. package/dist/plugins/clipboard.js.map +1 -0
  72. package/dist/plugins/debug/index.d.ts +24 -0
  73. package/dist/plugins/debug.d.ts +3 -0
  74. package/dist/plugins/debug.js +147 -0
  75. package/dist/plugins/debug.js.map +1 -0
  76. package/dist/plugins/gpu/index.d.ts +24 -0
  77. package/dist/plugins/gpu.d.ts +3 -0
  78. package/dist/plugins/gpu.js +33 -0
  79. package/dist/plugins/gpu.js.map +1 -0
  80. package/dist/plugins/i18n/index.d.ts +22 -0
  81. package/dist/plugins/i18n.d.ts +3 -0
  82. package/dist/plugins/i18n.js +37 -0
  83. package/dist/plugins/i18n.js.map +1 -0
  84. package/dist/plugins/index.d.ts +91 -0
  85. package/dist/plugins/keyboard/index.d.ts +15 -0
  86. package/dist/plugins/keyboard.d.ts +3 -0
  87. package/dist/plugins/keyboard.js +24 -0
  88. package/dist/plugins/keyboard.js.map +1 -0
  89. package/dist/plugins/loading/index.d.ts +15 -0
  90. package/dist/plugins/loading.d.ts +3 -0
  91. package/dist/plugins/loading.js +7 -0
  92. package/dist/plugins/loading.js.map +1 -0
  93. package/dist/plugins/streaming/index.d.ts +32 -0
  94. package/dist/plugins/streaming.d.ts +3 -0
  95. package/dist/plugins/streaming.js +29 -0
  96. package/dist/plugins/streaming.js.map +1 -0
  97. package/dist/plugins/sync/index.d.ts +22 -0
  98. package/dist/plugins/sync.d.ts +3 -0
  99. package/dist/plugins/sync.js +27 -0
  100. package/dist/plugins/sync.js.map +1 -0
  101. package/dist/plugins/theme-editor/index.d.ts +18 -0
  102. package/dist/plugins/theme-editor.d.ts +3 -0
  103. package/dist/plugins/theme-editor.js +23 -0
  104. package/dist/plugins/theme-editor.js.map +1 -0
  105. package/dist/{core → plugins/tools}/delta-tool/index.d.ts +15 -2
  106. package/dist/plugins/tools/index.d.ts +21 -0
  107. package/dist/{core → plugins/tools}/peak-tool/index.d.ts +15 -2
  108. package/dist/{core → plugins/tools}/tooltip/TooltipManager.d.ts +4 -4
  109. package/dist/{core → plugins/tools}/tooltip/TooltipPositioner.d.ts +1 -1
  110. package/dist/plugins/tools.d.ts +3 -0
  111. package/dist/plugins/tools.js +9 -0
  112. package/dist/plugins/tools.js.map +1 -0
  113. package/dist/plugins/types.d.ts +451 -0
  114. package/dist/renderer/NativeWebGLRenderer.d.ts +1 -1
  115. package/dist/renderer/native/NativeWebGLRenderer.d.ts +1 -0
  116. package/dist/renderer/native/draw.d.ts +1 -1
  117. package/dist/renderer/native/types.d.ts +1 -0
  118. package/dist/renderer/native/utils.d.ts +1 -0
  119. package/dist/scichart-engine.d.ts +1 -0
  120. package/dist/scichart-engine.full.d.ts +1 -0
  121. package/dist/scichart-engine.full.js +1286 -0
  122. package/dist/scichart-engine.full.js.map +1 -0
  123. package/dist/scichart-engine.js +31 -0
  124. package/dist/scichart-engine.js.map +1 -0
  125. package/dist/theme/index.d.ts +14 -0
  126. package/dist/types.d.ts +26 -1
  127. package/dist/utils-Dbro9-qM.js +254 -0
  128. package/dist/utils-Dbro9-qM.js.map +1 -0
  129. package/package.json +61 -6
  130. package/dist/core/3d/index.d.ts +0 -26
  131. package/dist/core/chart/plugins/PluginManager.d.ts +0 -13
  132. package/dist/core/chart/plugins/types.d.ts +0 -13
  133. package/dist/scichart-engine.es.js +0 -14183
  134. package/dist/scichart-engine.es.js.map +0 -1
  135. package/dist/scichart-engine.umd.js +0 -1014
  136. package/dist/scichart-engine.umd.js.map +0 -1
  137. /package/dist/{core → plugins}/3d/Area3DRenderer.d.ts +0 -0
  138. /package/dist/{core → plugins}/3d/Axes3D.d.ts +0 -0
  139. /package/dist/{core → plugins}/3d/Bubble3DRenderer.d.ts +0 -0
  140. /package/dist/{core → plugins}/3d/Impulse3DRenderer.d.ts +0 -0
  141. /package/dist/{core → plugins}/3d/Line3DRenderer.d.ts +0 -0
  142. /package/dist/{core → plugins}/3d/PointCloud3DRenderer.d.ts +0 -0
  143. /package/dist/{core → plugins}/3d/Raycaster3D.d.ts +0 -0
  144. /package/dist/{core → plugins}/3d/Ribbon3DRenderer.d.ts +0 -0
  145. /package/dist/{core → plugins}/3d/SurfaceBar3DRenderer.d.ts +0 -0
  146. /package/dist/{core → plugins}/3d/SurfaceMesh3DRenderer.d.ts +0 -0
  147. /package/dist/{core → plugins}/3d/Tooltip3D.d.ts +0 -0
  148. /package/dist/{core → plugins}/3d/VectorField3DRenderer.d.ts +0 -0
  149. /package/dist/{core → plugins}/3d/Voxel3DRenderer.d.ts +0 -0
  150. /package/dist/{core → plugins}/3d/Waterfall3DRenderer.d.ts +0 -0
  151. /package/dist/{core → plugins}/3d/camera/OrbitCamera.d.ts +0 -0
  152. /package/dist/{core → plugins}/3d/camera/index.d.ts +0 -0
  153. /package/dist/{core → plugins}/3d/colorThemes.d.ts +0 -0
  154. /package/dist/{core → plugins}/3d/controls/OrbitController.d.ts +0 -0
  155. /package/dist/{core → plugins}/3d/controls/index.d.ts +0 -0
  156. /package/dist/{core → plugins}/3d/math/Mat4.d.ts +0 -0
  157. /package/dist/{core → plugins}/3d/math/Vec3.d.ts +0 -0
  158. /package/dist/{core → plugins}/3d/math/index.d.ts +0 -0
  159. /package/dist/{core → plugins}/3d/mesh/InstancedMesh.d.ts +0 -0
  160. /package/dist/{core → plugins}/3d/mesh/geometry.d.ts +0 -0
  161. /package/dist/{core → plugins}/3d/mesh/index.d.ts +0 -0
  162. /package/dist/{core → plugins}/3d/series/Area3D.d.ts +0 -0
  163. /package/dist/{core → plugins}/3d/series/Column3D.d.ts +0 -0
  164. /package/dist/{core → plugins}/3d/series/Heatmap3D.d.ts +0 -0
  165. /package/dist/{core → plugins}/3d/series/Impulse3D.d.ts +0 -0
  166. /package/dist/{core → plugins}/3d/series/PointLine3D.d.ts +0 -0
  167. /package/dist/{core → plugins}/3d/series/Ribbon3D.d.ts +0 -0
  168. /package/dist/{core → plugins}/3d/series/Scatter3D.d.ts +0 -0
  169. /package/dist/{core → plugins}/3d/series/SurfaceMesh3D.d.ts +0 -0
  170. /package/dist/{core → plugins}/3d/series/Waterfall3D.d.ts +0 -0
  171. /package/dist/{core → plugins}/3d/series/index.d.ts +0 -0
  172. /package/dist/{core → plugins}/3d/series/types.d.ts +0 -0
  173. /package/dist/{core → plugins}/3d/shader/index.d.ts +0 -0
  174. /package/dist/{core → plugins}/3d/shader/programs.d.ts +0 -0
  175. /package/dist/{core → plugins}/3d/shader/sources.d.ts +0 -0
  176. /package/dist/{core → plugins}/3d/types.d.ts +0 -0
  177. /package/dist/{analysis → plugins/analysis}/contours.d.ts +0 -0
  178. /package/dist/{analysis → plugins/analysis}/fft.d.ts +0 -0
  179. /package/dist/{analysis → plugins/analysis}/filters.d.ts +0 -0
  180. /package/dist/{analysis → plugins/analysis}/fitting.d.ts +0 -0
  181. /package/dist/{analysis → plugins/analysis}/indicators.d.ts +0 -0
  182. /package/dist/{analysis → plugins/analysis}/math.d.ts +0 -0
  183. /package/dist/{analysis → plugins/analysis}/statistics.d.ts +0 -0
  184. /package/dist/{analysis → plugins/analysis}/utils.d.ts +0 -0
  185. /package/dist/{core → plugins/tools}/tooltip/TooltipRenderer.d.ts +0 -0
  186. /package/dist/{core → plugins/tools}/tooltip/index.d.ts +0 -0
  187. /package/dist/{core → plugins/tools}/tooltip/templates/AnnotationTemplate.d.ts +0 -0
  188. /package/dist/{core → plugins/tools}/tooltip/templates/CrosshairTemplate.d.ts +0 -0
  189. /package/dist/{core → plugins/tools}/tooltip/templates/DefaultTemplate.d.ts +0 -0
  190. /package/dist/{core → plugins/tools}/tooltip/templates/HeatmapTemplate.d.ts +0 -0
  191. /package/dist/{core → plugins/tools}/tooltip/templates/MinimalTemplate.d.ts +0 -0
  192. /package/dist/{core → plugins/tools}/tooltip/templates/RangeTemplate.d.ts +0 -0
  193. /package/dist/{core → plugins/tools}/tooltip/templates/ScientificTemplate.d.ts +0 -0
  194. /package/dist/{core → plugins/tools}/tooltip/templates/index.d.ts +0 -0
  195. /package/dist/{core → plugins/tools}/tooltip/themes.d.ts +0 -0
  196. /package/dist/{core → plugins/tools}/tooltip/types.d.ts +0 -0
@@ -0,0 +1,60 @@
1
+ var o = Object.defineProperty;
2
+ var h = (r, e, s) => e in r ? o(r, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : r[e] = s;
3
+ var n = (r, e, s) => h(r, typeof e != "symbol" ? e + "" : e, s);
4
+ class c {
5
+ constructor() {
6
+ n(this, "listeners", /* @__PURE__ */ new Map());
7
+ }
8
+ /**
9
+ * Subscribe to an event
10
+ */
11
+ on(e, s) {
12
+ this.listeners.has(e) || this.listeners.set(e, /* @__PURE__ */ new Set()), this.listeners.get(e).add(s);
13
+ }
14
+ /**
15
+ * Unsubscribe from an event
16
+ */
17
+ off(e, s) {
18
+ const t = this.listeners.get(e);
19
+ t && t.delete(s);
20
+ }
21
+ /**
22
+ * Emit an event with data
23
+ */
24
+ emit(e, s) {
25
+ const t = this.listeners.get(e);
26
+ t && t.forEach((i) => {
27
+ try {
28
+ i(s);
29
+ } catch (l) {
30
+ console.error(`[EventEmitter] Error in handler for "${String(e)}":`, l);
31
+ }
32
+ });
33
+ }
34
+ /**
35
+ * Subscribe to an event once
36
+ */
37
+ once(e, s) {
38
+ const t = (i) => {
39
+ this.off(e, t), s(i);
40
+ };
41
+ this.on(e, t);
42
+ }
43
+ /**
44
+ * Remove all listeners
45
+ */
46
+ clear() {
47
+ this.listeners.clear();
48
+ }
49
+ /**
50
+ * Get listener count for an event
51
+ */
52
+ listenerCount(e) {
53
+ var s;
54
+ return ((s = this.listeners.get(e)) == null ? void 0 : s.size) ?? 0;
55
+ }
56
+ }
57
+ export {
58
+ c as E
59
+ };
60
+ //# sourceMappingURL=EventEmitter-DAbs2K1C.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventEmitter-DAbs2K1C.js","sources":["../src/core/EventEmitter.ts"],"sourcesContent":["/**\n * Type-safe event emitter for chart events\n */\n\nexport class EventEmitter<EventMap extends object> {\n private listeners: Map<keyof EventMap, Set<(data: unknown) => void>> =\n new Map();\n\n /**\n * Subscribe to an event\n */\n on<K extends keyof EventMap>(\n event: K,\n handler: (data: EventMap[K]) => void\n ): void {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set());\n }\n this.listeners.get(event)!.add(handler as (data: unknown) => void);\n }\n\n /**\n * Unsubscribe from an event\n */\n off<K extends keyof EventMap>(\n event: K,\n handler: (data: EventMap[K]) => void\n ): void {\n const handlers = this.listeners.get(event);\n if (handlers) {\n handlers.delete(handler as (data: unknown) => void);\n }\n }\n\n /**\n * Emit an event with data\n */\n emit<K extends keyof EventMap>(event: K, data: EventMap[K]): void {\n const handlers = this.listeners.get(event);\n if (handlers) {\n handlers.forEach((handler) => {\n try {\n handler(data);\n } catch (error) {\n console.error(`[EventEmitter] Error in handler for \"${String(event)}\":`, error);\n }\n });\n }\n }\n\n /**\n * Subscribe to an event once\n */\n once<K extends keyof EventMap>(\n event: K,\n handler: (data: EventMap[K]) => void\n ): void {\n const wrappedHandler = (data: EventMap[K]) => {\n this.off(event, wrappedHandler);\n handler(data);\n };\n this.on(event, wrappedHandler);\n }\n\n /**\n * Remove all listeners\n */\n clear(): void {\n this.listeners.clear();\n }\n\n /**\n * Get listener count for an event\n */\n listenerCount(event: keyof EventMap): number {\n return this.listeners.get(event)?.size ?? 0;\n }\n}\n"],"names":["EventEmitter","__publicField","event","handler","handlers","data","error","wrappedHandler","_a"],"mappings":";;;AAIO,MAAMA,EAAsC;AAAA,EAA5C;AACG,IAAAC,EAAA,uCACF,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKN,GACEC,GACAC,GACM;AACN,IAAK,KAAK,UAAU,IAAID,CAAK,KAC3B,KAAK,UAAU,IAAIA,GAAO,oBAAI,KAAK,GAErC,KAAK,UAAU,IAAIA,CAAK,EAAG,IAAIC,CAAkC;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA,EAKA,IACED,GACAC,GACM;AACN,UAAMC,IAAW,KAAK,UAAU,IAAIF,CAAK;AACzC,IAAIE,KACFA,EAAS,OAAOD,CAAkC;AAAA,EAEtD;AAAA;AAAA;AAAA;AAAA,EAKA,KAA+BD,GAAUG,GAAyB;AAChE,UAAMD,IAAW,KAAK,UAAU,IAAIF,CAAK;AACzC,IAAIE,KACFA,EAAS,QAAQ,CAACD,MAAY;AAC5B,UAAI;AACF,QAAAA,EAAQE,CAAI;AAAA,MACd,SAASC,GAAO;AACd,gBAAQ,MAAM,wCAAwC,OAAOJ,CAAK,CAAC,MAAMI,CAAK;AAAA,MAChF;AAAA,IACF,CAAC;AAAA,EAEL;AAAA;AAAA;AAAA;AAAA,EAKA,KACEJ,GACAC,GACM;AACN,UAAMI,IAAiB,CAACF,MAAsB;AAC5C,WAAK,IAAIH,GAAOK,CAAc,GAC9BJ,EAAQE,CAAI;AAAA,IACd;AACA,SAAK,GAAGH,GAAOK,CAAc;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKA,QAAc;AACZ,SAAK,UAAU,MAAA;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA,EAKA,cAAcL,GAA+B;AAtExC,QAAAM;AAuEH,aAAOA,IAAA,KAAK,UAAU,IAAIN,CAAK,MAAxB,gBAAAM,EAA2B,SAAQ;AAAA,EAC5C;AACF;"}
@@ -1,5 +1,6 @@
1
1
  import { ChartTheme } from '../theme';
2
2
  import { InteractionMode } from './InteractionManager';
3
+ import { ToolbarOptions } from '../types';
3
4
 
4
5
  export interface ChartControlsCallbacks {
5
6
  onResetZoom: () => void;
@@ -10,20 +11,28 @@ export interface ChartControlsCallbacks {
10
11
  onExport: () => void;
11
12
  onAutoScale: () => void;
12
13
  onToggleLegend: (visible: boolean) => void;
14
+ onHoverStart: () => void;
15
+ onHoverEnd: () => void;
13
16
  }
14
17
  export declare class ChartControls {
15
18
  private container;
16
19
  private toolbar;
20
+ private buttonsWrapper;
17
21
  private callbacks;
18
22
  private theme;
23
+ private options;
19
24
  private isSmoothing;
20
25
  private currentMode;
21
26
  private isLegendVisible;
22
27
  private currentType;
23
- constructor(parent: HTMLElement, theme: ChartTheme, callbacks: ChartControlsCallbacks);
28
+ private isPinned;
29
+ private isExpanded;
30
+ constructor(parent: HTMLElement, theme: ChartTheme, callbacks: ChartControlsCallbacks, options?: ToolbarOptions);
24
31
  private isDarkTheme;
25
32
  private updateToolbarStyle;
33
+ private updateVisibility;
26
34
  private createButtons;
35
+ private createPinButton;
27
36
  private enforceSVGVisibility;
28
37
  private createButton;
29
38
  private updateButtonStates;
@@ -3,33 +3,46 @@ import { Series } from './Series';
3
3
 
4
4
  export interface ChartLegendCallbacks {
5
5
  onMove: (x: number, y: number) => void;
6
+ onResize?: (width: number) => void;
7
+ onInteractionStart?: () => void;
8
+ onInteractionEnd?: () => void;
9
+ onHoverStart?: () => void;
10
+ onHoverEnd?: () => void;
11
+ onSeriesHoverStart?: (series: Series) => void;
12
+ onSeriesHoverEnd?: (series: Series) => void;
13
+ onToggleVisibility?: (series: Series) => void;
6
14
  }
7
15
  export declare class ChartLegend {
8
16
  private container;
17
+ private visualContainer;
9
18
  private header;
10
19
  private content;
11
20
  private theme;
12
21
  private series;
13
22
  private callbacks;
23
+ private swatchCanvases;
14
24
  private isDragging;
15
- private startX;
16
- private startY;
17
- private initialX;
18
- private initialY;
25
+ private isResizing;
26
+ private dragOffsetX;
27
+ private dragOffsetY;
19
28
  constructor(parent: HTMLElement, theme: ChartTheme, options: {
20
29
  x?: number;
21
30
  y?: number;
31
+ width?: number;
22
32
  }, callbacks: ChartLegendCallbacks);
23
33
  private updateStyle;
24
34
  private initDragging;
25
35
  update(series: Series[]): void;
26
36
  private render;
37
+ updateSeriesStyle(s: Series): void;
38
+ private paintSwatch;
27
39
  /**
28
40
  * Internal symbol drawing logic (shared with canvas export)
29
41
  */
30
42
  private drawSymbol;
31
43
  draw(ctx: CanvasRenderingContext2D, dpr: number): void;
32
44
  updateTheme(theme: ChartTheme): void;
45
+ setWidth(width: number): void;
33
46
  setVisible(visible: boolean): void;
34
47
  destroy(): void;
35
48
  }
@@ -29,6 +29,8 @@ export interface InteractionCallbacks {
29
29
  onDragStart?: () => void;
30
30
  /** Called when any drag operation ends */
31
31
  onDragEnd?: () => void;
32
+ /** Called for all raw interaction events for plugin processing */
33
+ onInteraction?: (event: import('../plugins/types').InteractionEvent) => void;
32
34
  }
33
35
  export interface PlotAreaGetter {
34
36
  (): {
@@ -1,18 +1,13 @@
1
1
  import { ChartOptions, AxisOptions, SeriesOptions, HeatmapOptions, SeriesUpdateData, ZoomOptions, CursorOptions, ChartEventMap, Bounds } from '../../types';
2
- import { FitType, FitOptions } from '../../analysis';
3
2
  import { Series } from '../Series';
4
3
  import { ChartTheme } from '../../theme';
5
4
  import { Annotation } from '../annotations';
6
- import { TooltipManager } from '../tooltip';
7
5
  import { SelectedPoint, SelectionMode, HitTestResult, SelectionConfig } from '../selection';
8
6
  import { ResponsiveConfig, ResponsiveState } from '../responsive';
9
7
  import { ChartState, SerializeOptions, DeserializeOptions } from '../../serialization';
10
8
  import { Chart, ExportOptions } from './types';
11
9
  import { ChartAnimationConfig } from '../animation';
12
- import { DeltaTool } from '../delta-tool';
13
- import { PeakTool } from '../peak-tool';
14
10
 
15
- import * as analysis from "../../analysis";
16
11
  export declare class ChartImpl implements Chart {
17
12
  private container;
18
13
  private webglCanvas;
@@ -26,18 +21,22 @@ export declare class ChartImpl implements Chart {
26
21
  private primaryYAxisId;
27
22
  private dpr;
28
23
  private backgroundColor;
24
+ private plotAreaBackground;
29
25
  private renderer;
30
26
  private overlay;
31
27
  private interaction;
32
28
  private xScale;
33
29
  private yScales;
34
30
  private get yScale();
35
- private theme;
31
+ theme: ChartTheme;
32
+ baseTheme: ChartTheme;
36
33
  private cursorOptions;
37
34
  private cursorPosition;
38
35
  private showLegend;
39
36
  private legend;
37
+ private originalSeriesStyles;
40
38
  private showControls;
39
+ private toolbarOptions?;
41
40
  private controls;
42
41
  private animationFrameId;
43
42
  private needsFullRender;
@@ -45,24 +44,30 @@ export declare class ChartImpl implements Chart {
45
44
  private _isDestroyed;
46
45
  private autoScroll;
47
46
  private showStatistics;
48
- private stats;
49
47
  private initQueueId;
50
48
  private initStarted;
49
+ private frameCount;
50
+ private lastRenderTime;
51
51
  private commandQueue;
52
+ private annotationQueue;
53
+ private annotationIdCounter;
54
+ private tooltipConfigQueue;
55
+ private fitLineQueue;
52
56
  /** Whether the chart has been destroyed */
53
57
  get isDestroyed(): boolean;
54
58
  private selectionRect;
55
- private annotationManager;
56
- readonly tooltip: TooltipManager;
57
59
  private pluginManager;
58
60
  private initialOptions;
59
- readonly analysis: typeof analysis;
61
+ get analysis(): any;
60
62
  private animationEngine;
61
63
  private animationConfig;
64
+ get animations(): ChartAnimationConfig;
62
65
  private selectionManager;
63
66
  private responsiveManager;
64
- private deltaTool;
65
- private peakTool;
67
+ get tooltip(): any;
68
+ get loading(): any;
69
+ get deltaTool(): any;
70
+ get peakTool(): any;
66
71
  constructor(options: ChartOptions);
67
72
  /**
68
73
  * Start the chart initialization (called by queue system)
@@ -99,7 +104,10 @@ export declare class ChartImpl implements Chart {
99
104
  appendData(id: string, x: number[] | Float32Array, y: number[] | Float32Array): void;
100
105
  setAutoScroll(enabled: boolean): void;
101
106
  setMaxPoints(id: string, maxPoints: number): void;
102
- addFitLine(seriesId: string, type: FitType, options?: FitOptions): string;
107
+ /**
108
+ * Add a line of best fit to a series
109
+ */
110
+ addFitLine(seriesId: string, type: any, options?: any): string;
103
111
  getSeries(id: string): Series | undefined;
104
112
  getAllSeries(): Series[];
105
113
  private getNavContext;
@@ -135,12 +143,13 @@ export declare class ChartImpl implements Chart {
135
143
  private handleBoxZoom;
136
144
  enableCursor(options: CursorOptions): void;
137
145
  disableCursor(): void;
138
- addAnnotation(annotation: Annotation): string;
146
+ addAnnotation(annotation: any): string;
139
147
  removeAnnotation(id: string): boolean;
140
148
  updateAnnotation(id: string, updates: Partial<Annotation>): void;
141
149
  getAnnotation(id: string): Annotation | undefined;
142
150
  getAnnotations(): Annotation[];
143
151
  clearAnnotations(): void;
152
+ private getPluginAPI;
144
153
  exportCSV(options?: ExportOptions): string;
145
154
  exportJSON(options?: ExportOptions): string;
146
155
  /**
@@ -215,11 +224,11 @@ export declare class ChartImpl implements Chart {
215
224
  /**
216
225
  * Get the Delta Tool instance for advanced measurements
217
226
  */
218
- getDeltaTool(): DeltaTool | null;
227
+ getDeltaTool(): any | null;
219
228
  /**
220
229
  * Get the Peak Tool instance for peak integration
221
230
  */
222
- getPeakTool(): PeakTool | null;
231
+ getPeakTool(): any | null;
223
232
  /**
224
233
  * Handle responsive state changes
225
234
  */
@@ -264,6 +273,8 @@ export declare class ChartImpl implements Chart {
264
273
  on<K extends keyof ChartEventMap>(e: K, h: (d: ChartEventMap[K]) => void): void;
265
274
  off<K extends keyof ChartEventMap>(e: K, h: (d: ChartEventMap[K]) => void): void;
266
275
  destroy(): void;
276
+ private toggleSmoothing;
277
+ private recalculateTools;
267
278
  }
268
279
  /**
269
280
  * Create a new chart. Charts are automatically queued for sequential
@@ -3,8 +3,6 @@ import { Series } from '../Series';
3
3
  import { Scale } from '../../scales';
4
4
  import { NativeWebGLRenderer, NativeSeriesRenderData as SeriesRenderData } from '../../renderer/NativeWebGLRenderer';
5
5
  import { OverlayRenderer } from '../OverlayRenderer';
6
- import { AnnotationManager } from '../annotations';
7
- import { ChartStatistics } from '../ChartStatistics';
8
6
  import { EventEmitter } from '../EventEmitter';
9
7
  import { SelectionManager } from '../selection';
10
8
 
@@ -22,7 +20,6 @@ export interface RenderContext {
22
20
  primaryYAxisId: string;
23
21
  renderer: NativeWebGLRenderer;
24
22
  overlay: OverlayRenderer;
25
- annotationManager: AnnotationManager;
26
23
  backgroundColor: [number, number, number, number];
27
24
  cursorOptions: CursorOptions | null;
28
25
  cursorPosition: {
@@ -35,14 +32,11 @@ export interface RenderContext {
35
32
  width: number;
36
33
  height: number;
37
34
  } | null;
38
- stats: ChartStatistics | null;
39
- showStatistics: boolean;
40
35
  events: EventEmitter<ChartEventMap>;
41
36
  updateSeriesBuffer: (s: Series) => void;
42
37
  getPlotArea: () => PlotArea;
43
38
  pixelToDataX: (px: number) => number;
44
39
  pixelToDataY: (py: number) => number;
45
- tooltip: import('../tooltip').TooltipManager;
46
40
  selectionManager: SelectionManager;
47
41
  }
48
42
  /**
@@ -5,6 +5,7 @@ import { ChartTheme } from '../../theme';
5
5
  export interface SetupResult {
6
6
  theme: ChartTheme;
7
7
  backgroundColor: [number, number, number, number];
8
+ plotAreaColor: [number, number, number, number];
8
9
  showLegend: boolean;
9
10
  showControls: boolean;
10
11
  autoScroll: boolean;
@@ -9,6 +9,7 @@ export interface UIContext {
9
9
  container: HTMLDivElement;
10
10
  theme: ChartTheme;
11
11
  showControls: boolean;
12
+ toolbar?: import('../../types').ToolbarOptions;
12
13
  showLegend: boolean;
13
14
  series: Map<string, Series>;
14
15
  autoScale: () => void;
@@ -18,7 +19,15 @@ export interface UIContext {
18
19
  setPanMode: (active: boolean) => void;
19
20
  setMode: (mode: InteractionMode) => void;
20
21
  onLegendMove: (x: number, y: number) => void;
22
+ onToggleSmoothing: () => void;
21
23
  toggleLegend: () => void;
24
+ onInteractionStart?: () => void;
25
+ onInteractionEnd?: () => void;
26
+ onHoverStart?: () => void;
27
+ onHoverEnd?: () => void;
28
+ onSeriesHoverStart?: (series: Series) => void;
29
+ onSeriesHoverEnd?: (series: Series) => void;
30
+ onToggleVisibility?: (series: Series) => void;
22
31
  }
23
32
  export declare function initControls(ctx: UIContext): ChartControls | null;
24
33
  export declare function initLegend(ctx: UIContext, options: ChartOptions): ChartLegend | null;
@@ -3,5 +3,4 @@
3
3
  */
4
4
  export * from './SeriesActions';
5
5
  export * from './SeriesBuffer';
6
- export * from './SeriesFit';
7
6
  export * from './types';
@@ -1,10 +1,9 @@
1
1
  import { SeriesOptions, HeatmapOptions, SeriesUpdateData, ZoomOptions, CursorOptions, ChartEventMap, Bounds, AxisOptions } from '../../types';
2
2
  import { Series } from '../Series';
3
- import { FitType, FitOptions } from '../../analysis';
4
3
  import { Annotation } from '../annotations';
5
4
  import { ChartAnimationConfig } from '../animation';
5
+ import { ChartPlugin } from '../../plugins/types';
6
6
 
7
- import * as analysis from "../../analysis";
8
7
  export interface Chart {
9
8
  addSeries(options: SeriesOptions | HeatmapOptions): void;
10
9
  addBar(options: Omit<SeriesOptions, "type">): void;
@@ -16,7 +15,7 @@ export interface Chart {
16
15
  appendData(id: string, x: number[] | Float32Array, y: number[] | Float32Array): void;
17
16
  setAutoScroll(enabled: boolean): void;
18
17
  setMaxPoints(id: string, maxPoints: number): void;
19
- addFitLine(seriesId: string, type: FitType, options?: FitOptions): string;
18
+ addFitLine(seriesId: string, type: any, options?: any): string;
20
19
  zoom(options: ZoomOptions & {
21
20
  animate?: boolean;
22
21
  }): void;
@@ -34,7 +33,12 @@ export interface Chart {
34
33
  autoScale(animate?: boolean): void;
35
34
  setTheme(theme: string | object): void;
36
35
  /** Access to data analysis utilities */
37
- readonly analysis: typeof analysis;
36
+ /** Access to the current active theme (scaled for responsiveness) */
37
+ readonly theme: any;
38
+ /** Access to the base theme (unscaled) */
39
+ readonly baseTheme: any;
40
+ readonly analysis: any;
41
+ readonly animations: any;
38
42
  addAnnotation(annotation: Annotation): string;
39
43
  removeAnnotation(id: string): boolean;
40
44
  updateAnnotation(id: string, updates: Partial<Annotation>): void;
@@ -45,8 +49,8 @@ export interface Chart {
45
49
  exportJSON(options?: ExportOptions): string;
46
50
  /** Attach a plugin to extend chart functionality */
47
51
  use(plugin: ChartPlugin): void;
48
- /** Access to the tooltip system */
49
- readonly tooltip: import('../tooltip').TooltipManager;
52
+ /** Access to the tooltip system if the plugin is loaded */
53
+ readonly tooltip?: any;
50
54
  /** Animate view bounds to specific target */
51
55
  animateTo(options: {
52
56
  xRange?: [number, number];
@@ -76,19 +80,19 @@ export interface Chart {
76
80
  selectPoints(points: Array<{
77
81
  seriesId: string;
78
82
  indices: number[];
79
- }>, mode?: import('../selection').SelectionMode): void;
83
+ }>, mode?: any): void;
80
84
  /** Get all currently selected points */
81
- getSelectedPoints(): import('../selection').SelectedPoint[];
85
+ getSelectedPoints(): any[];
82
86
  /** Clear all selections */
83
87
  clearSelection(): void;
84
88
  /** Hit-test at a pixel coordinate */
85
- hitTest(pixelX: number, pixelY: number): import('../selection').HitTestResult | null;
89
+ hitTest(pixelX: number, pixelY: number): any | null;
86
90
  /** Check if a specific point is selected */
87
91
  isPointSelected(seriesId: string, index: number): boolean;
88
92
  /** Get selection count */
89
93
  getSelectionCount(): number;
90
94
  /** Configure selection behavior */
91
- configureSelection(config: Partial<import('../selection').SelectionConfig>): void;
95
+ configureSelection(config: any): void;
92
96
  /**
93
97
  * Set pan mode (true = pan, false = selection)
94
98
  * @deprecated Use setMode('pan') or setMode('select') instead
@@ -106,11 +110,11 @@ export interface Chart {
106
110
  /**
107
111
  * Get the Delta Tool instance for advanced measurements
108
112
  */
109
- getDeltaTool(): import('../delta-tool').DeltaTool | null;
113
+ getDeltaTool(): any | null;
110
114
  /**
111
115
  * Get the Peak Tool instance for peak integration
112
116
  */
113
- getPeakTool(): import('../peak-tool').PeakTool | null;
117
+ getPeakTool(): any | null;
114
118
  /** Get current responsive state */
115
119
  getResponsiveState(): import('../responsive').ResponsiveState;
116
120
  /** Configure responsive behavior */
@@ -130,14 +134,7 @@ export interface Chart {
130
134
  /** Destroy the chart and cleanup resources */
131
135
  destroy(): void;
132
136
  }
133
- export interface ChartPlugin {
134
- name: string;
135
- init?: (chart: Chart) => void;
136
- onBeforeRender?: (chart: Chart) => void;
137
- onAfterRender?: (chart: Chart) => void;
138
- onSeriesAdded?: (series: Series) => void;
139
- destroy?: () => void;
140
- }
137
+ export type { ChartPlugin };
141
138
  /** Options for data export */
142
139
  export interface ExportOptions {
143
140
  /** Series IDs to export (default: all) */
@@ -9,7 +9,6 @@ export { InteractionManager, type InteractionMode } from './InteractionManager';
9
9
  export * from './annotations';
10
10
  export * from './selection';
11
11
  export * from './responsive';
12
- export * from './delta-tool';
13
12
  export * from './loading';
14
13
  export * from './locale';
15
14
  export * from './keybindings';
@@ -25,6 +25,7 @@ export interface ResponsiveBreakpoint {
25
25
  }
26
26
  /** Preset breakpoints */
27
27
  export interface ResponsiveBreakpoints {
28
+ smallMobile?: ResponsiveBreakpoint;
28
29
  mobile?: ResponsiveBreakpoint;
29
30
  tablet?: ResponsiveBreakpoint;
30
31
  desktop?: ResponsiveBreakpoint;
@@ -49,7 +50,7 @@ export interface ResponsiveState {
49
50
  /** Current container height */
50
51
  height: number;
51
52
  /** Active breakpoint name */
52
- breakpoint: 'mobile' | 'tablet' | 'desktop';
53
+ breakpoint: 'smallMobile' | 'mobile' | 'tablet' | 'desktop';
53
54
  /** Whether touch is optimized */
54
55
  touchOptimized: boolean;
55
56
  /** Whether reduced motion is enabled */
@@ -85,7 +85,7 @@ export declare class SelectionManager {
85
85
  /**
86
86
  * Hit-test at a pixel coordinate to find the nearest data point
87
87
  */
88
- hitTest(pixelX: number, pixelY: number): HitTestResult | null;
88
+ hitTest(pixelX: number, pixelY: number, radius?: number): HitTestResult | null;
89
89
  /**
90
90
  * Hit-test all points within a rectangular region
91
91
  */
@@ -0,0 +1,20 @@
1
+ /**
2
+ * SciChart Engine - Plugin Demonstration Examples
3
+ *
4
+ * This file contains 3 comprehensive examples of how to use the mới modular plugin architecture.
5
+ */
6
+ /**
7
+ * Demonstrates how to combine the Debug plugin for performance metrics
8
+ * and the Analysis plugin for real-time signal processing.
9
+ */
10
+ export declare function examplePerformanceAndAnalysis(container: HTMLDivElement): Promise<import('..').Chart>;
11
+ /**
12
+ * Demonstrates the Streaming plugin capabilities, including WebSocket
13
+ * integration and backpressure management for high-frequency data.
14
+ */
15
+ export declare function exampleAdvancedStreaming(container: HTMLDivElement): Promise<import('..').Chart>;
16
+ /**
17
+ * Demonstrates how to use the i18n plugin for multiple languages
18
+ * and the ThemeEditor for visual customization.
19
+ */
20
+ export declare function exampleCustomization(container: HTMLDivElement): Promise<import('..').Chart>;
@@ -3,7 +3,7 @@ import { createChart } from './index';
3
3
  /**
4
4
  * Example: Basic CV Plot
5
5
  */
6
- export declare function exampleBasicCV(): import('./index').Chart;
6
+ export declare function exampleBasicCV(): import('./index.core').Chart;
7
7
  /**
8
8
  * Example: FFT of sine, square, and mixed waves
9
9
  */
@@ -17,7 +17,7 @@ export declare function exampleStreaming(): () => void;
17
17
  /**
18
18
  * Example: Multi-cycle CV with cycle detection
19
19
  */
20
- export declare function exampleMultiCycle(): import('./index').Chart;
20
+ export declare function exampleMultiCycle(): import('./index.core').Chart;
21
21
  /**
22
22
  * Example: Zoom controls
23
23
  */