UNPKG

@dschz/solid-highcharts

Version:
240 lines (235 loc) 7.53 kB
import * as highcharts from 'highcharts'; import { AnimationOptionsObject } from 'highcharts'; import { JSX } from 'solid-js'; import * as highcharts_highcharts_gantt from 'highcharts/highcharts-gantt'; import * as highcharts_highmaps from 'highcharts/highmaps'; import * as highcharts_highstock from 'highcharts/highstock'; /** * Represents the core Highcharts module type. * This is the standard Highcharts library that provides basic chart functionality. * * @example * ```typescript * import Highcharts from 'highcharts'; * const Chart = createChart(Highcharts); * ``` */ type HighchartsCoreModule = typeof highcharts; /** * Represents the Highcharts Stock module type. * This module extends Highcharts with advanced financial charting capabilities. * * @example * ```typescript * import Highcharts from 'highcharts/highstock'; * const StockChart = createStockChart(Highcharts); * ``` */ type HighchartsStockModule = typeof highcharts_highstock; /** * Represents the Highcharts Maps module type. * This module provides geographical mapping and visualization capabilities. * * @example * ```typescript * import Highcharts from 'highcharts/highmaps'; * const MapChart = createMapChart(Highcharts); * ``` */ type HighchartsMapModule = typeof highcharts_highmaps; /** * Represents the Highcharts Gantt module type. * This module provides project management and timeline visualization capabilities. * * @example * ```typescript * import Highcharts from 'highcharts/highcharts-gantt'; * const GanttChart = createGanttChart(Highcharts); * ``` */ type HighchartsGanttModule = typeof highcharts_highcharts_gantt; type HighchartOptions = Highcharts.Options & { /** * Whether to animate the chart updates. * If true, the chart will animate the updates. * If false, the chart will not animate the updates. * If an object, it will be passed to the Highcharts.Animation constructor. */ readonly animation?: boolean | Partial<AnimationOptionsObject>; }; /** * Props for Highcharts chart components. * Extends Highcharts.Options with additional SolidJS-specific properties. * * @example * ```tsx * const chartProps: HighchartsComponentProps = { * title: { text: 'My Chart' }, * series: [{ type: 'line', data: [1, 2, 3] }], * onCreateChart: (chart) => console.log('Chart created:', chart), * class: 'my-chart-container' * }; * ``` */ type HighchartsComponentProps = HighchartOptions & { /** CSS class name to apply to the chart container. */ readonly class?: string; /** CSS styles to apply to the chart container. */ readonly style?: JSX.CSSProperties; /** * Ref callback to access the chart container div element. * Called with the HTMLDivElement that contains the chart. */ readonly ref?: (container: HTMLDivElement) => void; /** * Callback function called when the chart is successfully created. * Receives the Highcharts chart instance as a parameter. */ readonly onCreateChart?: Highcharts.ChartCallbackFunction; }; /** * The Highcharts component. * * @param props - The props for the chart component. * @returns A JSX element that renders the chart. */ type HighchartsComponent = (props: HighchartsComponentProps) => JSX.Element; /** * Creates a SolidJS component for rendering standard Highcharts charts. * * This is a convenience function that pre-configures `createChartComponent` * with the "chart" constructor for standard chart types. * * @param HighchartsModule - The core Highcharts module * @returns A SolidJS component for rendering standard charts * * @example * ```tsx * import Highcharts from 'highcharts'; * import { createChart } from '@dschz/solid-highcharts'; * * const Chart = createChart(Highcharts); * * function App() { * return ( * <Chart * title={{ text: 'Sales Data' }} * series={[{ * type: 'line', * name: 'Sales', * data: [29.9, 71.5, 106.4, 129.2] * }]} * /> * ); * } * ``` */ declare const createChart: (HighchartsModule: HighchartsCoreModule) => HighchartsComponent; /** * Creates a SolidJS component for rendering Highcharts Stock charts. * * This is a convenience function that pre-configures `createChartComponent` * with the "stockChart" constructor for financial and time-series data visualization. * * @param HighchartsModule - The Highcharts Stock module * @returns A SolidJS component for rendering stock charts * * @example * ```tsx * import Highcharts from 'highcharts/highstock'; * import { createStockChart } from '@dschz/solid-highcharts'; * * const StockChart = createStockChart(Highcharts); * * function StockApp() { * return ( * <StockChart * title={{ text: 'AAPL Stock Price' }} * series={[{ * type: 'candlestick', * name: 'AAPL', * data: ohlcData // [timestamp, open, high, low, close] * }]} * navigator={{ enabled: true }} * scrollbar={{ enabled: true }} * /> * ); * } * ``` */ declare const createStockChart: (HighchartsModule: HighchartsStockModule) => HighchartsComponent; /** * Creates a SolidJS component for rendering Highcharts Maps. * * This is a convenience function that pre-configures `createChartComponent` * with the "mapChart" constructor for geographical data visualization. * * @param HighchartsModule - The Highcharts Maps module * @returns A SolidJS component for rendering map charts * * @example * ```tsx * import Highcharts from 'highcharts/highmaps'; * import worldMap from '@highcharts/map-collection/custom/world.geo.json'; * import { createMapChart } from '@dschz/solid-highcharts'; * * const MapChart = createMapChart(Highcharts); * * function MapApp() { * return ( * <MapChart * title={{ text: 'World Population Density' }} * mapNavigation={{ enabled: true }} * series={[{ * type: 'map', * name: 'Countries', * mapData: worldMap, * data: populationData * }]} * /> * ); * } * ``` */ declare const createMapChart: (HighchartsModule: HighchartsMapModule) => HighchartsComponent; /** * Creates a SolidJS component for rendering Highcharts Gantt charts. * * This is a convenience function that pre-configures `createChartComponent` * with the "ganttChart" constructor for project management and timeline visualization. * * @param HighchartsModule - The Highcharts Gantt module * @returns A SolidJS component for rendering Gantt charts * * @example * ```tsx * import Highcharts from 'highcharts/highcharts-gantt'; * import { createGanttChart } from '@dschz/solid-highcharts'; * * const GanttChart = createGanttChart(Highcharts); * * function ProjectApp() { * return ( * <GanttChart * title={{ text: 'Project Timeline' }} * series={[{ * name: 'Project Tasks', * data: [{ * name: 'Task 1', * start: Date.UTC(2024, 0, 1), * end: Date.UTC(2024, 0, 15), * completed: 0.5 * }, { * name: 'Task 2', * start: Date.UTC(2024, 0, 10), * end: Date.UTC(2024, 0, 25), * dependency: 'Task 1' * }] * }]} * /> * ); * } * ``` */ declare const createGanttChart: (HighchartsModule: HighchartsGanttModule) => HighchartsComponent; export { type HighchartsComponent, type HighchartsComponentProps, createChart, createGanttChart, createMapChart, createStockChart };