@rm-graph/core 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/helpers.ts","../src/charts/BaseChart.ts","../src/charts/LineChart.ts","../src/charts/BarChart.ts","../src/charts/AreaChart.ts","../src/charts/HeatmapChart.ts","../src/charts/Surface3DChart.ts","../src/charts/Column3DChart.ts","../src/index.ts"],"names":["getSciChartTheme","SciChartJSLightTheme","SciChartJSDarkTheme","SciChartSurface","NumericAxis","EAutoRange","NumberRange","RolloverModifier","ZoomPanModifier","XyDataSeries","MouseWheelZoomModifier","SweepAnimation","GradientParams","Point","defaultColorStops","SciChart3DSurface","CameraController","Vector3","OrbitModifier3D","MouseWheelZoomModifier3D","NumericAxis3D"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { DataPoint, SeriesData } from \"../types\";\r\n\r\n/**\r\n * Generate a unique ID\r\n */\r\nexport function generateId(prefix: string = \"chart\"): string {\r\n return `${prefix}-${Math.random().toString(36).substring(2, 11)}`;\r\n}\r\n\r\n/**\r\n * Parse size value (handles both string and number)\r\n */\r\nexport function parseSize(value: string | number | undefined, fallback: number): number {\r\n if (value === undefined) return fallback;\r\n if (typeof value === \"number\") return value;\r\n \r\n // Handle percentage\r\n if (value.endsWith(\"%\")) {\r\n return fallback; // Return fallback for percentage, will be handled by CSS\r\n }\r\n \r\n // Handle px\r\n const parsed = parseInt(value, 10);\r\n return isNaN(parsed) ? fallback : parsed;\r\n}\r\n\r\n/**\r\n * Normalize data points to standard format\r\n */\r\nexport function normalizeDataPoints(data: DataPoint[] | number[]): DataPoint[] {\r\n if (data.length === 0) return [];\r\n \r\n // Check if it's already DataPoint format\r\n if (typeof data[0] === \"object\" && \"x\" in data[0]) {\r\n return data as DataPoint[];\r\n }\r\n \r\n // Convert number array to DataPoint array\r\n return (data as number[]).map((y, index) => ({\r\n x: index,\r\n y,\r\n }));\r\n}\r\n\r\n/**\r\n * Extract x values from data points\r\n */\r\nexport function extractXValues(data: DataPoint[]): number[] {\r\n return data.map((point) => {\r\n if (typeof point.x === \"number\") return point.x;\r\n if (point.x instanceof Date) return point.x.getTime();\r\n return 0; // For string categories, will be handled separately\r\n });\r\n}\r\n\r\n/**\r\n * Extract y values from data points\r\n */\r\nexport function extractYValues(data: DataPoint[]): number[] {\r\n return data.map((point) => point.y);\r\n}\r\n\r\n/**\r\n * Deep merge objects\r\n */\r\nexport function deepMerge<T extends Record<string, unknown>>(\r\n target: T,\r\n source: Partial<T>\r\n): T {\r\n const result = { ...target };\r\n \r\n for (const key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n const sourceValue = source[key];\r\n const targetValue = target[key];\r\n \r\n if (\r\n sourceValue !== null &&\r\n typeof sourceValue === \"object\" &&\r\n !Array.isArray(sourceValue) &&\r\n targetValue !== null &&\r\n typeof targetValue === \"object\" &&\r\n !Array.isArray(targetValue)\r\n ) {\r\n (result as Record<string, unknown>)[key] = deepMerge(\r\n targetValue as Record<string, unknown>,\r\n sourceValue as Record<string, unknown>\r\n );\r\n } else if (sourceValue !== undefined) {\r\n (result as Record<string, unknown>)[key] = sourceValue;\r\n }\r\n }\r\n }\r\n \r\n return result;\r\n}\r\n\r\n/**\r\n * Debounce function\r\n */\r\nexport function debounce<T extends (...args: unknown[]) => void>(\r\n fn: T,\r\n delay: number\r\n): (...args: Parameters<T>) => void {\r\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\r\n \r\n return (...args: Parameters<T>) => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n timeoutId = setTimeout(() => {\r\n fn(...args);\r\n timeoutId = null;\r\n }, delay);\r\n };\r\n}\r\n\r\n/**\r\n * Throttle function\r\n */\r\nexport function throttle<T extends (...args: unknown[]) => void>(\r\n fn: T,\r\n limit: number\r\n): (...args: Parameters<T>) => void {\r\n let inThrottle = false;\r\n \r\n return (...args: Parameters<T>) => {\r\n if (!inThrottle) {\r\n fn(...args);\r\n inThrottle = true;\r\n setTimeout(() => {\r\n inThrottle = false;\r\n }, limit);\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Calculate min and max from data series\r\n */\r\nexport function calculateDataRange(series: SeriesData[]): {\r\n xMin: number;\r\n xMax: number;\r\n yMin: number;\r\n yMax: number;\r\n} {\r\n let xMin = Infinity;\r\n let xMax = -Infinity;\r\n let yMin = Infinity;\r\n let yMax = -Infinity;\r\n \r\n for (const s of series) {\r\n const normalized = normalizeDataPoints(s.data);\r\n for (const point of normalized) {\r\n const x = typeof point.x === \"number\" ? point.x : 0;\r\n xMin = Math.min(xMin, x);\r\n xMax = Math.max(xMax, x);\r\n yMin = Math.min(yMin, point.y);\r\n yMax = Math.max(yMax, point.y);\r\n }\r\n }\r\n \r\n return {\r\n xMin: xMin === Infinity ? 0 : xMin,\r\n xMax: xMax === -Infinity ? 100 : xMax,\r\n yMin: yMin === Infinity ? 0 : yMin,\r\n yMax: yMax === -Infinity ? 100 : yMax,\r\n };\r\n}\r\n\r\n/**\r\n * Format number for display\r\n */\r\nexport function formatNumber(value: number, precision: number = 2): string {\r\n if (Math.abs(value) >= 1e9) {\r\n return (value / 1e9).toFixed(precision) + \"B\";\r\n }\r\n if (Math.abs(value) >= 1e6) {\r\n return (value / 1e6).toFixed(precision) + \"M\";\r\n }\r\n if (Math.abs(value) >= 1e3) {\r\n return (value / 1e3).toFixed(precision) + \"K\";\r\n }\r\n return value.toFixed(precision);\r\n}\r\n\r\n/**\r\n * Clamp a value between min and max\r\n */\r\nexport function clamp(value: number, min: number, max: number): number {\r\n return Math.min(Math.max(value, min), max);\r\n}\r\n\r\n/**\r\n * Linear interpolation\r\n */\r\nexport function lerp(start: number, end: number, t: number): number {\r\n return start + (end - start) * clamp(t, 0, 1);\r\n}\r\n\r\n/**\r\n * Convert hex color to rgba\r\n */\r\nexport function hexToRgba(hex: string, alpha: number = 1): string {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n if (!result) return hex;\r\n \r\n const r = parseInt(result[1], 16);\r\n const g = parseInt(result[2], 16);\r\n const b = parseInt(result[3], 16);\r\n \r\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\r\n}\r\n\r\n","import { SciChartSurface } from \"scichart\";\r\nimport type {\r\n ChartConfig,\r\n ChartInstance,\r\n ChartEventMap,\r\n SeriesData,\r\n ThemeConfig,\r\n} from \"../types\";\r\nimport { ThemeManager } from \"../themes/ThemeManager\";\r\nimport { generateId, debounce } from \"../utils/helpers\";\r\n\r\n// Type for SciChart surface\r\ntype SciChartSurfaceType = Awaited<ReturnType<typeof SciChartSurface.create>>[\"sciChartSurface\"];\r\n\r\n/**\r\n * Abstract base class for all chart types\r\n * Handles common functionality like initialization, theming, events, and cleanup\r\n */\r\nexport abstract class BaseChart<TConfig extends ChartConfig> implements ChartInstance {\r\n public readonly id: string;\r\n protected container: HTMLElement | null = null;\r\n protected surface: SciChartSurfaceType | null = null;\r\n protected config: TConfig;\r\n protected theme: ThemeConfig;\r\n protected isInitialized: boolean = false;\r\n protected isDestroyed: boolean = false;\r\n\r\n // Event handlers\r\n private eventHandlers: Map<keyof ChartEventMap, Set<(e: unknown) => void>> = new Map();\r\n\r\n // Resize observer\r\n private resizeObserver: ResizeObserver | null = null;\r\n private debouncedResize: () => void;\r\n\r\n constructor(config: TConfig) {\r\n this.id = config.id ?? generateId(\"chart\");\r\n this.config = config;\r\n this.theme = ThemeManager.getInstance().resolveTheme(config.theme);\r\n this.debouncedResize = debounce(() => this.handleResize(), 100);\r\n }\r\n\r\n /**\r\n * Initialize the chart in the given container\r\n */\r\n public async init(container: HTMLElement | string): Promise<void> {\r\n if (this.isDestroyed) {\r\n throw new Error(\"Cannot initialize a destroyed chart\");\r\n }\r\n\r\n // Resolve container\r\n if (typeof container === \"string\") {\r\n const el = document.getElementById(container);\r\n if (!el) {\r\n throw new Error(`Container element \"${container}\" not found`);\r\n }\r\n this.container = el;\r\n } else {\r\n this.container = container;\r\n }\r\n\r\n // Set container styles\r\n this.setupContainer();\r\n\r\n // Configure SciChart defaults\r\n this.configureSciChartDefaults();\r\n\r\n // Create the SciChart surface\r\n await this.createSurface();\r\n\r\n // Set up resize observer\r\n this.setupResizeObserver();\r\n\r\n this.isInitialized = true;\r\n this.emit(\"rendered\", { chartId: this.id, renderTime: performance.now() });\r\n }\r\n\r\n /**\r\n * Setup container element\r\n */\r\n private setupContainer(): void {\r\n if (!this.container) return;\r\n\r\n const { width, height } = this.config;\r\n\r\n // Set dimensions\r\n if (width) {\r\n this.container.style.width =\r\n typeof width === \"number\" ? `${width}px` : width;\r\n }\r\n if (height) {\r\n this.container.style.height =\r\n typeof height === \"number\" ? `${height}px` : height;\r\n }\r\n\r\n // Ensure container has position for absolute children\r\n const computedStyle = window.getComputedStyle(this.container);\r\n if (computedStyle.position === \"static\") {\r\n this.container.style.position = \"relative\";\r\n }\r\n }\r\n\r\n /**\r\n * Configure SciChart library defaults\r\n */\r\n private configureSciChartDefaults(): void {\r\n // SciChart configuration is handled through SciChartSurface.configure()\r\n // Users can call this before chart initialization if needed\r\n }\r\n\r\n /**\r\n * Create the SciChart surface - implemented by subclasses\r\n */\r\n protected abstract createSurface(): Promise<void>;\r\n\r\n /**\r\n * Update the chart with new data\r\n */\r\n public abstract setData(data: SeriesData[]): void;\r\n\r\n /**\r\n * Update chart options\r\n */\r\n public setOptions(options: Partial<TConfig>): void {\r\n this.config = { ...this.config, ...options };\r\n \r\n // Update theme if changed\r\n if (options.theme) {\r\n this.theme = ThemeManager.getInstance().resolveTheme(options.theme);\r\n this.applyTheme();\r\n }\r\n\r\n // Trigger re-render\r\n this.update();\r\n }\r\n\r\n /**\r\n * Apply current theme to the chart\r\n */\r\n protected applyTheme(): void {\r\n if (!this.surface) return;\r\n\r\n this.surface.background = this.theme.backgroundColor ?? \"#ffffff\";\r\n // Additional theme application handled by subclasses\r\n }\r\n\r\n /**\r\n * Update the chart (re-render with current config)\r\n */\r\n protected abstract update(): void;\r\n\r\n /**\r\n * Set up resize observer for responsive charts\r\n */\r\n private setupResizeObserver(): void {\r\n if (!this.container || typeof ResizeObserver === \"undefined\") return;\r\n\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.debouncedResize();\r\n });\r\n\r\n this.resizeObserver.observe(this.container);\r\n }\r\n\r\n /**\r\n * Handle container resize\r\n */\r\n private handleResize(): void {\r\n if (!this.surface || !this.container) return;\r\n\r\n const { width, height } = this.container.getBoundingClientRect();\r\n if (width > 0 && height > 0) {\r\n // SciChart handles resizing automatically when container size changes\r\n // but we can force a redraw if needed\r\n }\r\n }\r\n\r\n /**\r\n * Manually resize the chart\r\n */\r\n public resize(width?: number, height?: number): void {\r\n if (!this.container) return;\r\n\r\n if (width !== undefined) {\r\n this.container.style.width = `${width}px`;\r\n }\r\n if (height !== undefined) {\r\n this.container.style.height = `${height}px`;\r\n }\r\n\r\n this.handleResize();\r\n }\r\n\r\n /**\r\n * Export chart as image\r\n */\r\n public async exportImage(format: \"png\" | \"jpeg\" | \"svg\" = \"png\"): Promise<string> {\r\n if (!this.surface) {\r\n throw new Error(\"Chart not initialized\");\r\n }\r\n\r\n // SciChart provides export functionality\r\n // This is a simplified implementation\r\n const canvas = this.container?.querySelector(\"canvas\");\r\n if (!canvas) {\r\n throw new Error(\"Canvas not found\");\r\n }\r\n\r\n const mimeType = format === \"jpeg\" ? \"image/jpeg\" : \"image/png\";\r\n return canvas.toDataURL(mimeType);\r\n }\r\n\r\n /**\r\n * Add event listener\r\n */\r\n public on<K extends keyof ChartEventMap>(\r\n event: K,\r\n handler: (e: ChartEventMap[K]) => void\r\n ): void {\r\n if (!this.eventHandlers.has(event)) {\r\n this.eventHandlers.set(event, new Set());\r\n }\r\n this.eventHandlers.get(event)!.add(handler as (e: unknown) => void);\r\n }\r\n\r\n /**\r\n * Remove event listener\r\n */\r\n public off<K extends keyof ChartEventMap>(\r\n event: K,\r\n handler: (e: ChartEventMap[K]) => void\r\n ): void {\r\n const handlers = this.eventHandlers.get(event);\r\n if (handlers) {\r\n handlers.delete(handler as (e: unknown) => void);\r\n }\r\n }\r\n\r\n /**\r\n * Emit an event\r\n */\r\n protected emit<K extends keyof ChartEventMap>(event: K, data: ChartEventMap[K]): void {\r\n const handlers = this.eventHandlers.get(event);\r\n if (handlers) {\r\n handlers.forEach((handler) => handler(data));\r\n }\r\n }\r\n\r\n /**\r\n * Destroy the chart and clean up resources\r\n */\r\n public destroy(): void {\r\n if (this.isDestroyed) return;\r\n\r\n // Clean up resize observer\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n this.resizeObserver = null;\r\n }\r\n\r\n // Clean up event handlers\r\n this.eventHandlers.clear();\r\n\r\n // Delete the SciChart surface\r\n if (this.surface) {\r\n this.surface.delete();\r\n this.surface = null;\r\n }\r\n\r\n // Clear container\r\n if (this.container) {\r\n this.container.innerHTML = \"\";\r\n }\r\n\r\n this.isDestroyed = true;\r\n this.isInitialized = false;\r\n }\r\n\r\n /**\r\n * Get current configuration\r\n */\r\n public getConfig(): TConfig {\r\n return { ...this.config };\r\n }\r\n\r\n /**\r\n * Get current theme\r\n */\r\n public getTheme(): ThemeConfig {\r\n return { ...this.theme };\r\n }\r\n\r\n /**\r\n * Check if chart is initialized\r\n */\r\n public isReady(): boolean {\r\n return this.isInitialized && !this.isDestroyed;\r\n }\r\n}\r\n\r\n","import {\r\n SciChartSurface,\r\n NumericAxis,\r\n FastLineRenderableSeries,\r\n XyDataSeries,\r\n EllipsePointMarker,\r\n SweepAnimation,\r\n NumberRange,\r\n RolloverModifier,\r\n ZoomPanModifier,\r\n MouseWheelZoomModifier,\r\n EAutoRange,\r\n SciChartJSDarkTheme,\r\n SciChartJSLightTheme,\r\n} from \"scichart\";\r\nimport { BaseChart } from \"./BaseChart\";\r\nimport type { LineChartConfig, SeriesData, DataPoint } from \"../types\";\r\nimport { normalizeDataPoints, extractXValues, extractYValues } from \"../utils/helpers\";\r\n\r\n// Helper function to get SciChart theme based on our theme config\r\nfunction getSciChartTheme(themeName?: string) {\r\n switch (themeName) {\r\n case \"light\":\r\n return new SciChartJSLightTheme();\r\n case \"dark\":\r\n case \"modern\":\r\n case \"midnight\":\r\n default:\r\n return new SciChartJSDarkTheme();\r\n }\r\n}\r\n\r\n/**\r\n * Line Chart implementation using SciChart\r\n */\r\nexport class LineChart extends BaseChart<LineChartConfig> {\r\n private dataSeries: Map<string, XyDataSeries> = new Map();\r\n private renderableSeries: FastLineRenderableSeries[] = [];\r\n private wasmContext: any = null;\r\n\r\n constructor(config: LineChartConfig) {\r\n super(config);\r\n }\r\n\r\n /**\r\n * Create the SciChart surface for line chart\r\n */\r\n protected async createSurface(): Promise<void> {\r\n if (!this.container) {\r\n throw new Error(\"Container not set\");\r\n }\r\n\r\n // Create the SciChart surface with proper theme\r\n const sciChartTheme = getSciChartTheme(this.config.theme as string);\r\n \r\n // Ensure container has a unique ID for SciChart\r\n if (!this.container.id) {\r\n this.container.id = this.id;\r\n }\r\n \r\n const { sciChartSurface, wasmContext } = await SciChartSurface.create(\r\n this.container as HTMLDivElement,\r\n {\r\n theme: sciChartTheme,\r\n }\r\n );\r\n\r\n this.surface = sciChartSurface;\r\n this.wasmContext = wasmContext;\r\n\r\n // Create X Axis with custom theme colors\r\n const xAxis = new NumericAxis(wasmContext, {\r\n axisTitle: this.config.xAxis?.title,\r\n drawMajorGridLines: this.config.xAxis?.gridLines?.show ?? true,\r\n drawMinorGridLines: false,\r\n axisTitleStyle: {\r\n fontSize: 14,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.titleColor,\r\n },\r\n labelStyle: {\r\n fontSize: 12,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.labelColor,\r\n },\r\n majorGridLineStyle: {\r\n color: this.theme.axis?.gridLineColor ?? \"#e9ecef\",\r\n strokeThickness: 1,\r\n },\r\n axisBorder: {\r\n color: this.theme.axis?.lineColor ?? \"#dee2e6\",\r\n },\r\n autoRange: EAutoRange.Always,\r\n });\r\n\r\n // Create Y Axis with custom theme colors\r\n const yAxis = new NumericAxis(wasmContext, {\r\n axisTitle: this.config.yAxis?.title,\r\n drawMajorGridLines: this.config.yAxis?.gridLines?.show ?? true,\r\n drawMinorGridLines: false,\r\n axisTitleStyle: {\r\n fontSize: 14,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.titleColor,\r\n },\r\n labelStyle: {\r\n fontSize: 12,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.labelColor,\r\n },\r\n majorGridLineStyle: {\r\n color: this.theme.axis?.gridLineColor ?? \"#e9ecef\",\r\n strokeThickness: 1,\r\n },\r\n axisBorder: {\r\n color: this.theme.axis?.lineColor ?? \"#dee2e6\",\r\n },\r\n autoRange: EAutoRange.Always,\r\n });\r\n\r\n // Apply axis range if specified\r\n if (this.config.xAxis?.min !== undefined && this.config.xAxis?.max !== undefined) {\r\n xAxis.visibleRange = new NumberRange(this.config.xAxis.min, this.config.xAxis.max);\r\n xAxis.autoRange = EAutoRange.Never;\r\n }\r\n if (this.config.yAxis?.min !== undefined && this.config.yAxis?.max !== undefined) {\r\n yAxis.visibleRange = new NumberRange(this.config.yAxis.min, this.config.yAxis.max);\r\n yAxis.autoRange = EAutoRange.Never;\r\n }\r\n\r\n sciChartSurface.xAxes.add(xAxis);\r\n sciChartSurface.yAxes.add(yAxis);\r\n\r\n // Add interactivity modifiers\r\n if (this.config.tooltip?.enabled !== false) {\r\n sciChartSurface.chartModifiers.add(\r\n new RolloverModifier({\r\n showTooltip: true,\r\n showAxisLabel: true,\r\n })\r\n );\r\n }\r\n\r\n sciChartSurface.chartModifiers.add(new ZoomPanModifier());\r\n sciChartSurface.chartModifiers.add(new MouseWheelZoomModifier());\r\n\r\n // Add initial series data\r\n this.addSeries(this.config.series);\r\n }\r\n\r\n /**\r\n * Add series to the chart\r\n */\r\n private addSeries(seriesConfigs: SeriesData[]): void {\r\n if (!this.surface || !this.wasmContext) return;\r\n\r\n const wasmContext = this.wasmContext;\r\n const colorPalette = this.theme.colorPalette ?? [];\r\n\r\n seriesConfigs.forEach((seriesConfig, index) => {\r\n const data = normalizeDataPoints(seriesConfig.data);\r\n const xValues = extractXValues(data);\r\n const yValues = extractYValues(data);\r\n\r\n // Create data series\r\n const dataSeries = new XyDataSeries(wasmContext, {\r\n xValues,\r\n yValues,\r\n dataSeriesName: seriesConfig.name,\r\n });\r\n\r\n this.dataSeries.set(seriesConfig.name, dataSeries);\r\n\r\n // Get color\r\n const color = seriesConfig.color ?? colorPalette[index % colorPalette.length] ?? \"#6366f1\";\r\n\r\n // Create renderable series - create first, then assign properties\r\n const lineSeries = new FastLineRenderableSeries(wasmContext);\r\n lineSeries.dataSeries = dataSeries;\r\n lineSeries.stroke = color;\r\n lineSeries.strokeThickness = this.config.lineWidth ?? 2;\r\n\r\n // Add point markers if enabled\r\n if (this.config.showPoints) {\r\n lineSeries.pointMarker = new EllipsePointMarker(wasmContext, {\r\n width: this.config.pointSize ?? 8,\r\n height: this.config.pointSize ?? 8,\r\n fill: color,\r\n stroke: color,\r\n strokeThickness: 0,\r\n });\r\n }\r\n\r\n // Add animation if enabled\r\n if (this.config.animation !== false) {\r\n lineSeries.animation = new SweepAnimation({\r\n duration: typeof this.config.animation === \"object\" \r\n ? this.config.animation.duration ?? 500 \r\n : 500,\r\n });\r\n }\r\n\r\n this.renderableSeries.push(lineSeries);\r\n this.surface!.renderableSeries.add(lineSeries);\r\n });\r\n }\r\n\r\n /**\r\n * Set new data for the chart\r\n */\r\n public setData(data: SeriesData[]): void {\r\n if (!this.surface) {\r\n // Store for when chart is initialized\r\n this.config.series = data;\r\n return;\r\n }\r\n\r\n // Clear existing series\r\n this.clearSeries();\r\n\r\n // Add new series\r\n this.config.series = data;\r\n this.addSeries(data);\r\n }\r\n\r\n /**\r\n * Update specific series data\r\n */\r\n public updateSeriesData(seriesName: string, data: DataPoint[] | number[]): void {\r\n const dataSeries = this.dataSeries.get(seriesName);\r\n if (!dataSeries) {\r\n console.warn(`Series \"${seriesName}\" not found`);\r\n return;\r\n }\r\n\r\n const normalized = normalizeDataPoints(data);\r\n const xValues = extractXValues(normalized);\r\n const yValues = extractYValues(normalized);\r\n\r\n dataSeries.clear();\r\n dataSeries.appendRange(xValues, yValues);\r\n }\r\n\r\n /**\r\n * Append data to a series\r\n */\r\n public appendData(seriesName: string, data: DataPoint | DataPoint[]): void {\r\n const dataSeries = this.dataSeries.get(seriesName);\r\n if (!dataSeries) {\r\n console.warn(`Series \"${seriesName}\" not found`);\r\n return;\r\n }\r\n\r\n const points = Array.isArray(data) ? data : [data];\r\n const normalized = normalizeDataPoints(points);\r\n const xValues = extractXValues(normalized);\r\n const yValues = extractYValues(normalized);\r\n\r\n dataSeries.appendRange(xValues, yValues);\r\n }\r\n\r\n /**\r\n * Clear all series\r\n */\r\n private clearSeries(): void {\r\n if (!this.surface) return;\r\n\r\n // Remove renderable series\r\n this.renderableSeries.forEach((series) => {\r\n this.surface!.renderableSeries.remove(series);\r\n series.delete();\r\n });\r\n this.renderableSeries = [];\r\n\r\n // Delete data series\r\n this.dataSeries.forEach((ds) => ds.delete());\r\n this.dataSeries.clear();\r\n }\r\n\r\n /**\r\n * Update chart\r\n */\r\n protected update(): void {\r\n if (!this.surface) return;\r\n \r\n // Re-apply theme\r\n this.applyTheme();\r\n \r\n // Trigger redraw\r\n this.surface.invalidateElement();\r\n }\r\n\r\n /**\r\n * Apply theme to line chart\r\n */\r\n protected applyTheme(): void {\r\n super.applyTheme();\r\n\r\n if (!this.surface) return;\r\n\r\n // Update series colors based on theme\r\n const colorPalette = this.theme.colorPalette ?? [];\r\n this.renderableSeries.forEach((series, index) => {\r\n const originalColor = this.config.series[index]?.color;\r\n if (!originalColor) {\r\n series.stroke = colorPalette[index % colorPalette.length];\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Destroy and clean up\r\n */\r\n public destroy(): void {\r\n this.clearSeries();\r\n super.destroy();\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a line chart\r\n */\r\nexport async function createLineChart(\r\n container: HTMLElement | string,\r\n config: LineChartConfig\r\n): Promise<LineChart> {\r\n const chart = new LineChart(config);\r\n await chart.init(container);\r\n return chart;\r\n}\r\n\r\n","import {\r\n SciChartSurface,\r\n NumericAxis,\r\n FastColumnRenderableSeries,\r\n XyDataSeries,\r\n WaveAnimation,\r\n NumberRange,\r\n RolloverModifier,\r\n ZoomPanModifier,\r\n EAutoRange,\r\n GradientParams,\r\n Point,\r\n SciChartJSDarkTheme,\r\n SciChartJSLightTheme,\r\n} from \"scichart\";\r\nimport { BaseChart } from \"./BaseChart\";\r\nimport type { BarChartConfig, SeriesData, DataPoint } from \"../types\";\r\nimport { normalizeDataPoints, extractXValues, extractYValues, hexToRgba } from \"../utils/helpers\";\r\n\r\n// Helper function to get SciChart theme based on our theme config\r\nfunction getSciChartTheme(themeName?: string) {\r\n switch (themeName) {\r\n case \"light\":\r\n return new SciChartJSLightTheme();\r\n case \"dark\":\r\n case \"modern\":\r\n case \"midnight\":\r\n default:\r\n return new SciChartJSDarkTheme();\r\n }\r\n}\r\n\r\n/**\r\n * Bar/Column Chart implementation using SciChart\r\n */\r\nexport class BarChart extends BaseChart<BarChartConfig> {\r\n private dataSeries: Map<string, XyDataSeries> = new Map();\r\n private renderableSeries: FastColumnRenderableSeries[] = [];\r\n private wasmContext: any = null;\r\n\r\n constructor(config: BarChartConfig) {\r\n super(config);\r\n }\r\n\r\n /**\r\n * Create the SciChart surface for bar chart\r\n */\r\n protected async createSurface(): Promise<void> {\r\n if (!this.container) {\r\n throw new Error(\"Container not set\");\r\n }\r\n\r\n // Create the SciChart surface with proper theme\r\n const sciChartTheme = getSciChartTheme(this.config.theme as string);\r\n \r\n // Ensure container has a unique ID for SciChart\r\n if (!this.container.id) {\r\n this.container.id = this.id;\r\n }\r\n \r\n const { sciChartSurface, wasmContext } = await SciChartSurface.create(\r\n this.container as HTMLDivElement,\r\n {\r\n theme: sciChartTheme,\r\n }\r\n );\r\n\r\n this.surface = sciChartSurface;\r\n this.wasmContext = wasmContext;\r\n\r\n // Create X Axis\r\n const xAxis = new NumericAxis(wasmContext, {\r\n axisTitle: this.config.xAxis?.title,\r\n drawMajorGridLines: this.config.xAxis?.gridLines?.show ?? false,\r\n drawMinorGridLines: false,\r\n axisTitleStyle: {\r\n fontSize: 14,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.titleColor,\r\n },\r\n labelStyle: {\r\n fontSize: 12,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.labelColor,\r\n },\r\n autoRange: EAutoRange.Always,\r\n });\r\n\r\n // Create Y Axis\r\n const yAxis = new NumericAxis(wasmContext, {\r\n axisTitle: this.config.yAxis?.title,\r\n drawMajorGridLines: this.config.yAxis?.gridLines?.show ?? true,\r\n drawMinorGridLines: false,\r\n axisTitleStyle: {\r\n fontSize: 14,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.titleColor,\r\n },\r\n labelStyle: {\r\n fontSize: 12,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.labelColor,\r\n },\r\n autoRange: EAutoRange.Always,\r\n growBy: new NumberRange(0, 0.1), // Add 10% padding at top\r\n });\r\n\r\n // Apply axis range if specified\r\n if (this.config.xAxis?.min !== undefined && this.config.xAxis?.max !== undefined) {\r\n xAxis.visibleRange = new NumberRange(this.config.xAxis.min, this.config.xAxis.max);\r\n xAxis.autoRange = EAutoRange.Never;\r\n }\r\n if (this.config.yAxis?.min !== undefined && this.config.yAxis?.max !== undefined) {\r\n yAxis.visibleRange = new NumberRange(this.config.yAxis.min, this.config.yAxis.max);\r\n yAxis.autoRange = EAutoRange.Never;\r\n }\r\n\r\n sciChartSurface.xAxes.add(xAxis);\r\n sciChartSurface.yAxes.add(yAxis);\r\n\r\n // Add interactivity modifiers\r\n if (this.config.tooltip?.enabled !== false) {\r\n sciChartSurface.chartModifiers.add(\r\n new RolloverModifier({\r\n showTooltip: true,\r\n showAxisLabel: true,\r\n })\r\n );\r\n }\r\n\r\n sciChartSurface.chartModifiers.add(new ZoomPanModifier());\r\n\r\n // Add initial series data\r\n this.addSeries(this.config.series);\r\n }\r\n\r\n /**\r\n * Add series to the chart\r\n */\r\n private addSeries(seriesConfigs: SeriesData[]): void {\r\n if (!this.surface || !this.wasmContext) return;\r\n\r\n const wasmContext = this.wasmContext;\r\n const colorPalette = this.theme.colorPalette ?? [];\r\n const seriesCount = seriesConfigs.length;\r\n const dataPointWidth = this.config.barWidth ?? 0.7;\r\n\r\n seriesConfigs.forEach((seriesConfig, index) => {\r\n const data = normalizeDataPoints(seriesConfig.data);\r\n \r\n // Offset x values for grouped bars\r\n let xValues = extractXValues(data);\r\n if (!this.config.stacked && seriesCount > 1) {\r\n const offset = (index - (seriesCount - 1) / 2) * (dataPointWidth / seriesCount);\r\n xValues = xValues.map(x => x + offset);\r\n }\r\n \r\n const yValues = extractYValues(data);\r\n\r\n // Create data series\r\n const dataSeries = new XyDataSeries(wasmContext, {\r\n xValues,\r\n yValues,\r\n dataSeriesName: seriesConfig.name,\r\n });\r\n\r\n this.dataSeries.set(seriesConfig.name, dataSeries);\r\n\r\n // Get color\r\n const color = seriesConfig.color ?? colorPalette[index % colorPalette.length] ?? \"#6366f1\";\r\n\r\n // Create renderable series - create first, then assign properties\r\n const columnSeries = new FastColumnRenderableSeries(wasmContext);\r\n columnSeries.dataSeries = dataSeries;\r\n columnSeries.fill = color;\r\n columnSeries.stroke = color;\r\n columnSeries.strokeThickness = 0;\r\n columnSeries.dataPointWidth = this.config.stacked ? dataPointWidth : dataPointWidth / seriesCount;\r\n columnSeries.cornerRadius = this.config.borderRadius ?? 0;\r\n\r\n // Add animation if enabled\r\n if (this.config.animation !== false) {\r\n columnSeries.animation = new WaveAnimation({\r\n duration: typeof this.config.animation === \"object\"\r\n ? this.config.animation.duration ?? 500\r\n : 500,\r\n });\r\n }\r\n\r\n // Apply gradient fill for better visuals\r\n columnSeries.fillLinearGradient = new GradientParams(\r\n new Point(0, 0),\r\n new Point(0, 1),\r\n [\r\n { color: color, offset: 0 },\r\n { color: hexToRgba(color, 0.7), offset: 1 },\r\n ]\r\n );\r\n\r\n this.renderableSeries.push(columnSeries);\r\n this.surface!.renderableSeries.add(columnSeries);\r\n });\r\n }\r\n\r\n /**\r\n * Set new data for the chart\r\n */\r\n public setData(data: SeriesData[]): void {\r\n if (!this.surface) {\r\n this.config.series = data;\r\n return;\r\n }\r\n\r\n this.clearSeries();\r\n this.config.series = data;\r\n this.addSeries(data);\r\n }\r\n\r\n /**\r\n * Update specific series data\r\n */\r\n public updateSeriesData(seriesName: string, data: DataPoint[] | number[]): void {\r\n const dataSeries = this.dataSeries.get(seriesName);\r\n if (!dataSeries) {\r\n console.warn(`Series \"${seriesName}\" not found`);\r\n return;\r\n }\r\n\r\n const normalized = normalizeDataPoints(data);\r\n const xValues = extractXValues(normalized);\r\n const yValues = extractYValues(normalized);\r\n\r\n dataSeries.clear();\r\n dataSeries.appendRange(xValues, yValues);\r\n }\r\n\r\n /**\r\n * Clear all series\r\n */\r\n private clearSeries(): void {\r\n if (!this.surface) return;\r\n\r\n this.renderableSeries.forEach((series) => {\r\n this.surface!.renderableSeries.remove(series);\r\n series.delete();\r\n });\r\n this.renderableSeries = [];\r\n\r\n this.dataSeries.forEach((ds) => ds.delete());\r\n this.dataSeries.clear();\r\n }\r\n\r\n /**\r\n * Update chart\r\n */\r\n protected update(): void {\r\n if (!this.surface) return;\r\n this.applyTheme();\r\n this.surface.invalidateElement();\r\n }\r\n\r\n /**\r\n * Destroy and clean up\r\n */\r\n public destroy(): void {\r\n this.clearSeries();\r\n super.destroy();\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a bar chart\r\n */\r\nexport async function createBarChart(\r\n container: HTMLElement | string,\r\n config: BarChartConfig\r\n): Promise<BarChart> {\r\n const chart = new BarChart(config);\r\n await chart.init(container);\r\n return chart;\r\n}\r\n\r\n","import {\r\n SciChartSurface,\r\n NumericAxis,\r\n FastMountainRenderableSeries,\r\n XyDataSeries,\r\n SweepAnimation,\r\n NumberRange,\r\n RolloverModifier,\r\n ZoomPanModifier,\r\n MouseWheelZoomModifier,\r\n EAutoRange,\r\n GradientParams,\r\n Point,\r\n SciChartJSDarkTheme,\r\n SciChartJSLightTheme,\r\n} from \"scichart\";\r\nimport { BaseChart } from \"./BaseChart\";\r\nimport type { AreaChartConfig, SeriesData, DataPoint } from \"../types\";\r\nimport { normalizeDataPoints, extractXValues, extractYValues, hexToRgba } from \"../utils/helpers\";\r\n\r\n// Helper function to get SciChart theme based on our theme config\r\nfunction getSciChartTheme(themeName?: string) {\r\n switch (themeName) {\r\n case \"light\":\r\n return new SciChartJSLightTheme();\r\n case \"dark\":\r\n case \"modern\":\r\n case \"midnight\":\r\n default:\r\n return new SciChartJSDarkTheme();\r\n }\r\n}\r\n\r\n/**\r\n * Area Chart implementation using SciChart\r\n */\r\nexport class AreaChart extends BaseChart<AreaChartConfig> {\r\n private dataSeries: Map<string, XyDataSeries> = new Map();\r\n private renderableSeries: FastMountainRenderableSeries[] = [];\r\n private wasmContext: any = null;\r\n\r\n constructor(config: AreaChartConfig) {\r\n super(config);\r\n }\r\n\r\n /**\r\n * Create the SciChart surface for area chart\r\n */\r\n protected async createSurface(): Promise<void> {\r\n if (!this.container) {\r\n throw new Error(\"Container not set\");\r\n }\r\n\r\n // Create the SciChart surface with proper theme\r\n const sciChartTheme = getSciChartTheme(this.config.theme as string);\r\n \r\n // Ensure container has a unique ID for SciChart\r\n if (!this.container.id) {\r\n this.container.id = this.id;\r\n }\r\n \r\n const { sciChartSurface, wasmContext } = await SciChartSurface.create(\r\n this.container as HTMLDivElement,\r\n {\r\n theme: sciChartTheme,\r\n }\r\n );\r\n\r\n this.surface = sciChartSurface;\r\n this.wasmContext = wasmContext;\r\n\r\n // Create X Axis\r\n const xAxis = new NumericAxis(wasmContext, {\r\n axisTitle: this.config.xAxis?.title,\r\n drawMajorGridLines: this.config.xAxis?.gridLines?.show ?? true,\r\n drawMinorGridLines: false,\r\n axisTitleStyle: {\r\n fontSize: 14,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.titleColor,\r\n },\r\n labelStyle: {\r\n fontSize: 12,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.labelColor,\r\n },\r\n autoRange: EAutoRange.Always,\r\n });\r\n\r\n // Create Y Axis\r\n const yAxis = new NumericAxis(wasmContext, {\r\n axisTitle: this.config.yAxis?.title,\r\n drawMajorGridLines: this.config.yAxis?.gridLines?.show ?? true,\r\n drawMinorGridLines: false,\r\n axisTitleStyle: {\r\n fontSize: 14,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.titleColor,\r\n },\r\n labelStyle: {\r\n fontSize: 12,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.labelColor,\r\n },\r\n autoRange: EAutoRange.Always,\r\n growBy: new NumberRange(0, 0.1),\r\n });\r\n\r\n // Apply axis range if specified\r\n if (this.config.xAxis?.min !== undefined && this.config.xAxis?.max !== undefined) {\r\n xAxis.visibleRange = new NumberRange(this.config.xAxis.min, this.config.xAxis.max);\r\n xAxis.autoRange = EAutoRange.Never;\r\n }\r\n if (this.config.yAxis?.min !== undefined && this.config.yAxis?.max !== undefined) {\r\n yAxis.visibleRange = new NumberRange(this.config.yAxis.min, this.config.yAxis.max);\r\n yAxis.autoRange = EAutoRange.Never;\r\n }\r\n\r\n sciChartSurface.xAxes.add(xAxis);\r\n sciChartSurface.yAxes.add(yAxis);\r\n\r\n // Add interactivity modifiers\r\n if (this.config.tooltip?.enabled !== false) {\r\n sciChartSurface.chartModifiers.add(\r\n new RolloverModifier({\r\n showTooltip: true,\r\n showAxisLabel: true,\r\n })\r\n );\r\n }\r\n\r\n sciChartSurface.chartModifiers.add(new ZoomPanModifier());\r\n sciChartSurface.chartModifiers.add(new MouseWheelZoomModifier());\r\n\r\n // Add initial series data\r\n this.addSeries(this.config.series);\r\n }\r\n\r\n /**\r\n * Add series to the chart\r\n */\r\n private addSeries(seriesConfigs: SeriesData[]): void {\r\n if (!this.surface || !this.wasmContext) return;\r\n\r\n const wasmContext = this.wasmContext;\r\n const colorPalette = this.theme.colorPalette ?? [];\r\n const fillOpacity = this.config.fillOpacity ?? 0.5;\r\n\r\n seriesConfigs.forEach((seriesConfig, index) => {\r\n const data = normalizeDataPoints(seriesConfig.data);\r\n const xValues = extractXValues(data);\r\n const yValues = extractYValues(data);\r\n\r\n // Create data series\r\n const dataSeries = new XyDataSeries(wasmContext, {\r\n xValues,\r\n yValues,\r\n dataSeriesName: seriesConfig.name,\r\n });\r\n\r\n this.dataSeries.set(seriesConfig.name, dataSeries);\r\n\r\n // Get color\r\n const color = seriesConfig.color ?? colorPalette[index % colorPalette.length] ?? \"#6366f1\";\r\n\r\n // Create renderable series (mountain = area)\r\n const areaSeries = new FastMountainRenderableSeries(wasmContext, {\r\n dataSeries,\r\n stroke: color,\r\n strokeThickness: this.config.lineWidth ?? 2,\r\n fill: hexToRgba(color, fillOpacity),\r\n ...(this.config.animation !== false && {\r\n animation: new SweepAnimation({\r\n duration: typeof this.config.animation === \"object\"\r\n ? this.config.animation.duration ?? 500\r\n : 500,\r\n }),\r\n }),\r\n });\r\n\r\n // Apply gradient fill for better visuals\r\n areaSeries.fillLinearGradient = new GradientParams(\r\n new Point(0, 0),\r\n new Point(0, 1),\r\n [\r\n { color: hexToRgba(color, fillOpacity), offset: 0 },\r\n { color: hexToRgba(color, 0.05), offset: 1 },\r\n ]\r\n );\r\n\r\n this.renderableSeries.push(areaSeries);\r\n this.surface!.renderableSeries.add(areaSeries);\r\n });\r\n }\r\n\r\n /**\r\n * Set new data for the chart\r\n */\r\n public setData(data: SeriesData[]): void {\r\n if (!this.surface) {\r\n this.config.series = data;\r\n return;\r\n }\r\n\r\n this.clearSeries();\r\n this.config.series = data;\r\n this.addSeries(data);\r\n }\r\n\r\n /**\r\n * Update specific series data\r\n */\r\n public updateSeriesData(seriesName: string, data: DataPoint[] | number[]): void {\r\n const dataSeries = this.dataSeries.get(seriesName);\r\n if (!dataSeries) {\r\n console.warn(`Series \"${seriesName}\" not found`);\r\n return;\r\n }\r\n\r\n const normalized = normalizeDataPoints(data);\r\n const xValues = extractXValues(normalized);\r\n const yValues = extractYValues(normalized);\r\n\r\n dataSeries.clear();\r\n dataSeries.appendRange(xValues, yValues);\r\n }\r\n\r\n /**\r\n * Clear all series\r\n */\r\n private clearSeries(): void {\r\n if (!this.surface) return;\r\n\r\n this.renderableSeries.forEach((series) => {\r\n this.surface!.renderableSeries.remove(series);\r\n series.delete();\r\n });\r\n this.renderableSeries = [];\r\n\r\n this.dataSeries.forEach((ds) => ds.delete());\r\n this.dataSeries.clear();\r\n }\r\n\r\n /**\r\n * Update chart\r\n */\r\n protected update(): void {\r\n if (!this.surface) return;\r\n this.applyTheme();\r\n this.surface.invalidateElement();\r\n }\r\n\r\n /**\r\n * Destroy and clean up\r\n */\r\n public destroy(): void {\r\n this.clearSeries();\r\n super.destroy();\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create an area chart\r\n */\r\nexport async function createAreaChart(\r\n container: HTMLElement | string,\r\n config: AreaChartConfig\r\n): Promise<AreaChart> {\r\n const chart = new AreaChart(config);\r\n await chart.init(container);\r\n return chart;\r\n}\r\n\r\n","import {\r\n SciChartSurface,\r\n NumericAxis,\r\n UniformHeatmapDataSeries,\r\n UniformHeatmapRenderableSeries,\r\n HeatmapColorMap,\r\n NumberRange,\r\n RolloverModifier,\r\n ZoomPanModifier,\r\n MouseWheelZoomModifier,\r\n EAutoRange,\r\n SciChartJSDarkTheme,\r\n SciChartJSLightTheme,\r\n} from \"scichart\";\r\nimport { BaseChart } from \"./BaseChart\";\r\nimport type { HeatmapChartConfig, SeriesData } from \"../types\";\r\n\r\n// Helper function to get SciChart theme based on our theme config\r\nfunction getSciChartTheme(themeName?: string) {\r\n switch (themeName) {\r\n case \"light\":\r\n return new SciChartJSLightTheme();\r\n case \"dark\":\r\n case \"modern\":\r\n case \"midnight\":\r\n default:\r\n return new SciChartJSDarkTheme();\r\n }\r\n}\r\n\r\n// Default color stops for heatmap\r\nconst defaultColorStops = [\r\n { offset: 0, color: \"#000080\" }, // Dark blue\r\n { offset: 0.2, color: \"#0000ff\" }, // Blue\r\n { offset: 0.4, color: \"#00ffff\" }, // Cyan\r\n { offset: 0.6, color: \"#00ff00\" }, // Green\r\n { offset: 0.8, color: \"#ffff00\" }, // Yellow\r\n { offset: 1, color: \"#ff0000\" }, // Red\r\n];\r\n\r\n/**\r\n * Heatmap Chart implementation using SciChart\r\n */\r\nexport class HeatmapChart extends BaseChart<HeatmapChartConfig> {\r\n private heatmapDataSeries: UniformHeatmapDataSeries | null = null;\r\n private heatmapSeries: UniformHeatmapRenderableSeries | null = null;\r\n private wasmContext: any = null;\r\n\r\n constructor(config: HeatmapChartConfig) {\r\n super(config);\r\n }\r\n\r\n /**\r\n * Create the SciChart surface for heatmap chart\r\n */\r\n protected async createSurface(): Promise<void> {\r\n if (!this.container) {\r\n throw new Error(\"Container not set\");\r\n }\r\n\r\n // Create the SciChart surface with proper theme\r\n const sciChartTheme = getSciChartTheme(this.config.theme as string);\r\n\r\n // Ensure container has a unique ID for SciChart\r\n if (!this.container.id) {\r\n this.container.id = this.id;\r\n }\r\n\r\n const { sciChartSurface, wasmContext } = await SciChartSurface.create(\r\n this.container as HTMLDivElement,\r\n {\r\n theme: sciChartTheme,\r\n }\r\n );\r\n\r\n this.surface = sciChartSurface;\r\n this.wasmContext = wasmContext;\r\n\r\n // Create X Axis\r\n const xAxis = new NumericAxis(wasmContext, {\r\n axisTitle: this.config.xAxis?.title,\r\n drawMajorGridLines: this.config.xAxis?.gridLines?.show ?? false,\r\n drawMinorGridLines: false,\r\n axisTitleStyle: {\r\n fontSize: 14,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.titleColor,\r\n },\r\n labelStyle: {\r\n fontSize: 12,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.labelColor,\r\n },\r\n autoRange: EAutoRange.Always,\r\n });\r\n\r\n // Create Y Axis\r\n const yAxis = new NumericAxis(wasmContext, {\r\n axisTitle: this.config.yAxis?.title,\r\n drawMajorGridLines: this.config.yAxis?.gridLines?.show ?? false,\r\n drawMinorGridLines: false,\r\n axisTitleStyle: {\r\n fontSize: 14,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.titleColor,\r\n },\r\n labelStyle: {\r\n fontSize: 12,\r\n fontFamily: this.theme.fontFamily,\r\n color: this.theme.axis?.labelColor,\r\n },\r\n autoRange: EAutoRange.Always,\r\n });\r\n\r\n // Apply axis range if specified\r\n if (this.config.xAxis?.min !== undefined && this.config.xAxis?.max !== undefined) {\r\n xAxis.visibleRange = new NumberRange(this.config.xAxis.min, this.config.xAxis.max);\r\n xAxis.autoRange = EAutoRange.Never;\r\n }\r\n if (this.config.yAxis?.min !== undefined && this.config.yAxis?.max !== undefined) {\r\n yAxis.visibleRange = new NumberRange(this.config.yAxis.min, this.config.yAxis.max);\r\n yAxis.autoRange = EAutoRange.Never;\r\n }\r\n\r\n sciChartSurface.xAxes.add(xAxis);\r\n sciChartSurface.yAxes.add(yAxis);\r\n\r\n // Add interactivity modifiers\r\n if (this.config.tooltip?.enabled !== false) {\r\n sciChartSurface.chartModifiers.add(\r\n new RolloverModifier({\r\n showTooltip: true,\r\n showAxisLabel: true,\r\n })\r\n );\r\n }\r\n\r\n sciChartSurface.chartModifiers.add(new ZoomPanModifier());\r\n sciChartSurface.chartModifiers.add(new MouseWheelZoomModifier());\r\n\r\n // Add heatmap data\r\n this.addHeatmapData(this.config.zValues);\r\n }\r\n\r\n /**\r\n * Add heatmap data to the chart\r\n */\r\n private addHeatmapData(zValues: number[][]): void {\r\n if (!this.surface || !this.wasmContext) return;\r\n\r\n const wasmContext = this.wasmContext;\r\n\r\n // Calculate min/max from data if not provided\r\n let min = this.config.colorMin;\r\n let max = this.config.colorMax;\r\n\r\n if (min === undefined || max === undefined) {\r\n const flatValues = zValues.flat();\r\n min = min ?? Math.min(...flatValues);\r\n max = max ?? Math.max(...flatValues);\r\n }\r\n\r\n // Create heatmap data series\r\n this.heatmapDataSeries = new UniformHeatmapDataSeries(wasmContext, {\r\n zValues,\r\n xStart: this.config.xStart ?? 0,\r\n xStep: this.config.xStep ?? 1,\r\n yStart: this.config.yStart ?? 0,\r\n yStep: this.config.yStep ?? 1,\r\n });\r\n\r\n // Get color stops\r\n const colorStops = this.config.colorStops ?? defaultColorStops;\r\n\r\n // Create heatmap renderable series\r\n this.heatmapSeries = new UniformHeatmapRenderableSeries(wasmContext, {\r\n dataSeries: this.heatmapDataSeries,\r\n colorMap: new HeatmapColorMap({\r\n minimum: min,\r\n maximum: max,\r\n gradientStops: colorStops,\r\n }),\r\n });\r\n\r\n this.surface!.renderableSeries.add(this.heatmapSeries);\r\n }\r\n\r\n /**\r\n * Set new data for the chart (for heatmap, this updates zValues)\r\n */\r\n public setData(_data: SeriesData[]): void {\r\n // For heatmap, we expect the first series to contain zValues in a specific format\r\n // This is a simplified implementation - in practice, you might want to handle this differently\r\n console.warn(\"HeatmapChart.setData() - use setZValues() for updating heatmap data\");\r\n }\r\n\r\n /**\r\n * Set new z-values for the heatmap\r\n */\r\n public setZValues(zValues: number[][]): void {\r\n if (!this.surface) {\r\n this.config.zValues = zValues;\r\n return;\r\n }\r\n\r\n // Clear existing heatmap\r\n this.clearHeatmap();\r\n \r\n // Update config and add new data\r\n this.config.zValues = zValues;\r\n this.addHeatmapData(zValues);\r\n }\r\n\r\n /**\r\n * Update specific cell values\r\n */\r\n public updateCell(x: number, y: number, value: number): void {\r\n if (this.heatmapDataSeries) {\r\n this.heatmapDataSeries.setZValue(x, y, value);\r\n }\r\n }\r\n\r\n /**\r\n * Clear heatmap data\r\n */\r\n private clearHeatmap(): void {\r\n if (!this.surface) return;\r\n\r\n if (this.heatmapSeries) {\r\n this.surface.renderableSeries.remove(this.heatmapSeries);\r\n this.heatmapSeries.delete();\r\n this.heatmapSeries = null;\r\n }\r\n\r\n if (this.heatmapDataSeries) {\r\n this.heatmapDataSeries.delete();\r\n this.heatmapDataSeries = null;\r\n }\r\n }\r\n\r\n /**\r\n * Update chart\r\n */\r\n protected update(): void {\r\n if (!this.surface) return;\r\n this.applyTheme();\r\n this.surface.invalidateElement();\r\n }\r\n\r\n /**\r\n * Destroy and clean up\r\n */\r\n public destroy(): void {\r\n this.clearHeatmap();\r\n super.destroy();\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a heatmap chart\r\n */\r\nexport async function createHeatmapChart(\r\n container: HTMLElement | string,\r\n config: HeatmapChartConfig\r\n): Promise<HeatmapChart> {\r\n const chart = new HeatmapChart(config);\r\n await chart.init(container);\r\n return chart;\r\n}\r\n\r\n","import {\r\n SciChart3DSurface,\r\n NumericAxis3D,\r\n SurfaceMeshRenderableSeries3D,\r\n UniformGridDataSeries3D,\r\n CameraController,\r\n GradientColorPalette,\r\n MouseWheelZoomModifier3D,\r\n OrbitModifier3D,\r\n Vector3,\r\n EDrawMeshAs,\r\n} from \"scichart\";\r\nimport type { Surface3DChartConfig, SeriesData } from \"../types\";\r\nimport { generateId } from \"../utils/helpers\";\r\n\r\n// Default color stops for 3D surface\r\nconst defaultColorStops = [\r\n { offset: 0, color: \"#1e3a8a\" }, // Dark blue\r\n { offset: 0.25, color: \"#3b82f6\" }, // Blue\r\n { offset: 0.5, color: \"#22c55e\" }, // Green\r\n { offset: 0.75, color: \"#eab308\" }, // Yellow\r\n { offset: 1, color: \"#ef4444\" }, // Red\r\n];\r\n\r\n/**\r\n * 3D Surface Chart implementation using SciChart\r\n */\r\nexport class Surface3DChart {\r\n public readonly id: string;\r\n private container: HTMLElement | null = null;\r\n private surface: SciChart3DSurface | null = null;\r\n private wasmContext: any = null;\r\n private config: Surface3DChartConfig;\r\n private dataSeries: UniformGridDataSeries3D | null = null;\r\n private meshSeries: SurfaceMeshRenderableSeries3D | null = null;\r\n private isDestroyed: boolean = false;\r\n\r\n constructor(config: Surface3DChartConfig) {\r\n this.id = config.id ?? generateId(\"chart3d\");\r\n this.config = config;\r\n }\r\n\r\n /**\r\n * Initialize the chart in the given container\r\n */\r\n public async init(container: HTMLElement | string): Promise<void> {\r\n if (this.isDestroyed) {\r\n throw new Error(\"Cannot initialize a destroyed chart\");\r\n }\r\n\r\n // Resolve container\r\n if (typeof container === \"string\") {\r\n const el = document.getElementById(container);\r\n if (!el) {\r\n throw new Error(`Container element \"${container}\" not found`);\r\n }\r\n this.container = el;\r\n } else {\r\n this.container = container;\r\n }\r\n\r\n // Ensure container has a unique ID for SciChart\r\n if (!this.container.id) {\r\n this.container.id = this.id;\r\n }\r\n\r\n // Create the 3D surface\r\n await this.createSurface();\r\n }\r\n\r\n /**\r\n * Create the SciChart 3D surface\r\n */\r\n private async createSurface(): Promise<void> {\r\n if (!this.container) {\r\n throw new Error(\"Container not set\");\r\n }\r\n\r\n const { sciChart3DSurface, wasmContext } = await SciChart3DSurface.create(\r\n this.container.id\r\n );\r\n\r\n this.surface = sciChart3DSurface;\r\n this.wasmContext = wasmContext;\r\n\r\n // Create axes\r\n sciChart3DSurface.xAxis = new NumericAxis3D(wasmContext, {\r\n axisTitle: \"X\",\r\n });\r\n sciChart3DSurface.yAxis = new NumericAxis3D(wasmContext, {\r\n axisTitle: \"Y\",\r\n });\r\n sciChart3DSurface.zAxis = new NumericAxis3D(wasmContext, {\r\n axisTitle: \"Z\",\r\n });\r\n\r\n // Add interactivity\r\n sciChart3DSurface.chartModifiers.add(new MouseWheelZoomModifier3D());\r\n sciChart3DSurface.chartModifiers.add(new OrbitModifier3D());\r\n\r\n // Set up camera\r\n const cameraPos = this.config.cameraPosition ?? { x: 300, y: 300, z: 300 };\r\n sciChart3DSurface.camera = new CameraController(wasmContext, {\r\n position: new Vector3(cameraPos.x, cameraPos.y, cameraPos.z),\r\n target: new Vector3(0, 0, 0),\r\n });\r\n\r\n // Add surface data\r\n this.addSurfaceData(this.config.yValues);\r\n }\r\n\r\n /**\r\n * Add surface data to the chart\r\n */\r\n private addSurfaceData(yValues: number[][]): void {\r\n if (!this.surface || !this.wasmContext) return;\r\n\r\n const wasmContext = this.wasmContext;\r\n const zSize = yValues.length;\r\n const xSize = yValues[0]?.length ?? 0;\r\n\r\n // Calculate min/max from data\r\n let min = Infinity;\r\n let max = -Infinity;\r\n for (let z = 0; z < zSize; z++) {\r\n for (let x = 0; x < xSize; x++) {\r\n const y = yValues[z][x];\r\n min = Math.min(min, y);\r\n max = Math.max(max, y);\r\n }\r\n }\r\n\r\n // Create data series\r\n this.dataSeries = new UniformGridDataSeries3D(wasmContext, {\r\n yValues,\r\n xStep: this.config.xStep ?? 1,\r\n zStep: this.config.zStep ?? 1,\r\n });\r\n\r\n // Get color stops\r\n const colorStops = this.config.colorStops ?? defaultColorStops;\r\n\r\n // Create color palette\r\n const colorPalette = new GradientColorPalette(wasmContext, {\r\n gradientStops: colorStops,\r\n });\r\n\r\n // Create mesh series - solid filled surface\r\n this.meshSeries = new SurfaceMeshRenderableSeries3D(wasmContext, {\r\n dataSeries: this.dataSeries,\r\n minimum: this.config.colorMin ?? min,\r\n maximum: this.config.colorMax ?? max,\r\n opacity: this.config.opacity ?? 1.0,\r\n cellHardnessFactor: 0, // Smooth interpolation between cells\r\n stroke: \"transparent\", // No wireframe stroke\r\n strokeThickness: 0,\r\n contourStroke: \"transparent\", // No contour lines\r\n contourStrokeThickness: 0,\r\n drawSkirt: true, // Draw skirt for solid appearance\r\n drawMeshAs: EDrawMeshAs.SOLID_MESH, // Solid filled surface\r\n lightingFactor: 0.8,\r\n meshColorPalette: colorPalette,\r\n shininess: 10,\r\n });\r\n\r\n this.surface!.renderableSeries.add(this.meshSeries);\r\n }\r\n\r\n /**\r\n * Set new Y values for the surface\r\n */\r\n public setYValues(yValues: number[][]): void {\r\n if (!this.surface) {\r\n this.config.yValues = yValues;\r\n return;\r\n }\r\n\r\n // Clear existing surface\r\n this.clearSurface();\r\n\r\n // Update config and add new data\r\n this.config.yValues = yValues;\r\n this.addSurfaceData(yValues);\r\n }\r\n\r\n /**\r\n * Set new data (alias for setYValues for consistency)\r\n */\r\n public setData(_data: SeriesData[]): void {\r\n console.warn(\"Surface3DChart.setData() - use setYValues() for updating surface data\");\r\n }\r\n\r\n /**\r\n * Update chart options\r\n */\r\n public setOptions(options: Partial<Surface3DChartConfig>): void {\r\n this.config = { ...this.config, ...options };\r\n\r\n if (options.cameraPosition && this.surface && this.wasmContext) {\r\n const pos = options.cameraPosition;\r\n this.surface.camera = new CameraController(this.wasmContext, {\r\n position: new Vector3(pos.x, pos.y, pos.z),\r\n target: new Vector3(0, 0, 0),\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Clear surface data\r\n */\r\n private clearSurface(): void {\r\n if (!this.surface) return;\r\n\r\n if (this.meshSeries) {\r\n this.surface.renderableSeries.remove(this.meshSeries);\r\n this.meshSeries.delete();\r\n this.meshSeries = null;\r\n }\r\n\r\n if (this.dataSeries) {\r\n this.dataSeries.delete();\r\n this.dataSeries = null;\r\n }\r\n }\r\n\r\n /**\r\n * Destroy and clean up\r\n */\r\n public destroy(): void {\r\n if (this.isDestroyed) return;\r\n\r\n this.clearSurface();\r\n\r\n if (this.surface) {\r\n this.surface.delete();\r\n this.surface = null;\r\n }\r\n\r\n this.isDestroyed = true;\r\n }\r\n\r\n /**\r\n * Get current configuration\r\n */\r\n public getConfig(): Surface3DChartConfig {\r\n return { ...this.config };\r\n }\r\n\r\n /**\r\n * Check if chart is ready (initialized and not destroyed)\r\n */\r\n public isReady(): boolean {\r\n return this.surface !== null && !this.isDestroyed;\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a 3D surface chart\r\n */\r\nexport async function createSurface3DChart(\r\n container: HTMLElement | string,\r\n config: Surface3DChartConfig\r\n): Promise<Surface3DChart> {\r\n const chart = new Surface3DChart(config);\r\n await chart.init(container);\r\n return chart;\r\n}\r\n\r\n","import {\r\n SciChart3DSurface,\r\n NumericAxis3D,\r\n XyzDataSeries3D,\r\n ColumnRenderableSeries3D,\r\n PointLineRenderableSeries3D,\r\n NumberRange,\r\n CameraController,\r\n Vector3,\r\n OrbitModifier3D,\r\n MouseWheelZoomModifier3D,\r\n TooltipModifier3D,\r\n} from \"scichart\";\r\nimport type { ChartConfig } from \"../types\";\r\nimport { generateId } from \"../utils/helpers\";\r\n\r\n/** Data point for 3D column chart [x, y, z] */\r\nexport type Column3DDataPoint = [number, number, number];\r\n\r\n/** Configuration for 3D Column Chart */\r\nexport interface Column3DChartConfig extends ChartConfig {\r\n /** Array of [x, y, z] data points */\r\n data: Column3DDataPoint[];\r\n /** X axis title */\r\n xAxisTitle?: string;\r\n /** Y axis title */\r\n yAxisTitle?: string;\r\n /** Z axis title */\r\n zAxisTitle?: string;\r\n /** X axis visible range */\r\n xRange?: { min: number; max: number };\r\n /** Y axis visible range */\r\n yRange?: { min: number; max: number };\r\n /** Z axis visible range */\r\n zRange?: { min: number; max: number };\r\n /** Bar fill color */\r\n barFill?: string;\r\n /** Bar stroke color */\r\n barStroke?: string;\r\n /** Bar opacity (0-1) */\r\n barOpacity?: number;\r\n /** Bar width in X direction */\r\n barWidthX?: number;\r\n /** Bar width in Z direction */\r\n barWidthZ?: number;\r\n /** Camera position */\r\n cameraPosition?: { x: number; y: number; z: number };\r\n /** Camera target */\r\n cameraTarget?: { x: number; y: number; z: number };\r\n /** Show sine wave reference line on back plane */\r\n showSineWave?: boolean;\r\n /** Sine wave amplitude center */\r\n sineWaveCenter?: number;\r\n /** Sine wave amplitude range */\r\n sineWaveAmplitude?: number;\r\n}\r\n\r\n/**\r\n * 3D Column/Bar Chart implementation using SciChart\r\n */\r\nexport class Column3DChart {\r\n public readonly id: string;\r\n private container: HTMLElement | null = null;\r\n private surface: SciChart3DSurface | null = null;\r\n private wasmContext: any = null;\r\n private config: Column3DChartConfig;\r\n private dataSeries: XyzDataSeries3D | null = null;\r\n private columnSeries: ColumnRenderableSeries3D | null = null;\r\n private isDestroyed: boolean = false;\r\n\r\n constructor(config: Column3DChartConfig) {\r\n this.id = config.id ?? generateId(\"column3d\");\r\n this.config = config;\r\n }\r\n\r\n /**\r\n * Initialize the chart in the given container\r\n */\r\n public async init(container: HTMLElement | string): Promise<void> {\r\n if (this.isDestroyed) {\r\n throw new Error(\"Cannot initialize a destroyed chart\");\r\n }\r\n\r\n // Resolve container\r\n if (typeof container === \"string\") {\r\n const el = document.getElementById(container);\r\n if (!el) {\r\n throw new Error(`Container element \"${container}\" not found`);\r\n }\r\n this.container = el;\r\n } else {\r\n this.container = container;\r\n }\r\n\r\n // Ensure container has a unique ID for SciChart\r\n if (!this.container.id) {\r\n this.container.id = this.id;\r\n }\r\n\r\n // Create the 3D surface\r\n await this.createSurface();\r\n }\r\n\r\n /**\r\n * Create the SciChart 3D surface\r\n */\r\n private async createSurface(): Promise<void> {\r\n if (!this.container) {\r\n throw new Error(\"Container not set\");\r\n }\r\n\r\n const { sciChart3DSurface, wasmContext } = await SciChart3DSurface.create(\r\n this.container.id,\r\n {\r\n isZYPlaneVisible: false,\r\n }\r\n );\r\n\r\n this.surface = sciChart3DSurface;\r\n this.wasmContext = wasmContext;\r\n\r\n // Set up camera\r\n const cameraPos = this.config.cameraPosition ?? { x: -250, y: 450, z: 280 };\r\n const cameraTarget = this.config.cameraTarget ?? { x: 0, y: 0, z: 0 };\r\n sciChart3DSurface.camera = new CameraController(wasmContext, {\r\n position: new Vector3(cameraPos.x, cameraPos.y, cameraPos.z),\r\n target: new Vector3(cameraTarget.x, cameraTarget.y, cameraTarget.z),\r\n });\r\n\r\n // Add interactivity\r\n sciChart3DSurface.chartModifiers.add(\r\n new OrbitModifier3D(),\r\n new MouseWheelZoomModifier3D()\r\n );\r\n\r\n // Create axes\r\n const xRange = this.config.xRange ?? { min: 0, max: 360 };\r\n const yRange = this.config.yRange ?? { min: 0, max: 5000 };\r\n const zRange = this.config.zRange ?? { min: 0, max: 50 };\r\n\r\n const baseAxisOptions = {\r\n drawMinorGridLines: false,\r\n majorGridLineStyle: { color: \"#7e7e7e\" },\r\n planeBorderThickness: 3,\r\n };\r\n\r\n sciChart3DSurface.xAxis = new NumericAxis3D(wasmContext, {\r\n ...baseAxisOptions,\r\n axisTitle: this.config.xAxisTitle ?? \"Phase Angle (°)\",\r\n autoTicks: false,\r\n visibleRange: new NumberRange(xRange.min, xRange.max),\r\n majorDelta: 45,\r\n minorDelta: 15,\r\n flippedCoordinates: true,\r\n axisBandsFill: \"#d2d2d2\",\r\n });\r\n\r\n sciChart3DSurface.yAxis = new NumericAxis3D(wasmContext, {\r\n ...baseAxisOptions,\r\n axisTitle: this.config.yAxisTitle ?? \"Amplitude (mVp)\",\r\n visibleRange: new NumberRange(yRange.min, yRange.max),\r\n axisBandsFill: \"#b1b1b1\",\r\n });\r\n\r\n sciChart3DSurface.zAxis = new NumericAxis3D(wasmContext, {\r\n ...baseAxisOptions,\r\n axisTitle: this.config.zAxisTitle ?? \"Cycle\",\r\n majorDelta: 10,\r\n minorDelta: 5,\r\n visibleRange: new NumberRange(zRange.min, zRange.max),\r\n axisBandsFill: \"#d0d0d0\",\r\n labelPrecision: 0,\r\n });\r\n\r\n // Add column data\r\n this.addColumnData(this.config.data);\r\n\r\n // Add sine wave reference if enabled\r\n if (this.config.showSineWave !== false) {\r\n this.addSineWave();\r\n }\r\n\r\n // Add tooltip\r\n this.addTooltip();\r\n }\r\n\r\n /**\r\n * Add column data to the chart\r\n */\r\n private addColumnData(data: Column3DDataPoint[]): void {\r\n if (!this.surface || !this.wasmContext) return;\r\n\r\n const wasmContext = this.wasmContext;\r\n\r\n // Create XYZ data series\r\n this.dataSeries = new XyzDataSeries3D(wasmContext);\r\n \r\n // Add data points\r\n data.forEach(([x, y, z]) => {\r\n this.dataSeries!.append(x, y, z);\r\n });\r\n\r\n // Create column series\r\n this.columnSeries = new ColumnRenderableSeries3D(wasmContext, {\r\n dataSeries: this.dataSeries,\r\n fill: this.config.barFill ?? \"#52aaf2\",\r\n stroke: this.config.barStroke ?? \"#52aaf2\",\r\n opacity: this.config.barOpacity ?? 0.95,\r\n dataPointWidthX: this.config.barWidthX ?? 8,\r\n dataPointWidthZ: this.config.barWidthZ ?? 8,\r\n });\r\n\r\n this.surface!.renderableSeries.add(this.columnSeries);\r\n }\r\n\r\n /**\r\n * Add sine wave reference line on back plane\r\n */\r\n private addSineWave(): void {\r\n if (!this.surface || !this.wasmContext) return;\r\n\r\n const wasmContext = this.wasmContext;\r\n const sineData = new XyzDataSeries3D(wasmContext);\r\n const backPlaneZ = 0;\r\n \r\n const center = this.config.sineWaveCenter ?? 2000;\r\n const amplitude = this.config.sineWaveAmplitude ?? 2000;\r\n\r\n for (let deg = 0; deg <= 360; deg += 5) {\r\n const rad = (deg * Math.PI) / 180;\r\n const y = center + amplitude * Math.sin(rad);\r\n sineData.append(deg, y, backPlaneZ);\r\n }\r\n\r\n const sineSeries = new PointLineRenderableSeries3D(wasmContext, {\r\n dataSeries: sineData,\r\n stroke: \"black\",\r\n strokeThickness: 3,\r\n opacity: 1.0,\r\n });\r\n\r\n this.surface!.renderableSeries.add(sineSeries);\r\n }\r\n\r\n /**\r\n * Add tooltip modifier\r\n */\r\n private addTooltip(): void {\r\n if (!this.surface) return;\r\n\r\n const xTitle = this.config.xAxisTitle ?? \"Phase Angle\";\r\n const yTitle = this.config.yAxisTitle ?? \"Amplitude\";\r\n const zTitle = this.config.zAxisTitle ?? \"Cycle\";\r\n\r\n const tooltipModifier = new TooltipModifier3D({\r\n tooltipDataTemplate: (seriesInfo: any) => {\r\n const valuesWithLabels: string[] = [];\r\n if (seriesInfo && seriesInfo.isHit) {\r\n valuesWithLabels.push(`${xTitle}: ${seriesInfo.xValue}`);\r\n valuesWithLabels.push(`${yTitle}: ${seriesInfo.yValue}`);\r\n valuesWithLabels.push(`${zTitle}: ${seriesInfo.zValue}`);\r\n }\r\n return valuesWithLabels;\r\n },\r\n });\r\n\r\n this.surface!.chartModifiers.add(tooltipModifier);\r\n }\r\n\r\n /**\r\n * Set new data for the chart\r\n */\r\n public setData(data: Column3DDataPoint[]): void {\r\n if (!this.dataSeries) {\r\n this.config.data = data;\r\n return;\r\n }\r\n\r\n // Clear and update data\r\n this.dataSeries.clear();\r\n data.forEach(([x, y, z]) => {\r\n this.dataSeries!.append(x, y, z);\r\n });\r\n\r\n // Request redraw\r\n if (this.surface) {\r\n this.surface.invalidateElement();\r\n }\r\n }\r\n\r\n /**\r\n * Update camera position\r\n */\r\n public setCameraPosition(\r\n position: { x: number; y: number; z: number },\r\n target?: { x: number; y: number; z: number }\r\n ): void {\r\n if (!this.surface || !this.wasmContext) return;\r\n\r\n this.surface.camera.position = new Vector3(position.x, position.y, position.z);\r\n if (target) {\r\n this.surface.camera.target = new Vector3(target.x, target.y, target.z);\r\n }\r\n this.surface.invalidateElement();\r\n }\r\n\r\n /**\r\n * Update chart options\r\n */\r\n public setOptions(options: Partial<Column3DChartConfig>): void {\r\n this.config = { ...this.config, ...options };\r\n\r\n if (options.cameraPosition && this.surface && this.wasmContext) {\r\n const pos = options.cameraPosition;\r\n const target = options.cameraTarget ?? { x: 0, y: 0, z: 0 };\r\n this.setCameraPosition(pos, target);\r\n }\r\n\r\n if (options.barFill || options.barStroke || options.barOpacity) {\r\n if (this.columnSeries) {\r\n if (options.barFill) this.columnSeries.fill = options.barFill;\r\n if (options.barStroke) this.columnSeries.stroke = options.barStroke;\r\n if (options.barOpacity !== undefined) this.columnSeries.opacity = options.barOpacity;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get the SciChart surface for advanced operations\r\n */\r\n public getSurface(): SciChart3DSurface | null {\r\n return this.surface;\r\n }\r\n\r\n /**\r\n * Destroy and clean up\r\n */\r\n public destroy(): void {\r\n if (this.isDestroyed) return;\r\n\r\n if (this.surface) {\r\n this.surface.delete();\r\n this.surface = null;\r\n }\r\n\r\n this.isDestroyed = true;\r\n }\r\n\r\n /**\r\n * Get current configuration\r\n */\r\n public getConfig(): Column3DChartConfig {\r\n return { ...this.config };\r\n }\r\n\r\n /**\r\n * Check if chart is ready (initialized and not destroyed)\r\n */\r\n public isReady(): boolean {\r\n return this.surface !== null && !this.isDestroyed;\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a 3D column chart\r\n */\r\nexport async function createColumn3DChart(\r\n container: HTMLElement | string,\r\n config: Column3DChartConfig\r\n): Promise<Column3DChart> {\r\n const chart = new Column3DChart(config);\r\n await chart.init(container);\r\n return chart;\r\n}\r\n\r\n","/**\r\n * SciChart UI - A customizable charting library built on SciChart\r\n * \r\n * @packageDocumentation\r\n */\r\n\r\n// Re-export all types\r\nexport type {\r\n // Chart configurations\r\n ChartConfig,\r\n LineChartConfig,\r\n BarChartConfig,\r\n PieChartConfig,\r\n AreaChartConfig,\r\n ScatterChartConfig,\r\n HeatmapChartConfig,\r\n Surface3DChartConfig,\r\n AnimationConfig,\r\n TooltipConfig,\r\n TooltipData,\r\n LegendConfig,\r\n TitleConfig,\r\n \r\n // Axis configurations\r\n AxisConfig,\r\n XAxisConfig,\r\n YAxisConfig,\r\n GridLineConfig,\r\n \r\n // Data types\r\n DataPoint,\r\n SeriesData,\r\n ChartType,\r\n \r\n // Theme types\r\n ThemeConfig,\r\n \r\n // Event types\r\n ChartEventMap,\r\n ChartClickEvent,\r\n ChartHoverEvent,\r\n LegendClickEvent,\r\n ZoomEvent,\r\n PanEvent,\r\n RenderedEvent,\r\n \r\n // Instance types\r\n ChartInstance,\r\n} from \"./types\";\r\n\r\n// Export charts\r\nexport {\r\n BaseChart,\r\n LineChart,\r\n createLineChart,\r\n BarChart,\r\n createBarChart,\r\n AreaChart,\r\n createAreaChart,\r\n HeatmapChart,\r\n createHeatmapChart,\r\n Surface3DChart,\r\n createSurface3DChart,\r\n Column3DChart,\r\n createColumn3DChart,\r\n type Column3DChartConfig,\r\n type Column3DDataPoint,\r\n} from \"./charts\";\r\n\r\n// Export themes\r\nexport {\r\n lightTheme,\r\n darkTheme,\r\n modernTheme,\r\n midnightTheme,\r\n ThemeManager,\r\n getThemeManager,\r\n} from \"./themes\";\r\n\r\n// Export utilities\r\nexport {\r\n generateId,\r\n parseSize,\r\n normalizeDataPoints,\r\n extractXValues,\r\n extractYValues,\r\n deepMerge,\r\n debounce,\r\n throttle,\r\n calculateDataRange,\r\n formatNumber,\r\n clamp,\r\n lerp,\r\n hexToRgba,\r\n} from \"./utils\";\r\n\r\n// Library version\r\nexport const VERSION = \"0.1.0\";\r\n\r\n// SciChart configuration helper\r\nexport { SciChartSurface } from \"scichart\";\r\n\r\n/**\r\n * Configure SciChart WebAssembly location\r\n * Call this before creating any charts if you need to customize the WASM location\r\n * \r\n * @example\r\n * ```ts\r\n * import { configureSciChart } from '@scichart-ui/core';\r\n * \r\n * configureSciChart({\r\n * wasmUrl: '/path/to/scichart2d.wasm',\r\n * dataUrl: '/path/to/scichart2d.data'\r\n * });\r\n * ```\r\n */\r\nexport function configureSciChart(options: {\r\n wasmUrl?: string;\r\n dataUrl?: string;\r\n}): void {\r\n // SciChart configuration is handled through SciChartSurface.configure()\r\n // This is a convenience wrapper\r\n if (options.wasmUrl || options.dataUrl) {\r\n // eslint-disable-next-line @typescript-eslint/no-require-imports\r\n const { SciChartSurface } = require(\"scichart\");\r\n SciChartSurface.configure({\r\n wasmUrl: options.wasmUrl,\r\n dataUrl: options.dataUrl,\r\n });\r\n }\r\n}\r\n\r\n"]}
@@ -0,0 +1 @@
1
+ export { t as ThemeManager, q as darkTheme, u as getThemeManager, p as lightTheme, s as midnightTheme, r as modernTheme } from '../index-DWzDIVQ9.mjs';
@@ -0,0 +1 @@
1
+ export { t as ThemeManager, q as darkTheme, u as getThemeManager, p as lightTheme, s as midnightTheme, r as modernTheme } from '../index-DWzDIVQ9.js';
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var chunkKATRK3C3_js = require('../chunk-KATRK3C3.js');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "ThemeManager", {
8
+ enumerable: true,
9
+ get: function () { return chunkKATRK3C3_js.ThemeManager; }
10
+ });
11
+ Object.defineProperty(exports, "darkTheme", {
12
+ enumerable: true,
13
+ get: function () { return chunkKATRK3C3_js.darkTheme; }
14
+ });
15
+ Object.defineProperty(exports, "getThemeManager", {
16
+ enumerable: true,
17
+ get: function () { return chunkKATRK3C3_js.getThemeManager; }
18
+ });
19
+ Object.defineProperty(exports, "lightTheme", {
20
+ enumerable: true,
21
+ get: function () { return chunkKATRK3C3_js.lightTheme; }
22
+ });
23
+ Object.defineProperty(exports, "midnightTheme", {
24
+ enumerable: true,
25
+ get: function () { return chunkKATRK3C3_js.midnightTheme; }
26
+ });
27
+ Object.defineProperty(exports, "modernTheme", {
28
+ enumerable: true,
29
+ get: function () { return chunkKATRK3C3_js.modernTheme; }
30
+ });
31
+ //# sourceMappingURL=index.js.map
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,3 @@
1
+ export { ThemeManager, darkTheme, getThemeManager, lightTheme, midnightTheme, modernTheme } from '../chunk-Q2ZHY445.mjs';
2
+ //# sourceMappingURL=index.mjs.map
3
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@rm-graph/core",
3
+ "version": "0.1.0",
4
+ "description": "RM-Graphs Core - Charting library built on SciChart",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.mjs",
12
+ "require": "./dist/index.js"
13
+ },
14
+ "./themes": {
15
+ "types": "./dist/themes/index.d.ts",
16
+ "import": "./dist/themes/index.mjs",
17
+ "require": "./dist/themes/index.js"
18
+ }
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "README.md"
23
+ ],
24
+ "scripts": {
25
+ "build": "tsup",
26
+ "dev": "tsup --watch",
27
+ "test": "vitest",
28
+ "test:run": "vitest run",
29
+ "lint": "eslint src --ext .ts",
30
+ "clean": "rimraf dist",
31
+ "typecheck": "tsc --noEmit"
32
+ },
33
+ "keywords": [
34
+ "charts",
35
+ "scichart",
36
+ "visualization",
37
+ "graphs",
38
+ "typescript"
39
+ ],
40
+ "license": "MIT",
41
+ "dependencies": {
42
+ "scichart": "^3.4.0"
43
+ },
44
+ "devDependencies": {
45
+ "@types/node": "^20.11.0",
46
+ "rimraf": "^5.0.5",
47
+ "tsup": "^8.0.1",
48
+ "typescript": "^5.3.3",
49
+ "vitest": "^1.2.0"
50
+ },
51
+ "peerDependencies": {},
52
+ "sideEffects": false
53
+ }
54
+