Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ag-charts-community

Package Overview
Dependencies
Maintainers
0
Versions
57
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ag-charts-community - npm Package Compare versions

Comparing version 10.1.0 to 10.2.0

dist/types/src/api/preset/gauge.d.ts

3

dist/types/src/api/agCharts.d.ts

@@ -1,2 +0,2 @@

import type { AgChartInstance, AgChartOptions, AgFinancialChartOptions } from 'ag-charts-types';
import type { AgChartInstance, AgChartOptions, AgFinancialChartOptions, AgGaugeOptions } from 'ag-charts-types';
/**

@@ -27,2 +27,3 @@ * Factory for creating and updating instances of AgChartInstance.

static createFinancialChart(options: AgFinancialChartOptions): AgChartInstance<AgFinancialChartOptions>;
static createGauge(options: AgGaugeOptions): AgChartInstance<AgGaugeOptions>;
}

@@ -0,4 +1,6 @@

import { gauge } from './gauge';
import { priceVolume } from './priceVolumePreset';
export declare const PRESETS: {
'price-volume': typeof priceVolume;
gauge: typeof gauge;
};

@@ -23,4 +23,4 @@ import type { AgAnnotation, AgAnnotationsThemeableOptions } from 'ag-charts-types';

setAnnotationStyles(styles: AgAnnotationsThemeableOptions): void;
getAnnotationTypeStyles(type: keyof AgAnnotationsThemeableOptions): import("ag-charts-types").AgLineAnnotationStyles | import("ag-charts-types").AgTextAnnotationStyles | import("ag-charts-types").AgChannelAnnotationStyles | import("ag-charts-types").AgCalloutAnnotationStyles | import("ag-charts-types").AgCommentAnnotationStyles | import("ag-charts-types").AgNoteAnnotationStyles | import("ag-charts-types").AgAnnotationAxesButtons | undefined;
getAnnotationTypeStyles(type: keyof AgAnnotationsThemeableOptions): import("ag-charts-types").AgLineAnnotationStyles | import("ag-charts-types").AgTextAnnotationStyles | import("ag-charts-types").AgChannelAnnotationStyles | import("ag-charts-types").AgCalloutAnnotationStyles | import("ag-charts-types").AgCommentAnnotationStyles | import("ag-charts-types").AgNoteAnnotationStyles | import("ag-charts-types").AgShapeAnnotationStyles | import("ag-charts-types").AgAnnotationAxesButtons | undefined;
private cleanData;
}

@@ -10,8 +10,7 @@ import type { CssColor, FontFamily, FontSize, FontStyle, FontWeight } from 'ag-charts-types';

import { BBox } from '../../scene/bbox';
import { Group } from '../../scene/group';
import { Group, TransformableGroup } from '../../scene/group';
import type { Node } from '../../scene/node';
import { Selection } from '../../scene/selection';
import { Line } from '../../scene/shape/line';
import { Text } from '../../scene/shape/text';
import { Caption } from '../caption';
import { TransformableText } from '../../scene/shape/text';
import type { ChartAnimationPhase } from '../chartAnimationPhase';

@@ -22,4 +21,3 @@ import type { ChartAxis, ChartAxisLabel, ChartAxisLabelFlipFlag } from '../chartAxis';

import type { AnimationManager } from '../interaction/animationManager';
import { type RegionBBoxProvider } from '../interaction/regions';
import type { AxisLayout } from '../layout/layoutService';
import type { AxisLayout } from '../layout/layoutManager';
import type { ISeries } from '../series/seriesTypes';

@@ -75,2 +73,5 @@ import { AxisGridLine } from './axisGridLine';

export type AxisModuleMap = ModuleMap<AxisOptionModule, ModuleInstance, ModuleContextWithParent<AxisContext>>;
declare const TranslatableLine_base: new (...args: any[]) => import("../../scene/transformable").TranslatableType<Line>;
declare class TranslatableLine extends TranslatableLine_base {
}
/**

@@ -106,13 +107,13 @@ * A general purpose linear axis with no notion of orientation.

interactionEnabled: boolean;
readonly axisGroup: Group;
protected lineNode: Line;
readonly axisGroup: TransformableGroup;
protected lineNode: TranslatableLine;
protected readonly tickLineGroup: Group;
protected readonly tickLabelGroup: Group;
protected readonly crossLineGroup: Group;
protected readonly crossLineGroup: TransformableGroup;
protected readonly labelGroup: Group;
readonly gridGroup: Group;
readonly gridGroup: TransformableGroup;
protected readonly gridLineGroup: Group;
protected tickLineGroupSelection: Selection<Line, any>;
protected tickLabelGroupSelection: Selection<Text, LabelNodeDatum>;
protected gridLineGroupSelection: Selection<Line, any>;
protected tickLineGroupSelection: Selection<TranslatableLine, any>;
protected tickLabelGroupSelection: Selection<TransformableText, LabelNodeDatum>;
protected gridLineGroupSelection: Selection<TranslatableLine, any>;
private _crossLines;

@@ -146,3 +147,2 @@ set crossLines(value: CrossLine[]);

detachAxis(axisNode: Node, gridNode: Node): void;
getAxisGroup(): Group;
range: [number, number];

@@ -159,4 +159,3 @@ visibleRange: [number, number];

protected onFormatChange(ticks: any[], fractionDigits: number, _domain: any[], format?: string): void;
title: AxisTitle;
protected _titleCaption: Caption;
readonly title: AxisTitle;
private setTickInterval;

@@ -181,3 +180,3 @@ /**

*/
update(_primaryTickCount?: number, animated?: boolean): number | undefined;
update(animated?: boolean): number | undefined;
private getAxisLineCoordinates;

@@ -201,3 +200,2 @@ private getTickLineCoordinates;

createTickData(tickGenerationType: TickGenerationType, index: number, tickData: TickData, terminate: boolean, primaryTickCount?: number): TickStrategyResult;
private checkLabelOverlap;
private createLabelData;

@@ -245,3 +243,3 @@ private getAutoRotation;

}): void;
protected updateAxisLine(): void;
private updateAxisLine;
protected updateGridLines(sideFlag: ChartAxisLabelFlipFlag): void;

@@ -255,5 +253,4 @@ protected updateLabels(): void;

getFormatter(index?: number, isTickLabel?: boolean): (datum: any, fractionDigits?: number) => string;
maxThickness: number;
getBBox(): BBox;
getRegionBBoxProvider(): RegionBBoxProvider;
getRegionNode(): TransformableGroup;
initCrossLine(crossLine: CrossLine): void;

@@ -263,3 +260,2 @@ isAnySeriesActive(): boolean;

clipGrid(x: number, y: number, width: number, height: number): void;
calculatePadding(min: number, max: number): [number, number];
protected getTitleFormatterParams(): {

@@ -266,0 +262,0 @@ direction: ChartAxisDirection;

import type { AgChartLegendPosition, CssColor, FontFamily, FontSize, FontStyle, FontWeight } from 'ag-charts-types';
import { LinearScale } from '../../scale/linearScale';
import { BBox } from '../../scene/bbox';
import { Group } from '../../scene/group';
import { TranslatableGroup } from '../../scene/group';
import type { Node } from '../../scene/node';

@@ -30,3 +30,3 @@ import { Selection } from '../../scene/selection';

readonly id: string;
protected readonly axisGroup: Group;
protected readonly axisGroup: TranslatableGroup;
protected readonly labelSelection: Selection<Text, LabelNodeDatum>;

@@ -33,0 +33,0 @@ readonly interval: AxisInterval<unknown>;

import type { AgAxisCaptionFormatterParams, AgAxisCaptionOptions, FontStyle, FontWeight, Formatter, TextWrap } from 'ag-charts-types';
import { BaseProperties } from '../../util/properties';
import { Caption } from '../caption';
export declare class AxisTitle extends BaseProperties implements AgAxisCaptionOptions {
readonly caption: Caption;
enabled: boolean;

@@ -5,0 +7,0 @@ text?: string;

import type { FromToFns } from '../../motion/fromToMotion';
import type { Group } from '../../scene/group';
import type { Group, TransformableGroup } from '../../scene/group';
import type { Line } from '../../scene/shape/line';
import type { Text } from '../../scene/shape/text';
import type { RotatableText, TransformableText } from '../../scene/shape/text';
import type { TranslatableType } from '../../scene/transformable';
export type AxisLineDatum = {

@@ -44,6 +45,6 @@ x: number;

export declare function prepareAxisAnimationFunctions(ctx: AxisAnimationContext): {
tick: FromToFns<Line, any, AxisNodeDatum>;
tick: FromToFns<TranslatableType<Line>, any, AxisNodeDatum>;
line: FromToFns<Line, any, AxisLineDatum>;
label: FromToFns<Text, Partial<Omit<AxisLabelDatum, "range">>, AxisLabelDatum>;
group: FromToFns<Group, any, AxisGroupDatum>;
label: FromToFns<TransformableText, Partial<Omit<AxisLabelDatum, "range">>, AxisLabelDatum>;
group: FromToFns<TransformableGroup, any, AxisGroupDatum>;
};

@@ -63,3 +64,3 @@ export declare function resetAxisGroupFn(): (_node: Group, datum: AxisGroupDatum) => {

};
export declare function resetAxisLabelSelectionFn(): (_node: Text, datum: AxisLabelDatum) => {
export declare function resetAxisLabelSelectionFn(): (_node: RotatableText, datum: AxisLabelDatum) => {
x: number;

@@ -66,0 +67,0 @@ y: number;

@@ -8,3 +8,3 @@ import type { AgCartesianAxisPosition } from 'ag-charts-types';

export declare abstract class CartesianAxis<S extends Scale<D, number, any> = Scale<any, number, any>, D = any> extends Axis<S, D> {
static is(value: any): value is CartesianAxis<any>;
static is(value: unknown): value is CartesianAxis<any>;
thickness: number;

@@ -14,3 +14,3 @@ position: AgCartesianAxisPosition;

protected updateDirection(): void;
update(primaryTickCount?: number, animated?: boolean): number | undefined;
update(animated?: boolean): number | undefined;
calculateLayout(primaryTickCount?: number): {

@@ -17,0 +17,0 @@ primaryTickCount: number | undefined;

@@ -6,12 +6,10 @@ import type { ModuleContext } from '../../module/moduleContext';

export declare class CategoryAxis<S extends BandScale<string | object, number> | OrdinalTimeScale = BandScale<string | object, number>> extends CartesianAxis<S> {
static is(value: unknown): value is CategoryAxis<any>;
static readonly className: string;
static readonly type: 'category' | 'ordinal-time';
private _paddingOverrideEnabled;
constructor(moduleCtx: ModuleContext, scale?: S);
groupPaddingInner: number;
set paddingInner(value: number);
get paddingInner(): number;
set paddingOuter(value: number);
get paddingOuter(): number;
normaliseDataDomain(d: (string | object)[]): {
paddingInner?: number;
paddingOuter?: number;
normaliseDataDomain(d: Array<string | object>): {
domain: (string | object)[];

@@ -21,2 +19,3 @@ clipped: boolean;

protected calculateDomain(): void;
private reduceBandScalePadding;
}

@@ -23,7 +23,7 @@ import type { Scale } from '../../scale/scale';

}, _seriesRect: BBox): BBox | null;
computeRange?: () => void;
getAxisLinePoints?(): {
computeRange(): void;
getAxisLinePoints(): {
points: PolarAxisPathPoint[];
closePath: boolean;
};
} | undefined;
}

@@ -15,3 +15,2 @@ import type { ModuleContext } from '../../module/moduleContext';

protected onFormatChange(ticks: any[], fractionDigits: number, domain: any[], format?: string): void;
calculatePadding(): [number, number];
}

@@ -7,3 +7,3 @@ import type { ModuleInstance } from '../../module/baseModule';

import { Text } from '../../scene/shape/text';
import type { LayoutCompleteEvent } from '../layout/layoutService';
import type { LayoutCompleteEvent } from '../layout/layoutManager';
export declare class Background<TImage = never> extends BaseModuleInstance implements ModuleInstance {

@@ -10,0 +10,0 @@ private readonly zIndex;

import type { FontStyle, FontWeight, TextAlign, TextWrap } from 'ag-charts-types';
import type { ProxyInteractionService } from '../dom/proxyInteractionService';
import type { ModuleContext } from '../module/moduleContext';
import { Text } from '../scene/shape/text';
import { RotatableText } from '../scene/shape/text';
import { BaseProperties } from '../util/properties';
import type { CaptionLike } from './captionLike';
import type { ProxyInteractionService } from './dom/proxyInteractionService';
import type { PointerInteractionEvent } from './interaction/interactionManager';

@@ -12,3 +12,3 @@ export declare class Caption extends BaseProperties implements CaptionLike {

readonly id: string;
readonly node: Text;
readonly node: RotatableText;
enabled: boolean;

@@ -23,8 +23,8 @@ text?: string;

spacing?: number;
lineHeight?: number;
maxWidth?: number;
maxHeight?: number;
wrapping: TextWrap;
padding: number;
layoutStyle: 'block' | 'overlay';
private truncated;
layoutStyle: 'block' | 'overlay';
private proxyText?;

@@ -31,0 +31,0 @@ registerInteraction(moduleCtx: ModuleContext): () => void;

@@ -0,4 +1,7 @@

import type { Text } from '../scene/shape/text';
export interface CaptionLike {
enabled: boolean;
text?: string;
padding: number;
node: Text;
}

@@ -0,1 +1,2 @@

import type { LayoutContext } from '../module/baseModule';
import type { ChartOptions } from '../module/optionsModule';

@@ -21,3 +22,5 @@ import type { BBox } from '../scene/bbox';

getChartType(): "cartesian";
performLayout(): Promise<BBox>;
private setRootClipRects;
private lastUpdateClipRect;
protected performLayout(ctx: LayoutContext): void;
private _lastCrossLineIds?;

@@ -27,3 +30,3 @@ private _lastAxisAreaWidths;

private _lastVisibility;
updateAxes(inputShrinkRect: BBox): {
updateAxes(layoutBox: BBox): {
seriesRect: BBox;

@@ -30,0 +33,0 @@ animationRect: BBox;

import type { AgChartInstance, AgChartOptions } from 'ag-charts-types';
import type { LayoutContext } from '../module/baseModule';
import type { ModuleContext } from '../module/moduleContext';
import type { ChartOptions } from '../module/optionsModule';
import { BBox } from '../scene/bbox';
import { Group } from '../scene/group';
import { TranslatableGroup } from '../scene/group';
import type { Scene } from '../scene/scene';

@@ -18,3 +19,2 @@ import type { PlacedLabel } from '../scene/util/labelPlacement';

import { ChartUpdateType } from './chartUpdateType';
import { ZoomManager } from './interaction/zoomManager';
import { Keyboard } from './keyboard';

@@ -37,3 +37,3 @@ import { ModulesManager } from './modulesManager';

sceneMode?: 'simple';
_type?: string;
presetType?: string;
}

@@ -50,5 +50,5 @@ export type ChartExtendedOptions = AgChartOptions & ChartSpecialOverrides;

className?: string;
readonly seriesRoot: Group;
readonly highlightRoot: Group;
readonly annotationRoot: Group;
readonly seriesRoot: TranslatableGroup;
readonly highlightRoot: TranslatableGroup;
readonly annotationRoot: TranslatableGroup;
readonly tooltip: Tooltip;

@@ -72,9 +72,9 @@ readonly overlays: ChartOverlays;

readonly padding: Padding;
readonly titlePadding = 0;
readonly seriesArea: SeriesArea;
readonly keyboard: Keyboard;
mode: ChartMode;
private readonly chartCaptions;
readonly title: Caption;
readonly subtitle: Caption;
readonly footnote: Caption;
readonly keyboard: Keyboard;
mode: ChartMode;
destroyed: boolean;

@@ -85,3 +85,2 @@ private _skipSync;

readonly modulesManager: ModulesManager;
readonly zoomManager: ZoomManager;
readonly ctx: ChartContext;

@@ -101,3 +100,3 @@ protected readonly seriesLayerManager: SeriesLayerManager;

getModuleContext(): ModuleContext;
abstract getChartType(): 'cartesian' | 'polar' | 'hierarchy' | 'topology' | 'flow-proportion';
abstract getChartType(): 'cartesian' | 'polar' | 'hierarchy' | 'topology' | 'flow-proportion' | 'gauge';
protected getCaptionText(): string;

@@ -125,2 +124,3 @@ protected getAriaLabel(): string;

private updateDOM;
private updateAriaLabels;
private checkUpdateShortcut;

@@ -134,3 +134,2 @@ private checkFirstAutoSize;

private addSeriesListeners;
updateAllSeriesListeners(): void;
protected assignSeriesToAxes(): void;

@@ -142,6 +141,6 @@ protected assignAxesToSeries(): void;

processData(): Promise<void>;
placeLabels(): Map<Series<any, any>, PlacedLabel[]>;
placeLabels(padding?: number): Map<Series<any, any>, PlacedLabel[]>;
private getLegendData;
private processLayout;
protected performLayout(): Promise<BBox>;
protected abstract performLayout(ctx: LayoutContext): Promise<void> | void;
protected seriesRect?: BBox;

@@ -148,0 +147,0 @@ protected animationRect?: BBox;

@@ -7,3 +7,2 @@ import type { AgAxisLabelFormatterParams, AgCartesianAxisPosition, FontOptions, Formatter } from 'ag-charts-types';

import type { BBox } from '../scene/bbox';
import type { Group } from '../scene/group';
import type { Node } from '../scene/node';

@@ -16,20 +15,41 @@ import type { AxisGridLine } from './axis/axisGridLine';

import type { CrossLine } from './crossline/crossLine';
import type { RegionBBoxProvider } from './interaction/regions';
import type { AxisLayout } from './layout/layoutService';
import type { AxisLayout } from './layout/layoutManager';
import type { ISeries } from './series/seriesTypes';
export type ChartAxisLabelFlipFlag = 1 | -1;
interface AxisInterval {
step?: number | TickInterval<any>;
values?: any[];
minSpacing?: number;
maxSpacing?: number;
}
interface AxisLayoutConstraints {
stacked: boolean;
align: 'start' | 'end';
width: number;
unit: 'percent' | 'px';
}
export interface ChartAxis {
attachAxis(axisGroup: Node, gridGroup: Node): void;
getAxisGroup(): Group;
getRegionBBoxProvider(): RegionBBoxProvider;
boundSeries: ISeries<unknown, unknown>[];
calculateLayout(primaryTickCount?: number): {
primaryTickCount: number | undefined;
primaryTickCount?: number;
bbox: BBox;
};
calculatePadding(min: number, max: number): [number, number];
clipGrid(x: number, y: number, width: number, height: number): void;
clipTickLines(x: number, y: number, width: number, height: number): void;
createAxisContext(): AxisContext;
createModuleContext(): ModuleContextWithParent<AxisContext>;
destroy(): void;
detachAxis(axisGroup: Node, gridGroup: Node): void;
formatDatum(datum: any): string;
getBBox(): BBox;
getLayoutState(): AxisLayout;
getModuleMap(): ModuleMap<any, any, any>;
getRegionNode(): Node;
inRange(x: number, width?: number, tolerance?: number): boolean;
isReversed(): boolean;
resetAnimation(chartAnimationPhase: ChartAnimationPhase): unknown;
setCrossLinesVisible(visible: boolean): void;
update(animated?: boolean): number | undefined;
updatePosition(): void;
boundSeries: ISeries<unknown, unknown>[];
crossLines?: CrossLine[];

@@ -40,20 +60,13 @@ dataDomain: {

};
destroy(): void;
detachAxis(axisGroup: Node, gridGroup: Node): void;
direction: ChartAxisDirection;
interactionEnabled: boolean;
formatDatum(datum: any): string;
getLayoutState(): AxisLayout;
getModuleMap(): ModuleMap<any, any, any>;
createAxisContext(): AxisContext;
gridLength: number;
gridLine: AxisGridLine;
gridPadding: number;
id: string;
inRange(x: number, width?: number, tolerance?: number): boolean;
interactionEnabled: boolean;
interval: AxisInterval;
keys: string[];
label: ChartAxisLabel;
layoutConstraints: AxisLayoutConstraints;
line: AxisLine;
gridLine: AxisGridLine;
label: ChartAxisLabel;
tick: AxisTick;
maxThickness: number;
nice: boolean;

@@ -65,4 +78,4 @@ position?: AgCartesianAxisPosition;

seriesAreaPadding: number;
setCrossLinesVisible(visible: boolean): void;
thickness?: number;
tick: AxisTick;
translation: {

@@ -73,22 +86,7 @@ x: number;

type: string;
update(primaryTickCount?: number, animated?: boolean): number | undefined;
updateScale(): void;
updatePosition(): void;
visibleRange: [number, number];
createModuleContext: () => ModuleContextWithParent<AxisContext>;
resetAnimation(chartAnimationPhase: ChartAnimationPhase): unknown;
interval: {
step?: number | TickInterval<any>;
values?: any[];
minSpacing?: number;
maxSpacing?: number;
};
layoutConstraints: {
stacked: boolean;
align: 'start' | 'end';
width: number;
unit: 'percent' | 'px';
};
}
export interface ChartAxisLabel extends FontOptions {
getSideFlag(): ChartAxisLabelFlipFlag;
set(props: object): void;
autoRotate?: boolean;

@@ -100,3 +98,2 @@ autoRotateAngle?: number;

formatter?: Formatter<AgAxisLabelFormatterParams>;
getSideFlag(): ChartAxisLabelFlipFlag;
minSpacing: number;

@@ -107,3 +104,3 @@ mirrored: boolean;

rotation?: number;
set(props: object): void;
}
export {};

@@ -0,2 +1,7 @@

import { HistoryManager } from '../api/state/historyManager';
import { StateManager } from '../api/state/stateManager';
import { DOMManager } from '../dom/domManager';
import { FocusIndicator } from '../dom/focusIndicator';
import { ProxyInteractionService } from '../dom/proxyInteractionService';
import { LocaleManager } from '../locale/localeManager';
import type { ModuleContext } from '../module/moduleContext';

@@ -11,5 +16,2 @@ import type { Group } from '../scene/group';

import { DataService } from './data/dataService';
import { DOMManager } from './dom/domManager';
import { FocusIndicator } from './dom/focusIndicator';
import { ProxyInteractionService } from './dom/proxyInteractionService';
import { AnimationManager } from './interaction/animationManager';

@@ -28,6 +30,5 @@ import { AriaAnnouncementService } from './interaction/ariaAnnouncementServices';

import { TooltipManager } from './interaction/tooltipManager';
import type { ZoomManager } from './interaction/zoomManager';
import { ZoomManager } from './interaction/zoomManager';
import type { Keyboard } from './keyboard';
import { LayoutService } from './layout/layoutService';
import { LocaleManager } from './locale/localeManager';
import { LayoutManager } from './layout/layoutManager';
import { SeriesStateManager } from './series/seriesStateManager';

@@ -37,32 +38,32 @@ import type { Tooltip } from './tooltip/tooltip';

export declare class ChartContext implements ModuleContext {
scene: Scene;
callbackCache: CallbackCache;
gestureDetector: GestureDetector;
chartService: ChartService;
dataService: DataService<any>;
layoutService: LayoutService;
updateService: UpdateService;
axisManager: AxisManager;
readonly callbackCache: CallbackCache;
readonly chartEventManager: ChartEventManager;
readonly highlightManager: HighlightManager;
readonly layoutManager: LayoutManager;
readonly localeManager: LocaleManager;
readonly seriesStateManager: SeriesStateManager;
readonly stateManager: StateManager;
readonly toolbarManager: ToolbarManager;
readonly zoomManager: ZoomManager;
animationManager: AnimationManager;
annotationManager: AnnotationManager;
ariaAnnouncementService: AriaAnnouncementService;
chartEventManager: ChartEventManager;
axisManager: AxisManager;
chartService: ChartService;
contextMenuRegistry: ContextMenuRegistry;
cursorManager: CursorManager;
dataService: DataService<any>;
domManager: DOMManager;
focusIndicator: FocusIndicator;
highlightManager: HighlightManager;
gestureDetector: GestureDetector;
historyManager: HistoryManager;
interactionManager: InteractionManager;
keyNavManager: KeyNavManager;
localeManager: LocaleManager;
proxyInteractionService: ProxyInteractionService;
regionManager: RegionManager;
seriesStateManager: SeriesStateManager;
stateManager: StateManager;
scene: Scene;
syncManager: SyncManager;
toolbarManager: ToolbarManager;
tooltipManager: TooltipManager;
zoomManager: ZoomManager;
updateService: UpdateService;
constructor(chart: ChartService & {
zoomManager: ZoomManager;
annotationRoot: Group;

@@ -78,5 +79,5 @@ keyboard: Keyboard;

updateMutex: Mutex;
overrideDevicePixelRatio?: number;
pixelRatio?: number;
});
destroy(): void;
}
import type { AgChartInstance } from 'ag-charts-types';
import { Group } from '../scene/group';
import type { CaptionLike } from './captionLike';

@@ -7,5 +8,6 @@ import type { ChartMode } from './chartMode';

readonly mode: ChartMode;
readonly title?: CaptionLike;
readonly title: CaptionLike;
readonly series: ISeries<any, any>[];
readonly seriesRoot: Group;
readonly publicApi?: AgChartInstance;
}

@@ -8,3 +8,3 @@ import type { AgBaseCrossLineLabelOptions, AgCrossLineLabelPosition } from 'ag-charts-types';

export declare const MATCHING_CROSSLINE_TYPE: (property: 'value' | 'range') => import("../../util/validation").ValidatePredicate;
export declare const validateCrossLineValues: (type: 'line' | 'range', value: any, range: any, scale: Scale<any, number>) => boolean;
export declare const validateCrossLineValues: (type: 'line' | 'range', value: any, range: any, scale: Scale<any, number>, visibilityCheck?: () => boolean) => boolean;
export interface CrossLine<LabelType = AgBaseCrossLineLabelOptions> {

@@ -11,0 +11,0 @@ calculateLayout?(visible: boolean, reversedAxis?: boolean): void;

@@ -68,5 +68,3 @@ import type { ChartMode } from '../chartMode';

export type DatumPropertyType = 'range' | 'category';
export declare function fixNumericExtent(extent?: (number | Date)[], axis?: {
calculatePadding(min: number, max: number): [number, number];
}): [] | [number, number];
export declare function fixNumericExtent(extent: Array<number | Date> | null): [] | [number, number];
type MissMap = Map<string | undefined, number>;

@@ -73,0 +71,0 @@ export declare function getMissCount(scopeProvider: ScopeProvider, missMap: MissMap | undefined): number;

@@ -1,2 +0,21 @@

import type { GroupValueProcessorDefinition, ProcessedData, ProcessorOutputPropertyDefinition, PropertyValueProcessorDefinition, ReducerOutputPropertyDefinition } from './dataModel';
import type { ScaleType } from '../../scale/scale';
import type { DatumPropertyDefinition, GroupValueProcessorDefinition, ProcessedData, ProcessorOutputPropertyDefinition, PropertyValueProcessorDefinition, ReducerOutputPropertyDefinition } from './dataModel';
export declare function keyProperty<K>(propName: K, scaleType?: ScaleType, opts?: Partial<DatumPropertyDefinition<K>>): DatumPropertyDefinition<K>;
export declare function valueProperty<K>(propName: K, scaleType?: ScaleType, opts?: Partial<DatumPropertyDefinition<K>>): DatumPropertyDefinition<K>;
export declare function rangedValueProperty<K>(propName: K, opts?: Partial<DatumPropertyDefinition<K>> & {
min?: number;
max?: number;
}): DatumPropertyDefinition<K>;
export declare function accumulativeValueProperty<K>(propName: K, scaleType?: ScaleType, opts?: Partial<DatumPropertyDefinition<K>> & {
onlyPositive?: boolean;
}): DatumPropertyDefinition<K>;
export declare function trailingAccumulatedValueProperty<K>(propName: K, scaleType?: ScaleType, opts?: Partial<DatumPropertyDefinition<K>>): DatumPropertyDefinition<K>;
export declare function groupAccumulativeValueProperty<K>(propName: K, mode: 'normal' | 'trailing' | 'window' | 'window-trailing', sum: "current" | "last" | undefined, opts: Partial<DatumPropertyDefinition<K>> & {
rangeId?: string;
groupId: string;
}, scaleType?: ScaleType): (GroupValueProcessorDefinition<any, any> | import("./dataModel").AggregatePropertyDefinition<any, any> | DatumPropertyDefinition<K>)[];
export declare function groupStackValueProperty<K>(propName: K, scaleType: ScaleType | undefined, opts: Partial<DatumPropertyDefinition<K>> & {
rangeId?: string;
groupId: string;
}): (GroupValueProcessorDefinition<any, any> | DatumPropertyDefinition<K>)[];
export declare const SMALLEST_KEY_INTERVAL: ReducerOutputPropertyDefinition<'smallestKeyInterval'>;

@@ -3,0 +22,0 @@ export declare const LARGEST_KEY_INTERVAL: ReducerOutputPropertyDefinition<'largestKeyInterval'>;

@@ -1,2 +0,2 @@

export type ChartType = 'cartesian' | 'polar' | 'hierarchy' | 'topology' | 'flow-proportion';
export type ChartType = 'cartesian' | 'polar' | 'hierarchy' | 'topology' | 'flow-proportion' | 'gauge';
declare class ChartTypes extends Map<string, ChartType | 'unknown'> {

@@ -9,2 +9,3 @@ get(seriesType: string): "unknown" | ChartType;

isFlowProportion(seriesType: string): boolean;
isGauge(seriesType: string): boolean;
get seriesTypes(): string[];

@@ -16,2 +17,3 @@ get cartesianTypes(): string[];

get flowProportionTypes(): string[];
get gaugeTypes(): string[];
}

@@ -18,0 +20,0 @@ declare class ChartDefaults extends Map<ChartType, object> {

@@ -6,3 +6,3 @@ type EnterpriseModuleStub = {

optionsKey: string;
chartTypes: ('cartesian' | 'polar' | 'hierarchy' | 'topology' | 'flow-proportion')[];
chartTypes: ('cartesian' | 'polar' | 'hierarchy' | 'topology' | 'flow-proportion' | 'gauge')[];
useCount?: number;

@@ -13,3 +13,3 @@ optionsInnerKey?: string;

export declare function isEnterpriseSeriesType(type: string): boolean;
export declare function getEnterpriseSeriesChartTypes(type: string): ("cartesian" | "polar" | "hierarchy" | "topology" | "flow-proportion")[] | undefined;
export declare function getEnterpriseSeriesChartTypes(type: string): ("cartesian" | "polar" | "hierarchy" | "topology" | "flow-proportion" | "gauge")[] | undefined;
export declare function isEnterpriseSeriesTypeLoaded(type: string): boolean;

@@ -21,2 +21,3 @@ export declare function isEnterpriseCartesian(seriesType: string): boolean;

export declare function isEnterpriseFlowProportion(seriesType: string): boolean;
export declare function isEnterpriseGauge(seriesType: string): boolean;
type UnknownPackage = {

@@ -23,0 +24,0 @@ packageType: string;

@@ -1,2 +0,2 @@

import type { AgCartesianSeriesOptions, AgChartOptions, AgFlowProportionSeriesOptions, AgHierarchySeriesOptions, AgPolarSeriesOptions, AgTopologySeriesOptions } from 'ag-charts-types';
import type { AgChartOptions } from 'ag-charts-types';
import type { SeriesModule, SeriesTooltipDefaults } from '../../module/coreModules';

@@ -7,3 +7,2 @@ import type { SeriesPaletteFactory } from '../../module/coreModulesTypes';

import type { ISeries } from '../series/seriesTypes';
export type SeriesOptions = AgCartesianSeriesOptions | AgPolarSeriesOptions | AgHierarchySeriesOptions | AgTopologySeriesOptions | AgFlowProportionSeriesOptions;
export declare class SeriesRegistry {

@@ -19,3 +18,3 @@ private readonly seriesMap;

getThemeTemplate(seriesType: string): object | undefined;
getPaletteFactory(seriesType: SeriesType): SeriesPaletteFactory | undefined;
getPaletteFactory(seriesType: SeriesType): SeriesPaletteFactory<unknown> | undefined;
getTooltipDefauls(seriesType: SeriesType): SeriesTooltipDefaults | undefined;

@@ -22,0 +21,0 @@ isSolo(seriesType: SeriesType): boolean;

@@ -1,2 +0,2 @@

import { BBox } from '../scene/bbox';
import type { LayoutContext } from '../module/baseModule';
import { Chart } from './chart';

@@ -8,3 +8,3 @@ export declare class FlowProportionChart extends Chart {

updateData(): Promise<void>;
performLayout(): Promise<BBox>;
protected performLayout(ctx: LayoutContext): void;
}

@@ -0,3 +1,3 @@

import type { LayoutContext } from '../module/baseModule';
import type { ChartOptions } from '../module/optionsModule';
import { BBox } from '../scene/bbox';
import type { TransferableResources } from './chart';

@@ -10,4 +10,4 @@ import { Chart } from './chart';

getChartType(): "hierarchy";
performLayout(): Promise<BBox>;
protected performLayout(ctx: LayoutContext): void;
protected getAriaLabel(): string;
}
import type { AdditionalAnimationOptions, AnimationOptions, AnimationValue, IAnimation } from '../../motion/animation';
import { Animation } from '../../motion/animation';
import { type EventListener } from '../../util/eventEmitter';
import type { Mutex } from '../../util/mutex';
import { BaseManager } from '../baseManager';
import { InteractionManager } from './interactionManager';

@@ -11,2 +11,5 @@ type AnimationEventType = 'animation-frame' | 'animation-start' | 'animation-stop';

}
type AnimationEventMap = {
[K in AnimationEventType]: AnimationEvent;
};
/**

@@ -16,3 +19,3 @@ * Manage animations across a chart, running all animations through only one `requestAnimationFrame` callback,

*/
export declare class AnimationManager extends BaseManager<AnimationEventType, AnimationEvent> {
export declare class AnimationManager {
private readonly interactionManager;

@@ -23,2 +26,3 @@ private readonly chartUpdateMutex;

private readonly debug;
private readonly events;
private readonly rafAvailable;

@@ -30,2 +34,3 @@ private isPlaying;

constructor(interactionManager: InteractionManager, chartUpdateMutex: Mutex);
addListener<K extends keyof AnimationEventMap>(eventName: K, listener: EventListener<AnimationEventMap[K]>): () => void;
/**

@@ -58,3 +63,4 @@ * Create an animation to tween a value between the `from` and `to` properties. If an animation already exists

onBatchStop(cb: () => void): void;
destroy(): void;
}
export {};

@@ -1,8 +0,8 @@

import type { DOMManager } from '../dom/domManager';
import type { LayoutCompleteEvent, LayoutService } from '../layout/layoutService';
import type { LocaleManager } from '../locale/localeManager';
import type { DOMManager } from '../../dom/domManager';
import type { LocaleManager } from '../../locale/localeManager';
import type { LayoutCompleteEvent, LayoutManager } from '../layout/layoutManager';
export declare class AriaAnnouncementService {
private readonly localeManager;
private readonly domManager;
private readonly layoutService;
private readonly layoutManager;
private readonly liveElem;

@@ -12,6 +12,7 @@ private readonly debug;

private static createAnnouncer;
constructor(localeManager: LocaleManager, domManager: DOMManager, layoutService: LayoutService);
constructor(localeManager: LocaleManager, domManager: DOMManager, layoutManager: LayoutManager);
destroy(): void;
onResize(event: LayoutCompleteEvent): void;
clear(): void;
announceValue(id: string, params?: Record<string, any>): void;
}

@@ -58,6 +58,9 @@ import type { AgContextMenuOptions } from 'ag-charts-types';

static checkCallback<T extends ContextType>(desiredType: T, type: ContextType, _callback: ContextMenuCallback<ContextType>): _callback is ContextMenuCallback<T>;
dispatchContext<T extends ContextType>(type: T, pointerEvent: PointerInteractionEvent<'contextmenu'>, context: ContextTypeMap[T]): void;
dispatchContext<T extends ContextType>(type: T, pointerEvent: PointerInteractionEvent<'contextmenu'>, context: ContextTypeMap[T], position?: {
x: number;
y: number;
}): void;
addListener(handler: (event: ContextMenuEvent) => void): () => void;
filterActions(type: ContextType): ContextMenuAction<ContextType>[];
registerDefaultAction<T extends ContextType>(action: ContextMenuAction<T>): void;
registerDefaultAction<T extends ContextType>(action: ContextMenuAction<T>): () => void;
enableAction(actionId: string): void;

@@ -64,0 +67,0 @@ disableAction(actionId: string): void;

@@ -1,2 +0,2 @@

import type { DOMManager } from '../dom/domManager';
import type { DOMManager } from '../../dom/domManager';
export declare enum Cursor {

@@ -3,0 +3,0 @@ Auto = "auto",

@@ -0,3 +1,3 @@

import type { DOMManager } from '../../dom/domManager';
import { BaseManager } from '../baseManager';
import type { DOMManager } from '../dom/domManager';
import { type PreventableEvent } from './preventableEvent';

@@ -4,0 +4,0 @@ type PinchEventTypes = 'pinch-start' | 'pinch-move' | 'pinch-end';

@@ -1,4 +0,5 @@

import { BaseManager } from '../baseManager';
import type { DOMManager } from '../dom/domManager';
import type { DOMManager } from '../../dom/domManager';
import { InteractionState, InteractionStateListener } from './interactionStateListener';
import { type PreventableEvent } from './preventableEvent';
export { InteractionState };
export declare const POINTER_INTERACTION_TYPES: readonly ["click", "dblclick", "contextmenu", "hover", "drag-start", "drag", "drag-end", "leave", "enter", "page-left", "wheel"];

@@ -36,10 +37,2 @@ declare const FOCUS_INTERACTION_TYPES: readonly ["blur", "focus"];

type SupportedEvent = MouseEvent | TouchEvent | Event;
export declare enum InteractionState {
Default = 16,
ZoomDrag = 8,
Annotations = 4,
ContextMenu = 2,
Animation = 1,
All = 31
}
/**

@@ -49,3 +42,3 @@ * Manages user interactions with a specific HTMLElement (or interactions that bubble from it's

*/
export declare class InteractionManager extends BaseManager<InteractionTypes, InteractionEvent> {
export declare class InteractionManager extends InteractionStateListener<InteractionTypes, InteractionEvent> {
private readonly keyboardOptions;

@@ -69,11 +62,10 @@ private readonly domManager;

destroy(): void;
addListener<T extends InteractionTypes>(type: T, handler: (event: InteractionEvent & {
type: T;
}) => void, triggeringStates?: InteractionState): () => void;
pushState(state: InteractionState): void;
popState(state: InteractionState): void;
getState(): number;
getState(): InteractionState;
private processCanvasOverlayEvent;
private processEvent;
private ignoreEvent;
private dispatchEvent;
private dispatchTypedEvent;
extractElements(event: SupportedEvent): {

@@ -95,2 +87,1 @@ relatedElement?: HTMLElement;

}
export {};

@@ -1,6 +0,6 @@

import { BaseManager } from '../baseManager';
import type { DOMManager } from '../dom/domManager';
import type { InteractionEvent, InteractionManager } from './interactionManager';
import { InteractionState } from './interactionManager';
import { InteractionStateListener } from './interactionStateListener';
import { type PreventableEvent } from './preventableEvent';
export type KeyNavEventType = 'blur' | 'browserfocus' | 'tab' | 'nav-hori' | 'nav-vert' | 'nav-zoom' | 'submit' | 'cancel' | 'delete';
export type KeyNavEventType = 'blur' | 'focus' | 'nav-hori' | 'nav-vert' | 'nav-zoom' | 'submit' | 'cancel' | 'delete';
export type KeyNavEvent<T extends KeyNavEventType = KeyNavEventType> = PreventableEvent & {

@@ -11,8 +11,9 @@ type: T;

};
export declare class KeyNavManager extends BaseManager<KeyNavEventType, KeyNavEvent> {
private readonly domManager;
export declare class KeyNavManager extends InteractionStateListener<KeyNavEventType, KeyNavEvent> {
readonly interactionManager: InteractionManager;
private hasBrowserFocus;
private isMouseBlurred;
private isClicking;
constructor(interactionManager: InteractionManager, domManager: DOMManager);
constructor(interactionManager: InteractionManager);
protected getState(): InteractionState;
destroy(): void;

@@ -19,0 +20,0 @@ private onClickStart;

@@ -1,19 +0,18 @@

import type { FocusIndicator } from '../dom/focusIndicator';
import type { FocusIndicator } from '../../dom/focusIndicator';
import { Node } from '../../scene/node';
import type { InteractionManager, PointerInteractionEvent, PointerInteractionTypes } from './interactionManager';
import { InteractionState } from './interactionManager';
import type { KeyNavEvent, KeyNavEventType, KeyNavManager } from './keyNavManager';
import type { RegionBBoxProvider, RegionName } from './regions';
import { NodeRegionBBoxProvider, type RegionBBoxProvider, type RegionName } from './regions';
type TypeInfo = {
[K in PointerInteractionTypes]: PointerInteractionEvent<K> & {
region: RegionName;
};
} & {
[K in KeyNavEventType]: KeyNavEvent<K> & {
region: RegionName;
};
[K in PointerInteractionTypes]: PointerInteractionEvent<K> & RegionEventMixins;
};
export type RegionEvent = (PointerInteractionEvent | KeyNavEvent) & {
type RegionEventMixins = {
region: RegionName;
bboxProviderId?: string;
regionOffsetX: number;
regionOffsetY: number;
};
export type RegionEvent<T extends PointerInteractionTypes = PointerInteractionTypes> = PointerInteractionEvent & RegionEventMixins & {
type: T;
};
export interface RegionProperties {

@@ -23,9 +22,11 @@ readonly name: RegionName;

}
type RegionNodeType = NodeRegionBBoxProvider | Node | {
id: string;
node: Node;
};
export declare class RegionManager {
private readonly interactionManager;
private readonly keyNavManager;
private readonly focusIndicator;
private currentTabIndex;
private currentRegion?;
private currentBBoxProviderId?;
private readonly debug;
private current?;
private isDragging;

@@ -36,10 +37,10 @@ private leftCanvas;

private readonly allRegionsListeners;
constructor(interactionManager: InteractionManager, keyNavManager: KeyNavManager, focusIndicator: FocusIndicator);
constructor(interactionManager: InteractionManager, focusIndicator: FocusIndicator);
destroy(): void;
addRegion(name: RegionName, ...bboxproviders: RegionBBoxProvider[]): {
addListener<T extends "click" | "contextmenu" | "dblclick" | "drag" | "wheel" | "hover" | "drag-start" | "drag-end" | "leave" | "enter" | "page-left" | KeyNavEventType>(type: T, handler: (event: TypeInfo[T]) => void, triggeringStates?: InteractionState): () => void;
addRegion(name: RegionName, ...nodes: RegionNodeType[]): {
addListener<T extends "click" | "contextmenu" | "dblclick" | "drag" | "wheel" | "hover" | "drag-start" | "drag-end" | "leave" | "enter" | "page-left">(type: T, handler: (event: TypeInfo[T]) => void, triggeringStates?: InteractionState): () => void;
};
updateRegion(name: RegionName, ...bboxprovider: RegionBBoxProvider[]): void;
updateRegion(name: RegionName, ...nodes: RegionNodeType[]): void;
getRegion(name: RegionName): {
addListener<T extends "click" | "contextmenu" | "dblclick" | "drag" | "wheel" | "hover" | "drag-start" | "drag-end" | "leave" | "enter" | "page-left" | KeyNavEventType>(type: T, handler: (event: TypeInfo[T]) => void, triggeringStates?: InteractionState): () => void;
addListener<T extends "click" | "contextmenu" | "dblclick" | "drag" | "wheel" | "hover" | "drag-start" | "drag-end" | "leave" | "enter" | "page-left">(type: T, handler: (event: TypeInfo[T]) => void, triggeringStates?: InteractionState): () => void;
};

@@ -53,9 +54,3 @@ listenAll<T extends RegionEvent['type']>(type: T, handler: (event: TypeInfo[T]) => void, triggeringStates?: InteractionState): () => void;

private pickRegion;
private getTabRegion;
private getNextInteractableTabIndex;
private validateCurrentTabIndex;
private onBrowserFocus;
private onTab;
private onNav;
}
export {};

@@ -1,2 +0,4 @@

import type { BBoxContainsTester, BBoxProvider } from '../../util/bboxinterface';
import { BBox } from '../../scene/bbox';
import { Node } from '../../scene/node';
import type { BBoxContainsTester, BBoxProvider, BBoxValues } from '../../util/bboxinterface';
export declare enum REGIONS {

@@ -16,5 +18,19 @@ TITLE = "title",

export type RegionName = `${REGIONS}`;
export type RegionBBoxProvider = BBoxProvider<BBoxContainsTester & {
width: number;
height: number;
}>;
export type RegionBBoxProvider = BBoxProvider<BBoxContainsTester & BBoxValues>;
export declare class NodeRegionBBoxProvider implements RegionBBoxProvider {
private readonly node;
private readonly overrideId?;
constructor(node: Node, overrideId?: string | undefined);
get id(): string;
get visible(): boolean;
toCanvasBBox(): BBox;
fromCanvasPoint(x: number, y: number): {
x: number;
y: number;
};
}
export declare class SimpleRegionBBoxProvider extends NodeRegionBBoxProvider {
private readonly bboxFn;
constructor(node: Node, bboxFn: () => BBox, overrideId?: string);
toCanvasBBox(): BBox;
}
import type { AgIconName, AgToolbarOptions } from 'ag-charts-types';
import type { DOMManager } from '../../dom/domManager';
import type { BBox } from '../../scene/bbox';
import { BaseManager } from '../baseManager';
import type { DOMManager } from '../dom/domManager';
import { type ToolbarGroup } from '../toolbar/toolbarTypes';
type EventTypes = 'button-pressed' | 'button-toggled' | 'button-updated' | 'button-moved' | 'cancelled' | 'floating-anchor-changed' | 'group-toggled' | 'proxy-group-options';
type ToolbarEvent = ToolbarButtonPressedEvent | ToolbarButtonToggledEvent | ToolbarButtonUpdatedEvent | ToolbarButtonMovedEvent | ToolbarCancelledEvent | ToolbarFloatingAnchorChangedEvent | ToolbarGroupToggledEvent | ToolbarProxyGroupOptionsEvent;
import { type ToolbarAnchor, type ToolbarGroup } from '../toolbar/toolbarTypes';
type EventTypes = 'button-pressed' | 'button-toggled' | 'button-updated' | 'button-moved' | 'cancelled' | 'floating-anchor-changed' | 'group-toggled' | 'group-updated' | 'group-moved' | 'proxy-group-options';
type ToolbarEvent = ToolbarButtonPressedEvent | ToolbarButtonToggledEvent | ToolbarButtonUpdatedEvent | ToolbarButtonMovedEvent | ToolbarCancelledEvent | ToolbarFloatingAnchorChangedEvent | ToolbarGroupToggledEvent | ToolbarGroupUpdatedEvent | ToolbarGroupMovedEvent | ToolbarProxyGroupOptionsEvent;
type ToolbarEventButtonValue<T extends ToolbarGroup> = NonNullable<NonNullable<AgToolbarOptions[T]>['buttons']>[number]['value'];
interface Event<T extends EventTypes> {
interface ToolbarBaseEvent<T extends EventTypes> {
type: T;
group: ToolbarGroup;
}
export interface ToolbarGroupToggledEvent extends Event<'group-toggled'> {
export interface ToolbarGroupToggledEvent extends ToolbarBaseEvent<'group-toggled'> {
caller: string;

@@ -18,17 +18,18 @@ active: boolean | undefined;

}
export interface ToolbarCancelledEvent extends Event<'cancelled'> {
export interface ToolbarGroupUpdatedEvent extends ToolbarBaseEvent<'group-updated'> {
}
export interface ToolbarFloatingAnchorChangedEvent extends Event<'floating-anchor-changed'> {
anchor: {
x: number;
y: number;
position?: 'right' | 'above' | 'above-left';
};
export interface ToolbarGroupMovedEvent extends ToolbarBaseEvent<'group-moved'> {
}
export interface ToolbarButtonPressedEvent<T = any> extends Event<'button-pressed'> {
export interface ToolbarCancelledEvent extends ToolbarBaseEvent<'cancelled'> {
}
export interface ToolbarFloatingAnchorChangedEvent extends ToolbarBaseEvent<'floating-anchor-changed'> {
anchor: ToolbarAnchor;
}
export interface ToolbarButtonPressedEvent<T = any> extends ToolbarBaseEvent<'button-pressed'> {
id: string;
value: T;
rect: BBox;
sourceEvent: Event;
}
export interface ToolbarButtonToggledEvent<_T = any> extends Event<'button-toggled'> {
export interface ToolbarButtonToggledEvent<_T = any> extends ToolbarBaseEvent<'button-toggled'> {
id: string;

@@ -38,4 +39,5 @@ active: boolean;

visible: boolean;
checked: boolean;
}
export interface ToolbarButtonUpdatedEvent extends Event<'button-updated'> {
export interface ToolbarButtonUpdatedEvent extends ToolbarBaseEvent<'button-updated'> {
id: string;

@@ -46,3 +48,3 @@ label?: string | undefined;

}
export interface ToolbarButtonMovedEvent<T = any> extends Event<'button-moved'> {
export interface ToolbarButtonMovedEvent<T = any> extends ToolbarBaseEvent<'button-moved'> {
value: T;

@@ -52,3 +54,3 @@ rect: BBox;

}
export interface ToolbarProxyGroupOptionsEvent extends Event<'proxy-group-options'> {
export interface ToolbarProxyGroupOptionsEvent extends ToolbarBaseEvent<'proxy-group-options'> {
caller: string;

@@ -60,3 +62,3 @@ options: Partial<NonNullable<AgToolbarOptions[ToolbarGroup]>>;

static isChildElement(domManager: DOMManager, element: HTMLElement): boolean;
pressButton(group: ToolbarGroup, id: string, value: any, rect: BBox): void;
pressButton(group: ToolbarGroup, id: string, value: any, rect: BBox, sourceEvent: Event): void;
cancel(group: ToolbarGroup): void;

@@ -67,2 +69,3 @@ toggleButton<T extends ToolbarGroup>(group: T, id: string, options: {

visible?: boolean;
checked?: boolean;
}): void;

@@ -73,2 +76,3 @@ updateButton<T extends ToolbarGroup>(group: T, id: string, options: {

fill?: string;
strokeWidth?: number;
}): void;

@@ -79,7 +83,5 @@ toggleGroup(caller: string, group: ToolbarGroup, options: {

}): void;
changeFloatingAnchor(group: ToolbarGroup, anchor: {
x: number;
y: number;
position?: 'right' | 'above' | 'above-left';
}): void;
updateGroup<T extends ToolbarGroup>(group: T): void;
groupMoved<T extends ToolbarGroup>(group: T): void;
changeFloatingAnchor(group: ToolbarGroup, anchor: ToolbarAnchor): void;
buttonMoved(group: ToolbarGroup, value: any, rect: BBox, groupRect: BBox): void;

@@ -86,0 +88,0 @@ proxyGroupOptions<T extends ToolbarGroup>(caller: string, group: T, options: Partial<AgToolbarOptions[T]>): void;

@@ -1,2 +0,2 @@

import type { DOMManager } from '../dom/domManager';
import type { DOMManager } from '../../dom/domManager';
import type { ErrorBoundSeriesNodeDatum, SeriesNodeDatum } from '../series/seriesTypes';

@@ -3,0 +3,0 @@ import type { Tooltip, TooltipContent, TooltipMeta } from '../tooltip/tooltip';

@@ -0,3 +1,6 @@

import type { AgZoomRange, AgZoomRatio } from 'ag-charts-types';
import type { MementoOriginator } from '../../api/state/memento';
import { BaseManager } from '../baseManager';
import { ChartAxisDirection } from '../chartAxisDirection';
import type { LayoutManager } from '../layout/layoutManager';
export interface ZoomState {

@@ -11,2 +14,12 @@ min: number;

}
export interface DefinedZoomState {
x: ZoomState;
y: ZoomState;
}
export type ZoomMemento = {
rangeX?: AgZoomRange;
rangeY?: AgZoomRange;
ratioX?: AgZoomRatio;
ratioY?: AgZoomRatio;
};
export interface ZoomChangeEvent extends AxisZoomState {

@@ -21,2 +34,5 @@ type: 'zoom-change';

}
export interface ZoomRestoreEvent extends ZoomMemento {
type: 'restore-zoom';
}
export type ChartAxisLike = {

@@ -27,3 +43,3 @@ id: string;

};
type ZoomEvents = ZoomChangeEvent | ZoomPanStartEvent;
type ZoomEvents = ZoomChangeEvent | ZoomPanStartEvent | ZoomRestoreEvent;
/**

@@ -33,6 +49,29 @@ * Manages the current zoom state for a chart. Tracks the requested zoom from distinct dependents

*/
export declare class ZoomManager extends BaseManager<ZoomEvents['type'], ZoomEvents> {
export declare class ZoomManager extends BaseManager<ZoomEvents['type'], ZoomEvents> implements MementoOriginator<ZoomMemento> {
mementoOriginatorKey: "zoom";
private readonly axisZoomManagers;
private readonly state;
private readonly rejectCallbacks;
private axes?;
addLayoutListeners(layoutManager: LayoutManager): void;
createMemento(): {
rangeX: {
start: any;
end: any;
} | undefined;
rangeY: {
start: any;
end: any;
} | undefined;
ratioX: {
start: number;
end: number;
};
ratioY: {
start: number;
end: number;
};
};
guardMemento(blob: unknown): blob is ZoomMemento;
restoreMemento(_version: string, _mementoVersion: string, memento: ZoomMemento): void;
updateAxes(axes: Array<ChartAxisLike>): void;

@@ -49,3 +88,5 @@ updateZoom(callerId: string, newZoom?: AxisZoomState, canChangeInitial?: boolean, rejectCallback?: (stateId: string) => void): void;

private applyChanges;
private getRangeDirection;
private getDefinedZoom;
}
export {};

@@ -0,4 +1,4 @@

import type { FocusIndicator } from '../dom/focusIndicator';
import { BBox } from '../scene/bbox';
import type { Path } from '../scene/shape/path';
import type { FocusIndicator } from './dom/focusIndicator';
import type { TooltipPointerEvent } from './tooltip/tooltip';

@@ -5,0 +5,0 @@ type PickProperties = {

@@ -13,10 +13,11 @@ /**

SERIES_CROSSHAIR_ZINDEX = 7,
SERIES_LABEL_ZINDEX = 8,
SERIES_CROSSLINE_LINE_ZINDEX = 9,
SERIES_ANNOTATION_ZINDEX = 10,
CHART_ANNOTATION_ZINDEX = 11,
CHART_ANNOTATION_FOCUSED_ZINDEX = 12,
LEGEND_ZINDEX = 13,
NAVIGATOR_ZINDEX = 14,
FOREGROUND_ZINDEX = 15
CHART_OVERLAY_ZINDEX = 8,
SERIES_LABEL_ZINDEX = 9,
SERIES_CROSSLINE_LINE_ZINDEX = 10,
SERIES_ANNOTATION_ZINDEX = 11,
CHART_ANNOTATION_ZINDEX = 12,
CHART_ANNOTATION_FOCUSED_ZINDEX = 13,
LEGEND_ZINDEX = 14,
NAVIGATOR_ZINDEX = 15,
FOREGROUND_ZINDEX = 16
}

@@ -76,2 +76,3 @@ import type { AgChartLegendClickEvent, AgChartLegendDoubleClickEvent, AgChartLegendLabelFormatterParams, AgChartLegendListeners, AgChartLegendOrientation, AgChartLegendPosition, FontStyle, FontWeight, Formatter } from 'ag-charts-types';

private _data;
private _symbolsDirty;
set data(value: CategoryLegendDatum[]);

@@ -101,2 +102,3 @@ get data(): CategoryLegendDatum[];

private readonly proxyLegendPagination;
private readonly proxyLegendItemDescription;
private proxyPrevButton?;

@@ -130,2 +132,3 @@ private proxyNextButton?;

private calcLayout;
private isCustomMarker;
private calcSymbolsEnabled;

@@ -163,2 +166,3 @@ private calcSymbolsLengths;

private getItemAriaText;
private getItemAriaDescription;
private positionLegend;

@@ -165,0 +169,0 @@ private calculateLegendDimensions;

import type { FontStyle, FontWeight } from 'ag-charts-types';
import type { ListSwitch } from '../dom/proxyInteractionService';
import { BBox } from '../scene/bbox';

@@ -7,3 +8,4 @@ import { Group } from '../scene/group';

import type { Marker } from './marker/marker';
export declare class LegendMarkerLabel extends Group {
declare const LegendMarkerLabel_base: new (...args: any[]) => import("../scene/transformable").TranslatableType<Group>;
export declare class LegendMarkerLabel extends LegendMarkerLabel_base {
static readonly className = "MarkerLabel";

@@ -17,3 +19,3 @@ private readonly label;

destroy(): void;
proxyButton?: HTMLButtonElement;
proxyButton?: ListSwitch;
pageIndex: number;

@@ -37,4 +39,6 @@ text?: string;

spacing: number;
isCustomMarker: boolean;
}[]): void;
protected computeBBox(): BBox;
}
export {};

@@ -1,5 +0,5 @@

import type { AgCartesianChartOptions, AgFlowProportionChartOptions, AgHierarchyChartOptions, AgPolarChartOptions, AgTopologyChartOptions } from 'ag-charts-types';
import type { AgCartesianChartOptions, AgCartesianSeriesOptions, AgFlowProportionChartOptions, AgFlowProportionSeriesOptions, AgGaugeChartOptions, AgGaugeOptions, AgHierarchyChartOptions, AgHierarchySeriesOptions, AgPolarChartOptions, AgPolarSeriesOptions, AgTopologyChartOptions, AgTopologySeriesOptions } from 'ag-charts-types';
import type { AgChartOptions } from 'ag-charts-types';
export type AxesOptionsTypes = NonNullable<AgCartesianChartOptions['axes']>[number];
export type SeriesOptionsTypes = NonNullable<AgChartOptions['series']>[number];
export type SeriesOptionsTypes = AgCartesianSeriesOptions | AgPolarSeriesOptions | AgHierarchySeriesOptions | AgTopologySeriesOptions | AgFlowProportionSeriesOptions | AgGaugeOptions;
export type SeriesType = SeriesOptionsTypes['type'];

@@ -16,4 +16,5 @@ export declare function optionsType(input: {

export declare function isAgFlowProportionChartOptions(input: AgChartOptions): input is AgFlowProportionChartOptions;
export declare function isAgGaugeChartOptions(input: any): input is AgGaugeChartOptions;
export declare function isAgPolarChartOptionsWithSeriesBasedLegend(input: AgChartOptions): input is AgPolarChartOptions;
export declare function isSeriesOptionType(input?: string): input is NonNullable<SeriesType>;
export declare function isAxisOptionType(input?: string): input is NonNullable<AxesOptionsTypes>['type'];

@@ -10,13 +10,8 @@ import { BBox } from '../../scene/bbox';

};
export declare class Marker extends Path {
static center: Point;
declare class InternalMarker extends Path {
x: number;
y: number;
size: number;
repeat?: {
x: number;
y: number;
}[];
private isBuiltIn;
protected computeBBox(): BBox;
computeTransformedBBox(): BBox;
protected applyPath(s: number, moves: MarkerPathMove[]): void;

@@ -26,1 +21,6 @@ protected executeFill(ctx: CanvasContext, path?: Path2D | undefined): void;

}
declare const Marker_base: new (...args: any[]) => import("../../scene/transformable").RotatableType<import("../../scene/transformable").ScalableType<import("../../scene/transformable").TranslatableType<InternalMarker>>>;
export declare class Marker extends Marker_base {
static center: Point;
}
export {};
import type { LayoutContext, ModuleInstance } from '../../module/baseModule';
import { BaseModuleInstance } from '../../module/module';
import type { ModuleContext } from '../../module/moduleContext';
import type { BBox } from '../../scene/bbox';
import type { Group } from '../../scene/group';
import { type LayoutCompleteEvent } from '../layout/layoutManager';
import { RangeHandle } from './shapes/rangeHandle';

@@ -34,6 +34,4 @@ import { RangeMask } from './shapes/rangeMask';

private updateGroupVisibility;
performLayout(ctx: LayoutContext): Promise<LayoutContext>;
performCartesianLayout(opts: {
seriesRect: BBox;
}): Promise<void>;
protected onLayoutStart(ctx: LayoutContext): void;
onLayoutComplete(opts: LayoutCompleteEvent): void;
private onHover;

@@ -40,0 +38,0 @@ private onDragStart;

@@ -15,5 +15,4 @@ import { BBox } from '../../../scene/bbox';

protected computeBBox(): BBox;
computeTransformedBBox(): BBox;
isPointInPath(x: number, y: number): boolean;
updatePath(): void;
}

@@ -0,3 +1,3 @@

import type { LocaleManager } from '../../locale/localeManager';
import { BaseProperties } from '../../util/properties';
import type { LocaleManager } from '../locale/localeManager';
import { Overlay } from './overlay';

@@ -4,0 +4,0 @@ export declare class ChartOverlays extends BaseProperties {

@@ -0,5 +1,5 @@

import type { LocaleManager } from '../../locale/localeManager';
import type { BBox } from '../../scene/bbox';
import { BaseProperties } from '../../util/properties';
import type { AnimationManager } from '../interaction/animationManager';
import type { LocaleManager } from '../locale/localeManager';
export declare const DEFAULT_OVERLAY_CLASS = "ag-chart-overlay";

@@ -6,0 +6,0 @@ export declare const DEFAULT_OVERLAY_DARK_CLASS = "ag-chart-dark-overlay";

import type { AgChartLegendOrientation, FontStyle, FontWeight } from 'ag-charts-types';
import type { Node } from '../../scene/node';
import { type RotatableType } from '../../scene/transformable';
import { BaseProperties } from '../../util/properties';

@@ -69,7 +70,7 @@ import { ChartUpdateType } from '../chartUpdateType';

private _nextButton;
set nextButton(value: Marker);
get nextButton(): Marker;
set nextButton(value: RotatableType<Marker>);
get nextButton(): RotatableType<Marker>;
private _previousButton;
set previousButton(value: Marker);
get previousButton(): Marker;
set previousButton(value: RotatableType<Marker>);
get previousButton(): RotatableType<Marker>;
update(): void;

@@ -83,4 +84,2 @@ private updatePositions;

private enableOrDisableButtons;
private nextButtonContainsPoint;
private previousButtonContainsPoint;
clickNext(): void;

@@ -87,0 +86,0 @@ clickPrevious(): void;

@@ -0,3 +1,3 @@

import type { LayoutContext } from '../module/baseModule';
import type { ChartOptions } from '../module/optionsModule';
import { BBox } from '../scene/bbox';
import { Padding } from '../util/padding';

@@ -12,7 +12,6 @@ import type { TransferableResources } from './chart';

getChartType(): "polar";
performLayout(): Promise<BBox>;
protected performLayout(ctx: LayoutContext): Promise<void>;
protected updateAxes(cx: number, cy: number, radius: number): void;
private computeSeriesRect;
private computeCircle;
private refineCircle;
}

@@ -22,2 +22,3 @@ import type { Direction } from 'ag-charts-types';

protected largestDataInterval?: number;
protected padBandExtent(keys: any[], alignStart?: boolean): [] | [number, number];
getBandScalePadding(): {

@@ -33,2 +34,3 @@ inner: number;

protected getCategoryAxis(): ChartAxis | undefined;
protected getBandwidth(xAxis: ChartAxis): number | undefined;
protected updateGroupScale(xAxis: ChartAxis): {

@@ -35,0 +37,0 @@ barWidth: number;

@@ -13,2 +13,3 @@ import type { AgAreaSeriesLabelFormatterParams, AgAreaSeriesOptionsKeys, AgCartesianSeriesTooltipRendererParams, AgSeriesAreaOptions } from 'ag-charts-types';

yName?: string;
yFilterKey: string | undefined;
normalizedTo?: number;

@@ -15,0 +16,0 @@ fill: string;

@@ -5,12 +5,5 @@ import type { FontStyle, FontWeight } from 'ag-charts-types';

import type { Path } from '../../../scene/shape/path';
import type { ProcessedOutputDiff } from '../../data/dataModel';
import type { SeriesNodeDatum } from '../seriesTypes';
import type { CartesianSeriesNodeDataContext, CartesianSeriesNodeDatum } from './cartesianSeries';
import { type Span } from './lineInterpolation';
export declare enum AreaSeriesTag {
Fill = 0,
Stroke = 1,
Marker = 2,
Label = 3
}
export interface AreaPathPoint {

@@ -51,2 +44,3 @@ point: {

readonly cumulativeValue: number;
readonly selected: boolean | undefined;
}

@@ -71,4 +65,5 @@ export interface LabelSelectionDatum extends Readonly<Point>, SeriesNodeDatum {

stackVisible: boolean;
crossFiltering: boolean;
}
export declare function prepareAreaPathAnimation(newData: AreaSeriesNodeDataContext, oldData: AreaSeriesNodeDataContext, diff: ProcessedOutputDiff | undefined): {
export declare function prepareAreaPathAnimation(newData: AreaSeriesNodeDataContext, oldData: AreaSeriesNodeDataContext): {
status: NodeUpdateState;

@@ -82,39 +77,13 @@ fill: {

};
pathProperties: {
fromFn: (_path: Path) => {
finish: {
visible: boolean;
};
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
} | {
start: {
visible: boolean;
};
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
} | {
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
};
toFn: (_path: Path) => {
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
};
};
pathProperties: import("../../../motion/fromToMotion").FromToFns<Path, any, unknown>;
};
marker: {
fromFn: (marker: import("../../marker/marker").Marker, datum: import("./pathUtil").PathNodeDatumLike) => {
opacity: number;
} | {
opacity: number;
translationX: number | undefined;
translationY: number | undefined;
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
stroke: {
status: NodeUpdateState;
path: {
addPhaseFn: (ratio: number, path: Path) => void;
updatePhaseFn: (ratio: number, path: Path) => void;
removePhaseFn: (ratio: number, path: Path) => void;
};
toFn: (_marker: import("../../marker/marker").Marker, datum: import("./pathUtil").PathNodeDatumLike) => {
opacity: number;
} | {
translationX: number | undefined;
translationY: number | undefined;
opacity: number;
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
};
pathProperties: import("../../../motion/fromToMotion").FromToFns<Path, any, unknown>;
};
} | undefined;

@@ -7,3 +7,3 @@ import type { AgBarSeriesItemStylerParams, AgBarSeriesStyle, Styler } from 'ag-charts-types';

import type { DropShadow } from '../../../scene/dropShadow';
import type { Node } from '../../../scene/node';
import type { Group } from '../../../scene/group';
import type { Rect } from '../../../scene/shape/rect';

@@ -76,3 +76,3 @@ import type { ChartAxis } from '../../chartAxis';

height: number;
} | undefined, barGroup: Node, seriesRect: BBox | undefined): BBox | undefined;
} | undefined, barGroup: Group, seriesRect: BBox | undefined): BBox | undefined;
export {};

@@ -16,2 +16,3 @@ import type { AgBubbleSeriesLabelFormatterParams, AgBubbleSeriesOptions, AgBubbleSeriesOptionsKeys, AgBubbleSeriesStyle, AgBubbleSeriesTooltipRendererParams, BubbleSeriesItemStylerParams, LabelPlacement, Styler } from 'ag-charts-types';

readonly fill: string | undefined;
readonly selected: boolean | undefined;
}

@@ -37,2 +38,5 @@ declare class BubbleSeriesMarker extends SeriesMarker<AgBubbleSeriesOptionsKeys> {

colorKey?: string;
xFilterKey: string | undefined;
yFilterKey: string | undefined;
sizeFilterKey: string | undefined;
xName?: string;

@@ -39,0 +43,0 @@ yName?: string;

import type { AnimationValue } from '../../../motion/animation';
import { BBox } from '../../../scene/bbox';
import { Group } from '../../../scene/group';
import { TranslatableGroup } from '../../../scene/group';
import type { ZIndexSubOrder } from '../../../scene/layersManager';

@@ -95,3 +95,3 @@ import type { Node, NodeWithOpacity } from '../../../scene/node';

private readonly markerGroup;
readonly labelGroup: Group;
readonly labelGroup: TranslatableGroup;
private datumSelection;

@@ -98,0 +98,0 @@ private markerSelection;

@@ -1,4 +0,3 @@

import type { ExtendedPath2D } from '../../../scene/extendedPath2D';
import type { Point } from '../../../scene/point';
export type Span = {
export type LinearSpan = {
type: 'linear';

@@ -10,3 +9,4 @@ moveTo: boolean;

y1: number;
} | {
};
export type CubicSpan = {
type: 'cubic';

@@ -22,3 +22,4 @@ moveTo: boolean;

cp3y: number;
} | {
};
export type StepSpan = {
type: 'step';

@@ -32,4 +33,4 @@ moveTo: boolean;

};
export type Span = LinearSpan | CubicSpan | StepSpan;
export declare function spanRange(span: Span): [Point, Point];
export declare function reverseSpan(span: Span): Span;
export declare function collapseSpanToPoint(span: Span, point: Point): Span;

@@ -39,3 +40,2 @@ export declare function rescaleSpan(span: Span, nextStart: Point, nextEnd: Point): Span;

export declare function clipSpanX(span: Span, x0: number, x1: number): Span;
export declare function interpolateSpans(a: Span, b: Span, ratio: number): Span;
export declare enum SpanJoin {

@@ -46,3 +46,2 @@ None = 0,

}
export declare function plotSpan(path: ExtendedPath2D, span: Span, moveTo?: SpanJoin): void;
export declare function linearPoints(points: Iterable<Point>): Span[];

@@ -49,0 +48,0 @@ declare const lineSteps: {

@@ -14,2 +14,3 @@ import type { CartesianSeriesNodeDataContext } from './cartesianSeries';

visible: boolean;
zeroData?: SpanDatum[];
}

@@ -20,10 +21,7 @@ export interface SpanInterpolation {

}
export declare enum SplitMode {
Zero = 0,
Divide = 1
export interface SpanInterpolationResult {
removed: SpanInterpolation[];
moved: SpanInterpolation[];
added: SpanInterpolation[];
}
export declare function pairUpSpans(newData: SpanContext, oldData: SpanContext, splitMode: SplitMode): {
added: SpanInterpolation[];
moved: SpanInterpolation[];
removed: SpanInterpolation[];
};
export declare function pairUpSpans(newData: SpanContext, oldData: SpanContext): SpanInterpolationResult;

@@ -16,4 +16,7 @@ import type { ModuleContext } from '../../../module/moduleContext';

import { type LineNodeDatum, LineSeriesProperties } from './lineSeriesProperties';
type LineAnimationData = CartesianAnimationData<Group, LineNodeDatum>;
export declare class LineSeries extends CartesianSeries<Group, LineSeriesProperties, LineNodeDatum> {
interface LineSeriesNodeDataContext extends CartesianSeriesNodeDataContext<LineNodeDatum> {
crossFiltering: boolean;
}
type LineAnimationData = CartesianAnimationData<Group, LineNodeDatum, LineNodeDatum, LineSeriesNodeDataContext>;
export declare class LineSeries extends CartesianSeries<Group, LineSeriesProperties, LineNodeDatum, LineNodeDatum, LineSeriesNodeDataContext> {
static readonly className = "LineSeries";

@@ -34,2 +37,3 @@ static readonly type: "line";

visible: boolean;
crossFiltering: boolean;
} | undefined>;

@@ -36,0 +40,0 @@ protected isPathOrSelectionDirty(): boolean;

@@ -22,2 +22,3 @@ import type { AgLineSeriesLabelFormatterParams, AgLineSeriesOptions, AgLineSeriesOptionsKeys, AgLineSeriesTooltipRendererParams, FontStyle, FontWeight } from 'ag-charts-types';

};
readonly selected: boolean | undefined;
}

@@ -29,2 +30,3 @@ export declare class LineSeriesProperties extends CartesianSeriesProperties<AgLineSeriesOptions> {

yName?: string;
yFilterKey: string | undefined;
stackGroup?: string;

@@ -31,0 +33,0 @@ normalizedTo?: number;

@@ -1,2 +0,2 @@

import { type NodeUpdateState } from '../../../motion/fromToMotion';
import { type FromToFns, type NodeUpdateState } from '../../../motion/fromToMotion';
import type { Path } from '../../../scene/shape/path';

@@ -62,22 +62,5 @@ import type { ProcessedOutputDiff } from '../../data/dataModel';

export declare function determinePathStatus(newData: LineContextLike, oldData: LineContextLike, pairData: PathPoint[]): "added" | "removed" | "updated" | "no-op";
export declare function prepareLinePathPropertyAnimation(status: NodeUpdateState, visibleToggleMode: 'fade' | 'none'): {
fromFn: (_path: Path) => {
finish: {
visible: boolean;
};
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
} | {
start: {
visible: boolean;
};
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
} | {
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
};
toFn: (_path: Path) => {
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
};
};
export declare function prepareLinePathPropertyAnimation(status: NodeUpdateState, visibleToggleMode: 'fade' | 'none'): FromToFns<Path, any, unknown>;
export declare function prepareLinePathAnimationFns(newData: LineContextLike, oldData: LineContextLike, pairData: PathPoint[], visibleToggleMode: 'fade' | 'none', interpolation: InterpolationProperties | undefined, render: (pairData: PathPoint[], ratios: Partial<Record<PathPointChange, number>>, path: Path, interpolation: InterpolationProperties | undefined) => void): {
status: string;
status: "added" | "removed" | "updated" | "no-op";
path: {

@@ -88,20 +71,3 @@ addPhaseFn: (ratio: number, path: Path) => void;

};
pathProperties: {
fromFn: (_path: Path) => {
finish: {
visible: boolean;
};
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
} | {
start: {
visible: boolean;
};
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
} | {
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
};
toFn: (_path: Path) => {
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
};
};
pathProperties: FromToFns<Path, any, unknown>;
};

@@ -116,3 +82,3 @@ export declare function prepareLinePathAnimation(newData: LineContextLike, oldData: LineContextLike, diff: ProcessedOutputDiff | undefined, interpolation: InterpolationProperties | undefined): {

translationY: number | undefined;
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
phase: "none" | "trailing" | "initial" | "remove" | "update" | "add" | "end";
};

@@ -125,7 +91,7 @@ toFn: (_marker: import("../../marker/marker").Marker, datum: PathNodeDatumLike) => {

opacity: number;
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
phase: "none" | "trailing" | "initial" | "remove" | "update" | "add" | "end";
};
};
hasMotion: boolean;
status: string;
status: "added" | "removed" | "updated" | "no-op";
path: {

@@ -136,21 +102,4 @@ addPhaseFn: (ratio: number, path: Path) => void;

};
pathProperties: {
fromFn: (_path: Path) => {
finish: {
visible: boolean;
};
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
} | {
start: {
visible: boolean;
};
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
} | {
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
};
toFn: (_path: Path) => {
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
};
};
pathProperties: FromToFns<Path, any, unknown>;
} | undefined;
export {};

@@ -5,3 +5,3 @@ import type { NodeUpdateState } from '../../../motion/fromToMotion';

import type { Node } from '../../../scene/node';
import type { Point } from '../../../scene/point';
import type { Point, SizedPoint } from '../../../scene/point';
import type { Selection } from '../../../scene/selection';

@@ -42,3 +42,3 @@ import type { AnimationManager } from '../../interaction/animationManager';

translationY: number | undefined;
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
phase: "none" | "trailing" | "initial" | "remove" | "update" | "add" | "end";
};

@@ -51,3 +51,3 @@ toFn: (_marker: Marker, datum: PathNodeDatumLike) => {

opacity: number;
phase: "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add";
phase: "none" | "trailing" | "initial" | "remove" | "update" | "add" | "end";
};

@@ -63,4 +63,4 @@ };

export declare function computeMarkerFocusBounds<TDatum extends {
point: Point;
point: Point & SizedPoint;
}>(series: MarkerSeries<TDatum>, { datumIndex }: PickFocusInputs): BBox | undefined;
export {};

@@ -16,2 +16,3 @@ import type { AgScatterSeriesItemStylerParams, AgScatterSeriesLabelFormatterParams, AgScatterSeriesOptions, AgScatterSeriesOptionsKeys, AgScatterSeriesTooltipRendererParams, AgSeriesMarkerStyle, Styler } from 'ag-charts-types';

readonly fill: string | undefined;
readonly selected: boolean | undefined;
}

@@ -26,2 +27,4 @@ declare class ScatterSeriesLabel extends Label<AgScatterSeriesLabelFormatterParams> {

colorKey?: string;
xFilterKey: string | undefined;
yFilterKey: string | undefined;
xName?: string;

@@ -28,0 +31,0 @@ yName?: string;

import type { AgDonutSeriesStyle } from 'ag-charts-types';
import type { ModuleContext } from '../../../module/moduleContext';
import { BBox } from '../../../scene/bbox';
import { Group } from '../../../scene/group';
import { Group, TranslatableGroup } from '../../../scene/group';
import type { Point } from '../../../scene/point';

@@ -15,4 +15,3 @@ import { Selection } from '../../../scene/selection';

import { type TooltipContent } from '../../tooltip/tooltip';
import { type SeriesNodeEventTypes, type SeriesNodePickMatch } from '../series';
import { SeriesNodeEvent } from '../series';
import { SeriesNodeEvent, type SeriesNodeEventTypes, type SeriesNodePickMatch } from '../series';
import type { SeriesNodeDatum } from '../seriesTypes';

@@ -76,3 +75,3 @@ import type { DonutInnerLabel } from './donutSeriesProperties';

private readonly calloutLabelSelection;
readonly backgroundGroup: Group;
readonly backgroundGroup: TranslatableGroup;
readonly zerosumRingsGroup: Group;

@@ -79,0 +78,0 @@ readonly zerosumOuterRing: Circle;

import type { AgPieSeriesStyle } from 'ag-charts-types';
import type { ModuleContext } from '../../../module/moduleContext';
import { BBox } from '../../../scene/bbox';
import { Group } from '../../../scene/group';
import { Group, TranslatableGroup } from '../../../scene/group';
import type { Point } from '../../../scene/point';

@@ -13,4 +13,3 @@ import { Sector } from '../../../scene/shape/sector';

import { type TooltipContent } from '../../tooltip/tooltip';
import { type SeriesNodeEventTypes, type SeriesNodePickMatch } from '../series';
import { SeriesNodeEvent } from '../series';
import { SeriesNodeEvent, type SeriesNodeEventTypes, type SeriesNodePickMatch } from '../series';
import type { SeriesNodeDatum } from '../seriesTypes';

@@ -73,3 +72,3 @@ import { PieSeriesProperties } from './pieSeriesProperties';

private readonly calloutLabelSelection;
readonly backgroundGroup: Group;
readonly backgroundGroup: TranslatableGroup;
readonly zerosumRingsGroup: Group;

@@ -76,0 +75,0 @@ readonly zerosumOuterRing: Circle;

@@ -5,5 +5,4 @@ import type { AgChartLabelFormatterParams, AgChartLabelOptions, AgSeriesMarkerStyle, AgSeriesMarkerStylerParams, ISeriesMarker } from 'ag-charts-types';

import type { SeriesOptionInstance, SeriesOptionModule, SeriesType } from '../../module/optionsModuleTypes';
import type { ScaleType } from '../../scale/scale';
import type { BBox } from '../../scene/bbox';
import { Group } from '../../scene/group';
import { Group, TranslatableGroup } from '../../scene/group';
import type { ZIndexSubOrder } from '../../scene/layersManager';

@@ -23,3 +22,2 @@ import type { Node } from '../../scene/node';

import type { DataController } from '../data/dataController';
import type { DatumPropertyDefinition } from '../data/dataModel';
import type { ChartLegendDatum, ChartLegendType } from '../legendDatum';

@@ -63,3 +61,3 @@ import type { Marker } from '../marker/marker';

};
type PickResult = {
export type PickResult = {
pickMode: SeriesNodePickMode;

@@ -69,21 +67,2 @@ match: SeriesNodeDatum;

};
export declare function basicContinuousCheckDatumValidation(value: any): boolean;
export declare function keyProperty<K>(propName: K, scaleType?: ScaleType, opts?: Partial<DatumPropertyDefinition<K>>): DatumPropertyDefinition<K>;
export declare function valueProperty<K>(propName: K, scaleType?: ScaleType, opts?: Partial<DatumPropertyDefinition<K>>): DatumPropertyDefinition<K>;
export declare function rangedValueProperty<K>(propName: K, opts?: Partial<DatumPropertyDefinition<K>> & {
min?: number;
max?: number;
}): DatumPropertyDefinition<K>;
export declare function accumulativeValueProperty<K>(propName: K, scaleType?: ScaleType, opts?: Partial<DatumPropertyDefinition<K>> & {
onlyPositive?: boolean;
}): DatumPropertyDefinition<K>;
export declare function trailingAccumulatedValueProperty<K>(propName: K, scaleType?: ScaleType, opts?: Partial<DatumPropertyDefinition<K>>): DatumPropertyDefinition<K>;
export declare function groupAccumulativeValueProperty<K>(propName: K, mode: 'normal' | 'trailing' | 'window' | 'window-trailing', sum: "current" | "last" | undefined, opts: Partial<DatumPropertyDefinition<K>> & {
rangeId?: string;
groupId: string;
}, scaleType?: ScaleType): (import("../data/dataModel").GroupValueProcessorDefinition<any, any> | import("../data/dataModel").AggregatePropertyDefinition<any, any> | DatumPropertyDefinition<K>)[];
export declare function groupStackValueProperty<K>(propName: K, scaleType: ScaleType | undefined, opts: Partial<DatumPropertyDefinition<K>> & {
rangeId?: string;
groupId: string;
}): (import("../data/dataModel").GroupValueProcessorDefinition<any, any> | DatumPropertyDefinition<K>)[];
export type SeriesNodeEventTypes = 'nodeClick' | 'nodeDoubleClick' | 'nodeContextMenuAction' | 'groupingChanged';

@@ -148,7 +127,7 @@ interface INodeEvent<TEvent extends string = SeriesNodeEventTypes> extends TypedEvent {

readonly rootGroup: Group;
readonly contentGroup: Group;
readonly highlightGroup: Group;
readonly contentGroup: TranslatableGroup;
readonly highlightGroup: TranslatableGroup;
readonly highlightNode: Group;
readonly highlightLabel: Group;
readonly labelGroup: Group;
readonly labelGroup: TranslatableGroup;
readonly annotationGroup: Group;

@@ -158,3 +137,3 @@ chart?: {

isMiniChart: boolean;
placeLabels(): Map<Series<any, any>, PlacedLabel[]>;
placeLabels(padding?: number): Map<Series<any, any>, PlacedLabel[]>;
seriesRect?: BBox;

@@ -235,4 +214,5 @@ };

};
protected updateMarkerStyle<TParams>(markerNode: Marker, marker: ISeriesMarker<TParams>, params: TParams & Omit<AgSeriesMarkerStylerParams<TDatum>, 'seriesId'>, defaultStyle?: AgSeriesMarkerStyle, { applyTranslation }?: {
protected updateMarkerStyle<TParams>(markerNode: Marker, marker: ISeriesMarker<TParams>, params: TParams & Omit<AgSeriesMarkerStylerParams<TDatum>, 'seriesId'>, defaultStyle?: AgSeriesMarkerStyle, { applyTranslation, selected }?: {
applyTranslation?: boolean | undefined;
selected?: boolean | undefined;
}): void;

@@ -239,0 +219,0 @@ getMinRects(_width: number, _height: number): {

@@ -0,1 +1,2 @@

import type { TranslatableGroup } from '../../scene/group';
import type { TypedEvent } from '../../util/observable';

@@ -11,6 +12,6 @@ import { BaseManager } from '../baseManager';

private series;
private lastHover?;
private seriesRect?;
constructor(id: string, chart: {
fireEvent<TEvent extends TypedEvent>(event: TEvent): void;
seriesRoot: TranslatableGroup;
}, ctx: ChartContext);

@@ -17,0 +18,0 @@ seriesChanged(series: Series<any, any>[]): void;

@@ -6,2 +6,3 @@ import type { TypedEvent } from '../../util/observable';

import type { Series } from './series';
import type { SeriesProperties } from './seriesProperties';
/** Manages focus and keyboard navigation concerns around the series area and sub-components. */

@@ -19,4 +20,4 @@ export declare class SeriesAreaFocusManager extends BaseManager {

fireEvent<TEvent extends TypedEvent>(event: TEvent): void;
}, ctx: ChartContext, chartType: 'cartesian' | 'polar' | 'hierarchy' | 'topology' | 'flow-proportion', overlays: ChartOverlays);
seriesChanged(series: Series<any, any>[]): void;
}, ctx: ChartContext, chartType: 'cartesian' | 'polar' | 'hierarchy' | 'topology' | 'flow-proportion' | 'gauge', overlays: ChartOverlays);
seriesChanged(declaredSeries: Series<any, SeriesProperties<any>>[]): void;
dataChanged(): void;

@@ -26,6 +27,5 @@ preSceneRender(): void;

private refreshFocus;
private onTab;
private onFocus;
private onNavVert;
private onNavHori;
private onBrowserFocus;
private onAnimationStart;

@@ -32,0 +32,0 @@ private onBlur;

@@ -0,1 +1,2 @@

import type { TranslatableGroup } from '../../scene/group';
import { BaseManager } from '../baseManager';

@@ -22,2 +23,3 @@ import type { ChartContext } from '../chartContext';

performUpdateType: ChartUpdateType;
seriesRoot: TranslatableGroup;
}, ctx: ChartContext, highlight: ChartHighlight);

@@ -24,0 +26,0 @@ seriesChanged(series: Series<any, any>[]): void;

@@ -0,1 +1,2 @@

import type { TranslatableGroup } from '../../scene/group';
import type { TypedEvent } from '../../util/observable';

@@ -14,2 +15,3 @@ import { BaseManager } from '../baseManager';

private series;
private seriesRect?;
private readonly subManagers;

@@ -19,7 +21,9 @@ constructor(chart: {

fireEvent<TEvent extends TypedEvent>(event: TEvent): void;
}, ctx: ChartContext, chartType: 'cartesian' | 'polar' | 'hierarchy' | 'topology' | 'flow-proportion', tooltip: Tooltip, highlight: ChartHighlight, overlays: ChartOverlays);
seriesRoot: TranslatableGroup;
}, ctx: ChartContext, chartType: 'cartesian' | 'polar' | 'hierarchy' | 'topology' | 'flow-proportion' | 'gauge', tooltip: Tooltip, highlight: ChartHighlight, overlays: ChartOverlays);
dataChanged(): void;
private preSceneRender;
seriesChanged(series: Series<any, any>[]): void;
private layoutComplete;
private onContextMenu;
}

@@ -0,1 +1,2 @@

import type { TranslatableGroup } from '../../scene/group';
import type { TypedEvent } from '../../util/observable';

@@ -14,3 +15,3 @@ import { BaseManager } from '../baseManager';

private series;
private hoverRect?;
private hoverRect;
private lastHover?;

@@ -20,2 +21,3 @@ constructor(id: string, chart: {

fireEvent<TEvent extends TypedEvent>(event: TEvent): void;
seriesRoot: TranslatableGroup;
}, ctx: ChartContext, tooltip: Tooltip);

@@ -22,0 +24,0 @@ seriesChanged(series: Series<any, any>[]): void;

@@ -32,2 +32,3 @@ import type { InteractionRange } from 'ag-charts-types';

visible: boolean;
focusPriority?: number;
showInLegend: boolean;

@@ -34,0 +35,0 @@ cursor: string;

@@ -53,3 +53,3 @@ import type { AgContextMenuOptions } from 'ag-charts-types';

readonly datum: any;
readonly point?: Readonly<SizedPoint>;
readonly point?: Readonly<Point> & SizedPoint;
readonly missing?: boolean;

@@ -56,0 +56,0 @@ readonly enabled?: boolean;

@@ -30,2 +30,3 @@ export declare const IS_DARK_THEME: string;

export declare const DEFAULT_DIVERGING_SERIES_COLOUR_RANGE: string;
export declare const DEFAULT_GAUGE_SERIES_COLOUR_RANGE: string;
export declare const DEFAULT_HIERARCHY_FILLS: string;

@@ -32,0 +33,0 @@ export declare const DEFAULT_HIERARCHY_STROKES: string;

@@ -1,5 +0,4 @@

import type { LayoutContext, ModuleInstance } from '../../module/baseModule';
import type { ModuleInstance } from '../../module/baseModule';
import { BaseModuleInstance } from '../../module/module';
import type { ModuleContext } from '../../module/moduleContext';
import { BBox } from '../../scene/bbox';
import { ToolbarGroupProperties } from './toolbarProperties';

@@ -14,2 +13,3 @@ export declare class Toolbar extends BaseModuleInstance implements ModuleInstance {

zoom: ToolbarGroupProperties;
private dragState;
private readonly horizontalSpacing;

@@ -34,7 +34,15 @@ private readonly verticalSpacing;

private onLayoutComplete;
private toggleButtonsClass;
private onPreDomUpdate;
private onUpdateComplete;
private onButtonUpdated;
private setButtonActive;
private setButtonChecked;
private setButtonGroupFirstLast;
private onButtonToggled;
private onGroupToggled;
private onGroupUpdated;
private onFloatingAnchorChanged;
private positionGroup;
private onGroupMoved;
private buttonRect;

@@ -44,9 +52,7 @@ private onProxyGroupOptions;

private createGroupButtons;
private createAriaToolbar;
private computeAriaOrientation;
private toggleGroup;
private processPendingEvents;
performLayout(ctx: LayoutContext): Promise<LayoutContext>;
performCartesianLayout(opts: {
seriesRect: BBox;
}): Promise<void>;
private onLayoutStart;
private refreshOuterLayout;

@@ -62,5 +68,8 @@ private refreshLocale;

private updateToolbarAriaLabel;
private expandButtonConfig;
private updateButton;
private onButtonPress;
private onDragStart;
private onDrag;
private buttonId;
}

@@ -5,2 +5,3 @@ import { BaseProperties } from '../../util/properties';

fill?: string;
strokeWidth?: number;
}

@@ -13,2 +14,3 @@ export declare class ToolbarGroupProperties extends BaseProperties {

position: ToolbarPosition;
draggable?: boolean;
size: 'small' | 'normal';

@@ -15,0 +17,0 @@ protected buttons?: ButtonConfiguration[];

@@ -28,2 +28,4 @@ export declare const block = "ag-charts-toolbar";

button: {
first: string;
last: string;
active: string;

@@ -33,3 +35,7 @@ hiddenValue: string;

fillVisible: string;
strokeWidthVisible: string;
withTransition: string;
dragHandle: string;
dragging: string;
};
};

@@ -9,5 +9,5 @@ import type { AgIconName } from 'ag-charts-types';

Top = "top",
Left = "left",
Right = "right",
Bottom = "bottom",
Left = "left",
Floating = "floating",

@@ -19,4 +19,3 @@ FloatingTop = "floating-top",

export declare function isAnimatingFloatingPosition(position: ToolbarPosition): position is ToolbarPosition.FloatingTop | ToolbarPosition.FloatingBottom;
export interface ToolbarButton {
section?: string;
export interface ToolbarButtonConfig {
icon?: AgIconName;

@@ -26,4 +25,15 @@ label?: string;

tooltip?: string;
}
export interface ToolbarButton extends ToolbarButtonConfig {
section?: string;
value: any;
id?: string;
role?: 'button' | 'switch';
haspopup?: boolean;
checkedOverrides?: ToolbarButtonConfig;
}
export interface ToolbarAnchor {
x: number;
y: number;
position?: 'above' | 'above-left' | 'right' | 'below';
}
import type { AgTooltipRendererResult, InteractionRange, TextWrap } from 'ag-charts-types';
import type { DOMManager } from '../../dom/domManager';
import { BaseProperties } from '../../util/properties';
import type { DOMManager } from '../dom/domManager';
import type { PointerOffsets } from '../interaction/interactionManager';

@@ -5,0 +5,0 @@ export declare const DEFAULT_TOOLTIP_CLASS = "ag-chart-tooltip";

@@ -0,3 +1,3 @@

import type { LayoutContext } from '../module/baseModule';
import type { ChartOptions } from '../module/optionsModule';
import { BBox } from '../scene/bbox';
import type { TransferableResources } from './chart';

@@ -13,3 +13,3 @@ import { Chart } from './chart';

updateData(): Promise<void>;
performLayout(): Promise<BBox>;
protected performLayout(ctx: LayoutContext): void;
}

@@ -0,6 +1,6 @@

import type { DOMManager } from '../../dom/domManager';
import type { LocaleManager } from '../../locale/localeManager';
import type { DataService } from '../data/dataService';
import type { DOMManager } from '../dom/domManager';
import type { AnimationManager } from '../interaction/animationManager';
import type { LayoutService } from '../layout/layoutService';
import type { LocaleManager } from '../locale/localeManager';
import type { LayoutManager } from '../layout/layoutManager';
import type { ChartOverlays } from '../overlay/chartOverlays';

@@ -12,3 +12,3 @@ import type { ChartLike, UpdateProcessor } from './processor';

private readonly dataService;
private readonly layoutService;
private readonly layoutManager;
private readonly localeManager;

@@ -19,3 +19,3 @@ private readonly animationManager;

private readonly overlayElem;
constructor(chartLike: ChartLike, overlays: ChartOverlays, dataService: DataService<D>, layoutService: LayoutService, localeManager: LocaleManager, animationManager: AnimationManager, domManager: DOMManager);
constructor(chartLike: ChartLike, overlays: ChartOverlays, dataService: DataService<D>, layoutManager: LayoutManager, localeManager: LocaleManager, animationManager: AnimationManager, domManager: DOMManager);
destroy(): void;

@@ -22,0 +22,0 @@ private onLayoutComplete;

import type { Scale } from '../../scale/scale';
import type { Group } from '../../scene/group';
import type { Padding } from '../../util/padding';
import type { Caption } from '../caption';
/** Interface to abstract from the actual chart implementation. */
export interface ChartLike {
axes: Array<AxisLike>;
series: Array<SeriesLike>;
axes: AxisLike[];
series: SeriesLike[];
seriesArea: {

@@ -14,6 +13,2 @@ clip?: boolean;

padding: Padding;
titlePadding: number;
title: Caption;
subtitle: Caption;
footnote: Caption;
}

@@ -20,0 +15,0 @@ export interface AxisLike {

@@ -16,2 +16,12 @@ import type { BBox } from '../scene/bbox';

}
export interface PreDomUpdateEvent {
type: 'pre-dom-update';
minRect?: undefined;
minVisibleRect?: undefined;
}
export interface PreSceneRenderEvent {
type: 'pre-scene-render';
minRect?: BBox;
minVisibleRect?: BBox;
}
export type UpdateOpts = {

@@ -25,4 +35,4 @@ forceNodeDataRefresh?: boolean;

};
type UpdateEventTypes = 'update-complete' | 'pre-scene-render';
type UpdateEvents = UpdateCompleteEvent | PreSceneRenderEvent;
type UpdateEventTypes = 'update-complete' | 'pre-dom-update' | 'pre-scene-render';
type UpdateEvents = UpdateCompleteEvent | PreDomUpdateEvent | PreSceneRenderEvent;
export declare class UpdateService extends Listeners<UpdateEventTypes, (event: UpdateEvents) => void> {

@@ -36,2 +46,3 @@ private readonly updateCallback;

}): void;
dispatchPreDomUpdate(): void;
dispatchPreSceneRender(rects?: {

@@ -38,0 +49,0 @@ minRect: BBox;

@@ -6,6 +6,7 @@ import * as fromToMotion from './motion/fromToMotion';

export { ChangeDetectableProperties } from './scene/util/changeDetectableProperties';
export { Group } from './scene/group';
export { Group, ScalableGroup, RotatableGroup, TranslatableGroup } from './scene/group';
export { Scene } from './scene/scene';
export { Node, PointerEvents, RedrawType, SceneChangeDetection } from './scene/node';
export type { RenderContext } from './scene/node';
export { Rotatable, Translatable, Transformable, Scalable } from './scene/transformable';
export { Selection } from './scene/selection';

@@ -15,3 +16,5 @@ export type { Point, SizedPoint } from './scene/point';

export { Line } from './scene/shape/line';
export { LinearGradientFill } from './scene/shape/linearGradientFill';
export { Gradient, type GradientColorStop } from './scene/gradient/gradient';
export { LinearGradient } from './scene/gradient/linearGradient';
export { ConicGradient } from './scene/gradient/conicGradient';
export { Path, ScenePathChangeDetection } from './scene/shape/path';

@@ -25,5 +28,5 @@ export { Rect } from './scene/shape/rect';

export { Shape } from './scene/shape/shape';
export type { ShapeLineCap } from './scene/shape/shape';
export type { ShapeLineCap, ShapeLineJoin } from './scene/shape/shape';
export { SvgPath } from './scene/shape/svgPath';
export { Text } from './scene/shape/text';
export { Text, RotatableText, TransformableText } from './scene/shape/text';
export type { Scale } from './scale/scale';

@@ -43,2 +46,4 @@ export { ContinuousScale } from './scale/continuousScale';

export { Triangle } from './chart/marker/triangle';
export { ArrowUp } from './chart/marker/arrowUp';
export { ArrowDown } from './chart/marker/arrowDown';
export { Tooltip, toTooltipHtml } from './chart/tooltip/tooltip';

@@ -57,3 +62,3 @@ export type { TooltipMeta } from './chart/tooltip/tooltip';

staticFromToMotion<N_2 extends import("./scene/node").Node, T_2 extends import("./module-support").AnimationValue & Partial<N_2> & object, D_2>(groupId: string, subId: string, animationManager: import("./module-support").AnimationManager, selectionsOrNodes: import("./scene/selection").Selection<N_2, D_2>[] | N_2[], from: T_2, to: T_2, extraOpts: fromToMotion.ExtraOpts<N_2>): void;
NODE_UPDATE_STATE_TO_PHASE_MAPPING: Record<fromToMotion.NodeUpdateState, "none" | "trailing" | "end" | "initial" | "remove" | "update" | "add">;
NODE_UPDATE_STATE_TO_PHASE_MAPPING: Record<fromToMotion.NodeUpdateState, "none" | "trailing" | "initial" | "remove" | "update" | "add" | "end">;
};

@@ -60,0 +65,0 @@ export { motion };

@@ -45,3 +45,3 @@ export * from './util/array';

export * from './chart/updateService';
export * from './chart/layout/layoutService';
export * from './chart/layout/layoutManager';
export * from './chart/interaction/regions';

@@ -59,2 +59,3 @@ export * from './chart/interaction/animationManager';

export * from './chart/interaction/tooltipManager';
export * from './chart/toolbar/toolbarTypes';
export * from './chart/interaction/zoomManager';

@@ -90,2 +91,3 @@ export * from './chart/layers';

export * from './chart/series/topology/mercatorScale';
export * from './chart/series/gaugeSeries';
export * from './chart/axis/axis';

@@ -110,5 +112,7 @@ export * from './chart/axis/axisInterval';

export * from './motion/fromToMotion';
export * from './chart/dom/domManager';
export * from './dom/domManager';
export * from './dom/elements';
export { resetIds } from './util/id';
export { type DefaultColors } from './chart/themes/defaultColors';
export { ChartUpdateType } from './chart/chartUpdateType';
export { type MementoOriginator } from './api/state/memento';
import type { DataController } from '../chart/data/dataController';
import type { BBox } from '../scene/bbox';
type LayoutPositions = 'title' | 'subtitle' | 'footnote';
export interface LayoutContext {
shrinkRect: BBox;
positions: {
[K in LayoutPositions]?: BBox;
};
padding: {
[K in LayoutPositions]?: number;
};
width: number;
height: number;
layoutBox: BBox;
}
export interface ModuleInstance {
processData?: (opts: {
dataController: DataController;
}) => Promise<void>;
updateData?: (opts: {
data: any;
}) => Promise<void>;
performLayout?: (opts: LayoutContext) => Promise<LayoutContext>;
performCartesianLayout?: (opts: {
seriesRect: BBox;
}) => Promise<void>;
processData?: (dataController: DataController) => Promise<void>;
updateData?: (data: any) => void;
destroy(): void;
}
export type ChartTypes = 'cartesian' | 'polar' | 'hierarchy' | 'topology' | 'flow-proportion';
export type ChartTypes = 'cartesian' | 'polar' | 'hierarchy' | 'topology' | 'flow-proportion' | 'gauge';
export interface BaseModule<T extends ChartTypes = ChartTypes> {

@@ -34,2 +21,1 @@ optionsKey: string;

}
export {};

@@ -1,2 +0,2 @@

import type { AgCartesianChartOptions, AgChartThemeOverrides, AgPolarChartOptions } from 'ag-charts-types';
import type { AgCartesianChartOptions, AgCartesianSeriesOptions, AgChartThemeOverrides, AgFlowProportionSeriesOptions, AgHierarchySeriesOptions, AgLinearGaugeOptions, AgPolarChartOptions, AgPolarSeriesOptions, AgRadialGaugeOptions, AgTopologySeriesOptions } from 'ag-charts-types';
import type { AgChartOptions } from 'ag-charts-types';

@@ -23,13 +23,19 @@ import type { ChartLegend, ChartLegendType } from '../chart/legendDatum';

type SeriesOptionsTypes = NonNullable<AgChartOptions['series']>[number];
type Extensible<T> = {
[K in keyof T]?: NonNullable<T[K]> extends object ? Extensible<T[K]> : T[K];
} & {
__extends__?: string;
type Themes = AgChartThemeOverrides & {
'linear-gauge'?: {
series: AgLinearGaugeOptions;
};
'radial-gauge'?: {
series: AgRadialGaugeOptions;
};
};
export type ExtensibleTheme<SeriesType extends RequiredSeriesType> = Extensible<NonNullable<AgChartThemeOverrides[SeriesType]>>;
export type ExtensibleTheme<SeriesType extends RequiredSeriesType> = NonNullable<Themes[SeriesType]>;
export type SeriesTypeOptions<SeriesType extends RequiredSeriesType> = Extract<SeriesOptionsTypes, {
type: SeriesType;
}>;
type OptionsSeriesType<T extends AgChartOptions> = NonNullable<T['series']>[number]['type'];
type SeriesDefaultAxes<SeriesType extends RequiredSeriesType> = SeriesType extends OptionsSeriesType<AgCartesianChartOptions> ? AgCartesianChartOptions['axes'] : SeriesType extends OptionsSeriesType<AgPolarChartOptions> ? AgPolarChartOptions['axes'] : never;
type Axes = Record<Required<AgCartesianSeriesOptions>['type'], AgCartesianChartOptions['axes']> & Record<Required<AgPolarSeriesOptions>['type'], AgPolarChartOptions['axes']> & Record<Required<AgHierarchySeriesOptions>['type'], never> & Record<Required<AgTopologySeriesOptions>['type'], never> & Record<Required<AgFlowProportionSeriesOptions>['type'], never> & {
'radial-gauge': AgPolarChartOptions['axes'];
'linear-gauge': AgCartesianChartOptions['axes'];
};
type SeriesDefaultAxes<SeriesType extends RequiredSeriesType> = Axes[SeriesType];
export type SeriesTooltipDefaults = {

@@ -46,3 +52,3 @@ range: 'exact' | 'nearest';

themeTemplate: ExtensibleTheme<SeriesType>;
paletteFactory?: SeriesPaletteFactory<SeriesType>;
paletteFactory?: SeriesPaletteFactory<ExtensibleTheme<SeriesType>>;
solo?: boolean;

@@ -49,0 +55,0 @@ stackable?: boolean;

@@ -1,2 +0,2 @@

import type { AgChartOptions, AgChartThemePalette, AgPaletteColors } from 'ag-charts-types';
import type { AgChartThemePalette, AgPaletteColors } from 'ag-charts-types';
import type { SeriesOptionsTypes } from '../chart/mapping/types';

@@ -19,6 +19,4 @@ export type RequiredSeriesType = NonNullable<SeriesOptionsTypes['type']>;

}
export type SeriesPaletteFactory<SeriesType extends RequiredSeriesType = RequiredSeriesType> = (params: SeriesPaletteFactoryParams) => SeriesPaletteOptions<SeriesType>;
export type SeriesPaletteOptions<SeriesType extends RequiredSeriesType, SeriesOpts = NonNullable<AgChartOptions['series']>[number] & {
type: SeriesType;
}, ColourKeys = 'stroke' | 'fill' | 'fills' | 'strokes' | 'colors', NestedKeys = 'marker' | 'calloutLine'> = {
export type SeriesPaletteFactory<SeriesOpts> = (params: SeriesPaletteFactoryParams) => SeriesPaletteOptions<SeriesOpts>;
export type SeriesPaletteOptions<SeriesOpts, ColourKeys = 'stroke' | 'fill' | 'fills' | 'strokes' | 'colors', NestedKeys = 'marker' | 'calloutLine'> = {
[K in keyof SeriesOpts & ColourKeys]?: NonNullable<SeriesOpts[K]>;

@@ -25,0 +23,0 @@ } & {

import type { AgChartOptions } from 'ag-charts-types';
import type { DOMManager } from '../chart/dom/domManager';
import type { DOMManager } from '../dom/domManager';
export interface LicenseManager {

@@ -4,0 +4,0 @@ setLicenseKey: (key?: string, gridContext?: boolean) => void;

@@ -0,1 +1,2 @@

import type { HistoryManager } from '../api/state/historyManager';
import type { StateManager } from '../api/state/stateManager';

@@ -6,5 +7,2 @@ import type { AnnotationManager } from '../chart/annotation/annotationManager';

import type { DataService } from '../chart/data/dataService';
import type { DOMManager } from '../chart/dom/domManager';
import type { FocusIndicator } from '../chart/dom/focusIndicator';
import type { ProxyInteractionService } from '../chart/dom/proxyInteractionService';
import type { AnimationManager } from '../chart/interaction/animationManager';

@@ -18,2 +16,3 @@ import type { AriaAnnouncementService } from '../chart/interaction/ariaAnnouncementServices';

import type { InteractionManager } from '../chart/interaction/interactionManager';
import type { KeyNavManager } from '../chart/interaction/keyNavManager';
import type { RegionManager } from '../chart/interaction/regionManager';

@@ -24,6 +23,9 @@ import type { SyncManager } from '../chart/interaction/syncManager';

import type { ZoomManager } from '../chart/interaction/zoomManager';
import type { LayoutService } from '../chart/layout/layoutService';
import type { LocaleManager } from '../chart/locale/localeManager';
import type { LayoutManager } from '../chart/layout/layoutManager';
import type { SeriesStateManager } from '../chart/series/seriesStateManager';
import type { UpdateService } from '../chart/updateService';
import type { DOMManager } from '../dom/domManager';
import type { FocusIndicator } from '../dom/focusIndicator';
import type { ProxyInteractionService } from '../dom/proxyInteractionService';
import type { LocaleManager } from '../locale/localeManager';
import type { Scene } from '../scene/scene';

@@ -37,3 +39,3 @@ import type { CallbackCache } from '../util/callbackCache';

readonly dataService: DataService<any>;
readonly layoutService: LayoutService;
readonly layoutManager: LayoutManager;
readonly updateService: UpdateService;

@@ -50,3 +52,5 @@ readonly axisManager: AxisManager;

readonly highlightManager: HighlightManager;
readonly historyManager: HistoryManager;
readonly interactionManager: InteractionManager;
readonly keyNavManager: KeyNavManager;
readonly localeManager: LocaleManager;

@@ -53,0 +57,0 @@ readonly proxyInteractionService: ProxyInteractionService;

import { type AgChartOptions } from 'ag-charts-types';
import { type SeriesOptions } from '../chart/factory/seriesRegistry';
import { type SeriesOptionsTypes } from '../chart/mapping/types';
import { type ChartTheme } from '../chart/themes/chartTheme';

@@ -21,3 +21,3 @@ import type { AxisContext } from './axisContext';

sceneMode?: 'simple';
type?: string;
presetType?: string;
}

@@ -35,3 +35,3 @@ type GroupingOptions = {

};
type GroupingSeriesOptions = SeriesOptions & GroupingOptions & {
type GroupingSeriesOptions = SeriesOptionsTypes & GroupingOptions & {
xKey?: string;

@@ -57,3 +57,3 @@ };

annotationThemes: any;
type?: string;
presetType?: string;
private readonly debug;

@@ -74,6 +74,4 @@ constructor(userOptions: T, specialOverrides?: Partial<ChartSpecialOverrides>);

userPalette: PaletteType;
}): import("./coreModulesTypes").SeriesPaletteOptions<import("./coreModulesTypes").RequiredSeriesType, (import("ag-charts-types").AgCartesianSeriesOptions | import("ag-charts-types").AgPolarSeriesOptions | import("ag-charts-types").AgHierarchySeriesOptions | import("ag-charts-types").AgTopologySeriesOptions | import("ag-charts-types").AgFlowProportionSeriesOptions) & {
type: import("./coreModulesTypes").RequiredSeriesType;
}, "fill" | "stroke" | "fills" | "strokes" | "colors", "marker" | "calloutLine"> | undefined;
protected getSeriesGroupingOptions(series: SeriesOptions & GroupingOptions): {
}): import("./coreModulesTypes").SeriesPaletteOptions<unknown, "fill" | "stroke" | "fills" | "strokes" | "colors", "marker" | "calloutLine"> | undefined;
protected getSeriesGroupingOptions(series: SeriesOptionsTypes & GroupingOptions): {
stacked: boolean;

@@ -80,0 +78,0 @@ grouped: boolean;

@@ -1,2 +0,2 @@

import type { AgCartesianSeriesOptions, AgFlowProportionSeriesOptions, AgHierarchySeriesOptions, AgPolarSeriesOptions, AgTopologySeriesOptions } from 'ag-charts-types';
import type { AgCartesianSeriesOptions, AgFlowProportionSeriesOptions, AgGaugeOptions, AgHierarchySeriesOptions, AgPolarSeriesOptions, AgTopologySeriesOptions } from 'ag-charts-types';
import type { ChartAxisDirection } from '../chart/chartAxisDirection';

@@ -13,3 +13,3 @@ import type { PropertyDefinition } from '../chart/data/dataModel';

} | undefined;
export type SeriesType = NonNullable<AgCartesianSeriesOptions['type'] | AgPolarSeriesOptions['type'] | AgHierarchySeriesOptions['type'] | AgTopologySeriesOptions['type'] | AgFlowProportionSeriesOptions['type']>;
export type SeriesType = NonNullable<AgCartesianSeriesOptions['type'] | AgPolarSeriesOptions['type'] | AgHierarchySeriesOptions['type'] | AgTopologySeriesOptions['type'] | AgFlowProportionSeriesOptions['type'] | AgGaugeOptions['type']>;
export interface SeriesOptionInstance extends ModuleInstance {

@@ -16,0 +16,0 @@ pickNodeExact(point: Point): PickNodeDatumResult;

@@ -24,3 +24,2 @@ import type { AnimationManager } from '../chart/interaction/animationManager';

export type FromToMotionPropFn<N extends Node, T extends Record<string, string | number | Interpolating | undefined> & Partial<N>, D> = (node: N, datum: D, state: NodeUpdateState, ctx: FromToMotionPropFnContext<N>) => T & Partial<ExtraOpts<N>>;
type IntermediateFn<N extends Node, D> = (node: N, datum: D, state: NodeUpdateState, ctx: FromToMotionPropFnContext<N>) => Partial<N>;
export declare const NODE_UPDATE_STATE_TO_PHASE_MAPPING: Record<NodeUpdateState, AnimationPhase>;

@@ -35,30 +34,49 @@ export interface FromToDiff {

toFn: FromToMotionPropFn<N, T, D>;
intermediateFn?: IntermediateFn<N, D>;
applyFn?: (note: N, props: T) => void;
}
/**
* Implements a per-node "to/from" animation, with support for detection of added/moved/removed
* nodes.
* Implements a per-node "from/to" animation, with support for detecting added, moved, and removed
* nodes. Animates nodes based on their properties and state transitions, utilizing the provided
* callbacks to determine the properties at different stages of the animation.
*
* @param id prefix for all animation ids generated by this call
* @param animationManager used to schedule generated animations
* @param selections contains nodes to be animated
* @param fromFn callback to determine per-node starting properties
* @param toFn callback to determine per-node final properties
* @param extraOpts optional additional animation properties to pass to AnimationManager#animate.
* @param getDatumId optional per-datum 'id' generation function for diff calculation - must be
* specified iff diff is specified
* @param diff optional diff from a DataModel to use to detect added/moved/removed cases
* @template N Node type, typically extending the base node class.
* @template T Type of properties to be animated. Must be a record of properties with string, number,
* or interpolating values and must be partially assignable to N.
* @template D Data type associated with each node.
*
* @param groupId A unique identifier for the group of animations.
* @param subId A sub-identifier for animations related to this specific invocation.
* @param animationManager Manager responsible for handling the animations.
* @param selectionsOrNodes Array of either selections (containing nodes) or nodes themselves, to be animated.
* @param fns Object containing the necessary callbacks for determining 'from' and 'to' properties:
* - fromFn: Callback to determine starting properties per node.
* - toFn: Callback to determine final properties per node.
* - intermediateFn: (optional) Callback for intermediate steps of animation.
* - applyFn: (optional) Function to apply the properties to the node. Defaults to setting
* node properties directly.
* @param getDatumId (Optional) Function for generating a unique identifier for each datum, used in
* conjunction with the diff parameter to detect added/moved/removed cases.
* @param diff (Optional) Diff data model used for detecting changes in the node state (added, moved, removed).
*/
export declare function fromToMotion<N extends Node, T extends Record<string, string | number | Interpolating | undefined> & Partial<N>, D>(groupId: string, subId: string, animationManager: AnimationManager, selectionsOrNodes: Selection<N, D>[] | N[], fns: FromToFns<N, T, D>, getDatumId?: (node: N, datum: D) => string, diff?: FromToDiff): void;
/**
* Implements a batch "to/from" animation.
* Implements a batch "from/to" animation, where all nodes transition uniformly between a starting
* and final set of properties. This is useful for static animations where the same properties
* apply to all nodes in the batch.
*
* @param id prefix for all animation ids generated by this call
* @param animationManager used to schedule generated animations
* @param selectionsOrNodes contains nodes to be animated
* @param from node starting properties
* @param to node final properties
* @param extraOpts optional additional animation properties to pass to AnimationManager#animate.
* @template N Node type, typically extending the base node class.
* @template T Type of properties to be animated. Must extend `AnimationValue` and be partially assignable to `N`.
* @template D Data type associated with each node.
*
* @param groupId A unique identifier for the group of animations.
* @param subId A sub-identifier for animations related to this specific invocation.
* @param animationManager Manager responsible for handling the animations.
* @param selectionsOrNodes Array of either selections (containing nodes) or nodes themselves, to be animated.
* @param from Initial properties for the nodes at the start of the animation.
* @param to Final properties for the nodes at the end of the animation.
* @param extraOpts Optional additional animation properties, such as:
* - start: Properties to apply when the animation starts.
* - finish: Properties to apply when the animation ends.
* - phase: Animation phase (e.g., 'update', 'enter', 'exit').
*/
export declare function staticFromToMotion<N extends Node, T extends AnimationValue & Partial<N> & object, D>(groupId: string, subId: string, animationManager: AnimationManager, selectionsOrNodes: Selection<N, D>[] | N[], from: T, to: T, extraOpts: ExtraOpts<N>): void;
export {};

@@ -6,3 +6,3 @@ import type { Scale } from './scale';

export declare class BandScale<D, I = number> implements Scale<D, number, I> {
static is(value: any): value is BandScale<any, any>;
static is(value: unknown): value is BandScale<any, any>;
readonly type: 'band' | 'ordinal-time';

@@ -9,0 +9,0 @@ protected invalid: boolean;

import type { Scale, ScaleConvertParams } from './scale';
export declare abstract class ContinuousScale<D extends number | Date, I = number> implements Scale<D, number, I> {
static is(value: unknown): value is ContinuousScale<any, any>;
static readonly defaultTickCount = 5;
static readonly defaultMaxTickCount = 6;
abstract type: Scale<D, number, I>['type'];
static is(value: any): value is ContinuousScale<any, any>;
protected invalid: boolean;

@@ -8,0 +8,0 @@ domain: D[];

@@ -5,3 +5,3 @@ import type { TimeInterval } from '../util/time';

readonly type = "ordinal-time";
static is(value: any): value is OrdinalTimeScale;
static is(value: unknown): value is OrdinalTimeScale;
tickCount: number;

@@ -8,0 +8,0 @@ minTickCount: number;

@@ -7,3 +7,3 @@ type OffscreenCanvasRenderingContext2D = any;

willReadFrequently?: boolean;
canvasConstructor?: () => HTMLCanvasElement;
canvasElement?: HTMLCanvasElement;
}

@@ -10,0 +10,0 @@ /**

@@ -9,3 +9,3 @@ export declare enum RedrawType {

redraw?: RedrawType;
type?: 'normal' | 'transform' | 'path' | 'font';
type?: 'normal' | 'transform' | 'path';
convertor?: (o: any) => any;

@@ -12,0 +12,0 @@ changeCb?: (o: T) => any;

@@ -0,1 +1,2 @@

import { BBox } from './bbox';
declare enum Command {

@@ -33,4 +34,8 @@ Move = 0,

}>;
computeSVGDataPath(ox: number, oy: number): string;
computeSVGDataPath(transform: (x: number, y: number) => {
x: number;
y: number;
}): string;
computeBBox(): BBox;
}
export {};

@@ -6,6 +6,11 @@ import type { BBox } from '../bbox';

}
export type ColorSpace = 'rgb' | 'oklch';
export declare abstract class Gradient {
colorSpace: ColorSpace;
stops: GradientColorStop[];
constructor(stops?: GradientColorStop[]);
abstract createGradient(ctx: CanvasRenderingContext2D, bbox: BBox): CanvasGradient | string;
private readonly bbox?;
constructor(colorSpace: ColorSpace, stops?: GradientColorStop[], bbox?: BBox | undefined);
protected abstract createCanvasGradient(ctx: CanvasRenderingContext2D, bbox: BBox): CanvasGradient | undefined;
private _cache;
createGradient(ctx: CanvasRenderingContext2D, shapeBbox: BBox): CanvasGradient | string | undefined;
}
import type { BBox } from '../bbox';
import { Gradient, type GradientColorStop } from './gradient';
import { type ColorSpace, Gradient, type GradientColorStop } from './gradient';
export declare class LinearGradient extends Gradient {
angle: number;
constructor(stops: GradientColorStop[], angle?: number);
createGradient(ctx: CanvasFillStrokeStyles, bbox: BBox): CanvasGradient | string;
constructor(colorSpace: ColorSpace, stops: GradientColorStop[], angle?: number, bbox?: BBox);
protected createCanvasGradient(ctx: CanvasRenderingContext2D, bbox: BBox): CanvasGradient | undefined;
}

@@ -38,4 +38,2 @@ import { BBox } from './bbox';

protected computeBBox(): BBox;
computeTransformedBBox(): BBox;
computeTransformedRegionBBox(): BBox;
private lastBBox?;

@@ -46,5 +44,6 @@ preRender(): ChildNodeCounts;

private sortChildren;
static computeBBox(nodes: Iterable<Node>, opts?: {
static computeChildrenBBox(nodes: Iterable<Node>, opts?: {
skipInvisible: boolean;
}): BBox;
setClipRect(bbox?: BBox): void;
/**

@@ -57,1 +56,14 @@ * Transforms bbox given in the canvas coordinate space to bbox in this group's coordinate space and

}
declare const ScalableGroup_base: new (...args: any[]) => import("./transformable").ScalableType<Group>;
export declare class ScalableGroup extends ScalableGroup_base {
}
declare const RotatableGroup_base: new (...args: any[]) => import("./transformable").RotatableType<Group>;
export declare class RotatableGroup extends RotatableGroup_base {
}
declare const TranslatableGroup_base: new (...args: any[]) => import("./transformable").TranslatableType<Group>;
export declare class TranslatableGroup extends TranslatableGroup_base {
}
declare const TransformableGroup_base: new (...args: any[]) => import("./transformable").RotatableType<import("./transformable").TranslatableType<Group>>;
export declare class TransformableGroup extends TransformableGroup_base {
}
export {};
import { BBox } from './bbox';
export declare const IDENTITY_MATRIX_ELEMENTS: readonly number[];
/**

@@ -19,4 +20,4 @@ * As of Jan 8, 2019, Firefox still doesn't implement

constructor(elements?: number[]);
setElements(elements: number[]): this;
private get identity();
setElements(elements: readonly number[]): this;
get identity(): boolean;
/**

@@ -38,3 +39,3 @@ * Performs the AxB matrix multiplication and saves the result

*/
multiply(other: Matrix): Matrix;
multiply(other: Matrix | DOMMatrix): Matrix;
preMultiplySelf(other: Matrix): this;

@@ -41,0 +42,0 @@ /**

import { BBox } from './bbox';
import { ChangeDetectable, RedrawType, SceneChangeDetection } from './changeDetectable';
import type { LayersManager, ZIndexSubOrder } from './layersManager';
import { Matrix } from './matrix';
export { SceneChangeDetection, RedrawType };

@@ -22,2 +21,3 @@ export declare enum PointerEvents {

};
debugNodeSearch?: (string | RegExp)[];
debugNodes: Record<string, Node>;

@@ -105,36 +105,2 @@ };

clear(): void;
matrix: Matrix;
private calculateCumulativeMatrix;
transformPoint(x: number, y: number): {
x: number;
y: number;
};
inverseTransformPoint(x: number, y: number): {
x: number;
y: number;
};
transformBBox(bbox: BBox): BBox;
inverseTransformBBox(bbox: BBox): BBox;
protected dirtyTransform: boolean;
markDirtyTransform(): void;
scalingX: number;
scalingY: number;
/**
* The center of scaling.
* The default value of `null` means the scaling center will be
* determined automatically, as the center of the bounding box
* of a node.
*/
scalingCenterX: number | null;
scalingCenterY: number | null;
rotationCenterX: number | null;
rotationCenterY: number | null;
/**
* Rotation angle in radians.
* The value is set as is. No normalization to the [-180, 180) or [0, 360)
* interval is performed.
*/
rotation: number;
translationX: number;
translationY: number;
constructor({ isVirtual, tag, zIndex, name }?: NodeOptions);

@@ -149,9 +115,6 @@ destroy(): void;

*/
pickNode(x: number, y: number): Node | undefined;
pickNode(x: number, y: number, _localCoords?: boolean): Node | undefined;
private cachedBBox?;
getBBox(forceRecalculation?: boolean): BBox;
getBBox(): BBox;
protected computeBBox(): BBox | undefined;
computeTransformedBBox(): BBox | undefined;
computeTransformMatrix(): void;
protected transformRenderContext(renderCtx: RenderContext, layerCtx?: RenderContext['ctx']): Matrix;
readonly _childNodeCounts: ChildNodeCounts;

@@ -158,0 +121,0 @@ /** Perform any pre-rendering initialization. */

@@ -7,2 +7,3 @@ export interface Point {

size: number;
focusSize?: number;
}
import type { BBox } from './bbox';
import { HdpiCanvas } from './canvas/hdpiCanvas';
import { type CanvasOptions, HdpiCanvas } from './canvas/hdpiCanvas';
import { LayersManager } from './layersManager';
import type { Node } from './node';
type DOMManagerLike = {
addChild(type: 'canvas', id: string, child?: HTMLElement): HTMLElement;
};
interface SceneOptions {
width?: number;
height?: number;
pixelRatio?: number;
canvasPosition?: 'absolute';
domManager?: DOMManagerLike;
}
export declare class Scene {

@@ -22,11 +12,11 @@ static readonly className = "Scene";

private root;
private pendingSize;
private isDirty;
private pendingSize?;
private domManager?;
constructor({ width, height, pixelRatio, domManager }: SceneOptions);
constructor(canvasOptions: CanvasOptions);
get width(): number;
get height(): number;
setContainer(value: HTMLElement | DOMManagerLike): this;
/** @deprecated v10.2.0 Only used by AG Grid Sparklines */
setContainer(value: HTMLElement): this;
setRoot(node: Node | null): this;
attachNode<T extends Node>(node: T, rootGroupName?: string): (() => this) | (() => T);
attachNode<T extends Node>(node: T): () => this;
appendChild<T extends Node>(node: T): this;

@@ -47,2 +37,1 @@ removeChild<T extends Node>(node: T): this;

}
export {};

@@ -17,2 +17,3 @@ import { BBox } from './bbox';

export declare function debugStats(layersManager: LayersManager, debugSplitTimes: Record<string, number>, ctx: CanvasRenderingContext2D, renderCtxStats: RenderContext['stats'], extraDebugStats?: {}, seriesRect?: Readonly<BBox>): void;
export declare function prepareSceneNodeHighlight(ctx: RenderContext): void;
export declare function debugSceneNodeHighlight(ctx: CanvasRenderingContext2D, debugNodes: Record<string, Node>): void;

@@ -19,0 +20,0 @@ export declare function buildTree(node: Node): BuildTree;

@@ -9,3 +9,4 @@ import { type Interpolating, interpolate } from '../util/interpolating';

clone(): SectorBox;
equals(other: SectorBox): boolean;
[interpolate](other: SectorBox, d: number): SectorBox;
}

@@ -16,5 +16,5 @@ import type { DistantObject } from '../../util/nearest';

protected computeBBox(): BBox;
isPointInPath(px: number, py: number): boolean;
isPointInPath(x: number, y: number): boolean;
distanceSquared(px: number, py: number): number;
render(renderCtx: RenderContext): void;
}

@@ -37,3 +37,6 @@ import type { DistantObject } from '../../util//nearest';

distanceSquared(x: number, y: number): number;
computeSVGDataPath(): string;
computeSVGDataPath(transform: (x: number, y: number) => {
x: number;
y: number;
}): string;
protected distanceSquaredTransformedPoint(x: number, y: number): number;

@@ -40,0 +43,0 @@ protected isDirtyPath(): boolean;

@@ -1,2 +0,2 @@

import { BBox } from '../bbox';
import type { BBox } from '../bbox';
import { SectorBox } from '../sectorBox';

@@ -3,0 +3,0 @@ import { Path } from './path';

import type { DropShadow } from '../dropShadow';
import { LinearGradient } from '../gradient/linearGradient';
import { Gradient } from '../gradient/gradient';
import { Node } from '../node';
export type ShapeLineCap = 'butt' | 'round' | 'square';
type ShapeLineJoin = 'round' | 'bevel' | 'miter';
export type ShapeLineJoin = 'round' | 'bevel' | 'miter';
export type CanvasContext = CanvasFillStrokeStyles & CanvasCompositing & CanvasShadowStyles & CanvasPathDrawingStyles & CanvasDrawPath & CanvasTransform & CanvasState;

@@ -33,5 +33,5 @@ export declare abstract class Shape extends Node {

strokeOpacity: number;
fill?: string;
fill?: string | Gradient;
protected onFillChange(): void;
protected gradient: LinearGradient | undefined;
protected gradient: Gradient | undefined;
/**

@@ -74,2 +74,1 @@ * Note that `strokeStyle = null` means invisible stroke,

}
export {};

@@ -6,4 +6,7 @@ import { Path } from './path';

private readonly commands;
constructor(d: string);
private _d;
get d(): string;
set d(d: string);
constructor(d?: string);
updatePath(): void;
}

@@ -59,1 +59,8 @@ import type { FontFamily, FontSize, FontStyle, FontWeight } from 'ag-charts-types';

}
declare const RotatableText_base: new (...args: any[]) => import("../transformable").RotatableType<Text>;
export declare class RotatableText extends RotatableText_base {
}
declare const TransformableText_base: new (...args: any[]) => import("../transformable").RotatableType<import("../transformable").TranslatableType<Text>>;
export declare class TransformableText extends TransformableText_base {
}
export {};

@@ -5,1 +5,3 @@ import type { Point } from '../point';

export declare function splitBezier(p0x: number, p0y: number, p1x: number, p1y: number, p2x: number, p2y: number, p3x: number, p3y: number, t: number): [[Point, Point, Point, Point], [Point, Point, Point, Point]];
export declare function calculateDerivativeExtrema(p0: number, p1: number, p2: number, p3: number): number[];
export declare function calculateDerivativeExtremaXY(sx: number, sy: number, cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): number[];
import type { Point, SizedPoint } from '../point';
export type LabelPlacement = 'top' | 'bottom' | 'left' | 'right';
export type LabelPlacement = 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
export interface MeasuredLabel {

@@ -4,0 +4,0 @@ readonly text: string;

@@ -14,3 +14,3 @@ export * from './util/angle';

export { isValidDate as isDate, isFiniteNumber as isNumber, isString } from './util/type-guards';
export { bifurcate, extent, normalisedExtent, normalisedExtentWithMetadata } from './util/array';
export { extent, normalisedExtentWithMetadata } from './util/array';
export { toFixed, isEqual as isNumberEqual } from './util/number';

@@ -17,0 +17,0 @@ export { tickFormat } from './util/ticks';

@@ -27,1 +27,6 @@ /**

};
export declare function clockwiseAngle(angle: number, relativeToStartAngle: number): number;
export declare function clockwiseAngles(startAngle: number, endAngle: number, relativeToStartAngle?: number): {
startAngle: number;
endAngle: number;
};

@@ -1,4 +0,2 @@

export declare function times<T>(n: number, callback: (index: number) => T): T[];
export declare function extent(values: Array<number | Date>): [number, number] | undefined;
export declare function normalisedExtent(d: number[], min: number, max: number): number[];
export declare function extent(values: Array<Date | number | unknown>): [number, number] | null;
export declare function normalisedExtentWithMetadata(d: number[], min: number, max: number): {

@@ -13,4 +11,1 @@ extent: number[];

export declare function circularSliceArray<T>(data: T[], size: number, offset?: number): T[];
export declare function bifurcate<T>(isLeft: (array: T) => boolean, array: T[]): [T[], T[]];
export declare function mapIterable<Src, Dst>(src: Iterable<Src>, predicate: (e: Src) => Dst): Iterable<Dst>;
export declare function allInStringUnion<T extends string>(unionValues: readonly T[], values: string[]): values is T[];

@@ -1,9 +0,31 @@

type AttributeTypeMap = {
role: 'status' | 'figure' | 'img';
type ElementID = string;
type BaseAttributeTypeMap = {
role: 'figure' | 'img' | 'radio' | 'radiogroup' | 'status' | 'switch' | 'tab' | 'tablist' | 'tabpanel';
'aria-checked': boolean;
'aria-controls': ElementID;
'aria-expanded': boolean;
'aria-haspopup': boolean;
'aria-hidden': boolean;
'aria-label': string | undefined;
'aria-labelledby': ElementID;
'aria-live': 'assertive' | 'polite';
'aria-label': string | undefined;
'aria-hidden': boolean;
'aria-selected': boolean;
class: string;
id: ElementID;
tabindex: 0 | -1;
title: string;
};
export declare function setAttribute<A extends keyof AttributeTypeMap>(e: HTMLElement | undefined, qualifiedName: A, value: AttributeTypeMap[A]): void;
export declare function setVisibility(element: HTMLElement, hiddenToken: string, hidden: boolean): void;
type InputAttributeTypeMap = BaseAttributeTypeMap & {
placeholder: string;
};
export type AttributeSet = Partial<{
[K in keyof BaseAttributeTypeMap]: BaseAttributeTypeMap[K];
}>;
export type InputAttributeSet = Partial<{
[K in keyof InputAttributeTypeMap]: InputAttributeTypeMap[K];
}>;
export declare function setAttribute<A extends keyof BaseAttributeTypeMap>(e: HTMLElement | undefined, qualifiedName: A, value: BaseAttributeTypeMap[A]): void;
export declare function setAttribute<A extends keyof InputAttributeTypeMap>(e: HTMLTextAreaElement | undefined, qualifiedName: A, value: InputAttributeTypeMap[A]): void;
export declare function setAttributes(e: HTMLElement | undefined, attrs: AttributeSet | undefined): void;
export declare function setAttributes(e: HTMLTextAreaElement | undefined, attrs: InputAttributeTypeMap | undefined): void;
export {};

@@ -12,5 +12,8 @@ export interface BBoxValues {

id: string;
computeTransformedRegionBBox?(): T;
computeTransformedBBox(): T;
toCanvasBBox(): T;
fromCanvasPoint(x: number, y: number): {
x: number;
y: number;
};
visible?: boolean;
}

@@ -14,1 +14,3 @@ import type { BBoxValues } from './bboxinterface';

export declare function setElementBBox(element: HTMLElement | undefined, bbox: BBoxValues): void;
export declare function focusCursorAtEnd(element: HTMLElement): void;
export declare function createElementId(label?: string): string;

@@ -18,4 +18,2 @@ interface DebounceOptions {

export declare function identity<T>(x: T): T;
export declare function iterate<T extends Iterable<any>[]>(...iterators: T): Generator<T[number] extends Iterable<infer U> ? U : never, void, undefined>;
export declare function iterateReverseArray<T extends any[]>(array: T): Generator<T[number] extends Iterable<infer U> ? U : never, void, undefined>;
export declare function debounce<T extends (...args: Parameters<T>) => void>(callback: T, waitMs?: number, options?: DebounceOptions): ((...args: Parameters<T>) => void) & {

@@ -22,0 +20,0 @@ cancel(): void;

@@ -1,5 +0,6 @@

export declare const interpolate = "$interpolate";
export declare const interpolate: unique symbol;
export declare const isInterpolating: (x: any) => x is Interpolating<any>;
export interface Interpolating<T = any> {
$interpolate: (other: T, d: number) => T;
equals(other: T): boolean;
[interpolate]: (other: T, d: number) => T;
}

@@ -0,3 +1,2 @@

export declare function iterate<T extends Iterable<any>[]>(...iterators: T): Generator<T[number] extends Iterable<infer U> ? U : never, void, undefined>;
export declare function toIterable<T>(value: T | Iterable<T>): Iterable<T>;
export declare function arraysIterable<T, A extends Array<Array<T>>>(...arrays: A): Iterable<A[number][number]>;
export declare function argsIterable<T, A extends Array<T>>(...args: A[number][]): Iterable<T>;
export declare function initToolbarKeyNav(opts: {
toolbar: HTMLElement;
} & Parameters<typeof initRovingTabIndex>[0]): ReturnType<typeof initRovingTabIndex>;
export declare function initRovingTabIndex(opts: {
orientation: 'horizontal' | 'vertical';
toolbar: HTMLElement;
buttons: HTMLElement[];
wrapAround?: boolean;
onFocus?: (event: FocusEvent) => void;

@@ -9,8 +12,23 @@ onBlur?: (event: FocusEvent) => void;

}): (() => void)[];
export interface MenuCloser {
close(): void;
finishClosing(): void;
}
export type MenuDevice = {
type: 'keyboard';
lastFocus: HTMLElement;
} | {
type: 'mouse';
lastFocus: HTMLElement | undefined;
};
export declare function initMenuKeyNav(opts: {
orientation: 'vertical';
device: MenuDevice;
menu: HTMLElement;
buttons: HTMLElement[];
onEscape?: (event: KeyboardEvent) => void;
}): (() => void)[];
autoCloseOnBlur?: boolean;
skipMouseFocusRestore?: boolean;
closeCallback: () => void;
}): MenuCloser;
export declare function makeAccessibleClickListener(element: HTMLElement, onclick: (event: MouseEvent) => unknown): (event: MouseEvent) => void;
export declare function isButtonClickEvent(event: KeyboardEvent | MouseEvent): boolean;

@@ -8,3 +8,3 @@ type Handler = (...args: any[]) => void;

protected readonly registeredListeners: Map<EventType, Listener<EventHandler>[]>;
addListener(eventType: EventType, handler: EventHandler): () => void;
addListener<T extends EventType>(eventType: T, handler: EventHandler): () => void;
private removeListener;

@@ -11,0 +11,0 @@ dispatch(eventType: EventType, ...params: Parameters<EventHandler>): void;

@@ -13,3 +13,3 @@ export type NearestResult<T> = {

get children(): NearestCalculator<TNearest>[];
transformPoint(x: number, y: number): {
transformPoint?: (x: number, y: number) => {
x: number;

@@ -16,0 +16,0 @@ y: number;

import type { Intersection, PlainObject } from './types';
type FalsyType = false | null | undefined;
export declare function objectEqualWith<T extends PlainObject>(a: T, b: T, cmp: (a: T, b: T) => boolean): boolean;
export declare function deepMerge<TSource extends PlainObject, TArgs extends (TSource | FalsyType)[]>(...sources: TArgs): Intersection<Exclude<TSource, FalsyType>>;

@@ -4,0 +5,0 @@ export declare function mergeDefaults<TSource extends PlainObject, TArgs extends (TSource | FalsyType)[]>(...sources: TArgs): Intersection<Exclude<TArgs[number], FalsyType>>;

@@ -8,3 +8,2 @@ import { BaseProperties } from './properties';

constructor(top?: number, right?: number, bottom?: number, left?: number);
clear(): void;
}

@@ -6,9 +6,9 @@ export declare class BaseProperties<T extends object = object> {

}
export declare class PropertiesArray<T extends BaseProperties> extends Array {
export declare class PropertiesArray<T extends BaseProperties> extends Array<T> {
private readonly itemFactory;
constructor(itemFactory: (new () => T) | ((params: any) => T), ...properties: object[]);
set(properties: object[]): PropertiesArray<T>;
reset(properties: object[]): PropertiesArray<T>;
toJson(): any[];
reset(properties: object[]): PropertiesArray<T> | undefined;
toJson(): object[];
}
export declare function isProperties<T extends object>(value: unknown): value is BaseProperties<T>;

@@ -15,3 +15,3 @@ type StateDefinition<State extends string, Event extends string> = {

guard?: (data?: any) => boolean;
target: State | HierarchyState | StateMachine<any, any>;
target?: State | HierarchyState | StateMachine<any, any>;
action?: StateTransitionAction;

@@ -37,3 +37,4 @@ };

transition(event: Event, data?: any): void;
protected is(value: any): boolean;
transitionAsync(event: Event, data?: any): void;
protected is(value: unknown): boolean;
protected resetHierarchy(): void;

@@ -40,0 +41,0 @@ private transitionChild;

@@ -1,2 +0,2 @@

import { type CountableTimeInterval, TimeInterval } from './time/interval';
import { type CountableTimeInterval, type TimeInterval } from './time/interval';
export declare const TickIntervals: {

@@ -3,0 +3,0 @@ duration: number;

@@ -1,3 +0,3 @@

export declare function dateToNumber(x: any): any;
export declare function dateToNumber(value: any): any;
export declare function defaultTimeTickFormat(ticks?: any[], domain?: any[], formatOffset?: number): (date: Date) => string;
export declare function calculateDefaultTimeTickFormat(ticks?: any[], domain?: any[], formatOffset?: number): string;

@@ -38,2 +38,3 @@ interface ValidateOptions {

export declare const NUMBER: ValidateNumberPredicate;
export declare const REAL_NUMBER: ValidatePredicate;
export declare const NAN: ValidatePredicate;

@@ -59,2 +60,3 @@ export declare const POSITIVE_NUMBER: ValidatePredicate;

export declare const LINE_JOIN: ValidatePredicate;
export declare const LINE_STYLE: ValidatePredicate;
export declare const LINE_DASH: ValidatePredicate;

@@ -61,0 +63,0 @@ export declare const POSITION: ValidatePredicate;

@@ -9,5 +9,11 @@ export declare const Vec2: {

from: typeof from;
fromOffset: typeof fromOffset;
gradient: typeof gradient;
intercept: typeof intercept;
intersectAtX: typeof intersectAtX;
intersectAtY: typeof intersectAtY;
length: typeof length;
lengthSquared: typeof lengthSquared;
multiply: typeof multiply;
normalized: typeof normalized;
origin: typeof origin;
required: typeof required;

@@ -25,2 +31,3 @@ rotate: typeof rotate;

declare function add(a: Vec2, b: Vec2): Vec2;
declare function add(a: Vec2, b: number): Vec2;
/**

@@ -30,3 +37,8 @@ * Subtract the components of `b` from `a`.

declare function sub(a: Vec2, b: Vec2): Vec2;
declare function sub(a: Vec2, b: number): Vec2;
/**
* Multiply the components of `a` and `b`.
*/
declare function multiply(a: Vec2, b: Vec2 | number): Vec2;
/**
* Get the length of a vector.

@@ -50,7 +62,12 @@ */

/**
* Normalize a vector so that each component is a value between 0 and 1 and the length of the vector is always 1.
*/
declare function normalized(a: Vec2): Vec2;
/**
* Find the angle between two vectors.
*/
declare function angle(a: Vec2, b: Vec2): number;
declare function angle(a: Vec2, b?: Vec2): number;
/**
* Rotate vector `a` by the angle `theta around the origin `b`.
* Rotate vector `a` by the angle `theta` around the origin `b`.
* This rotation is not cumulative, i.e. `rotate(rotate(a, Math.PI), Math.PI) !== a`.
*/

@@ -62,2 +79,28 @@ declare function rotate(a: Vec2, theta: number, b?: Vec2): {

/**
* Get the gradient of the line that intersects two points.
* Optionally reflect the line about the y-axis when the coordinate system has y = 0 at the top.
*/
declare function gradient(a: Vec2, b: Vec2, reflection?: number): number;
/**
* Get the y-intercept of a line through a point with a gradient where `c = y - mx`.
* Optionally reflect the line about the y-axis when the coordinate system has y = 0 at the top.
*/
declare function intercept(a: Vec2, gradient: number, reflection?: number): number;
/**
* Get the point where a line intersects a horizontal line at the given y value.
* Optionally reflect the line about the y-axis when the coordinate system has y = 0 at the top.
*/
declare function intersectAtY(gradient: number, coefficient: number, y?: number, reflection?: number): {
x: number;
y: number;
};
/**
* Get the point where a line intersects a vertical line at the given x value.
* Optionally reflect the line about the y-axis when the coordinate system has y = 0 at the top.
*/
declare function intersectAtX(gradient: number, coefficient: number, x?: number, reflection?: number): {
x: number;
y: number;
};
/**
* Check if the components of `a` and `b` are equal.

@@ -71,9 +114,32 @@ */

/**
* Transform an object with `offsetX` and `offsetY` to a vector.
* Create a vector from a box containing a `width` and `height`.
*/
declare function fromOffset(a: {
offsetX: number;
offsetY: number;
declare function from(bbox: {
width: number;
height: number;
}): Vec2;
/**
* Create a vector from a html element's `offsetWidth` and `offsetHeight`.
*/
declare function from(element: {
offsetWidth: number;
offsetHeight: number;
}): Vec2;
/**
* Create a vector from a region event.
*/
declare function from(regionEvent: {
regionOffsetX: number;
regionOffsetY: number;
}): Vec2;
/**
* Create a vector from a line or box containing a pair of coordinates.
*/
declare function from(pair: {
x1: number;
y1: number;
x2: number;
y2: number;
}): [Vec2, Vec2];
/**
* Apply the components of `b` to `a` and return `a`.

@@ -86,2 +152,6 @@ */

declare function required(a?: Partial<Vec2>): Vec2;
/**
* Create a vector at the origin point (0,0).
*/
declare function origin(): Vec2;
export {};

@@ -1,1 +0,1 @@

export declare const VERSION = "10.1.0";
export declare const VERSION = "10.2.0";
{
"name": "ag-charts-community",
"version": "10.1.0",
"version": "10.2.0",
"description": "Advanced Charting / Charts supporting Javascript / Typescript / React / Angular / Vue",

@@ -54,6 +54,6 @@ "main": "./dist/package/main.cjs.js",

],
"homepage": "https://charts.ag-grid.com/",
"homepage": "https://ag-grid.com/charts/",
"dependencies": {
"ag-charts-types": "10.1.0",
"ag-charts-locale": "10.1.0"
"ag-charts-types": "10.2.0",
"ag-charts-locale": "10.2.0"
},

@@ -71,3 +71,3 @@ "devDependencies": {

"@typescript-eslint/parser": "^5.51.0",
"ag-charts-test": "10.1.0",
"ag-charts-test": "10.2.0",
"assert": "2.0.0",

@@ -74,0 +74,0 @@ "canvas": "^2.10.2",

@@ -7,6 +7,6 @@ # JavaScript Charting Library

<source media="(prefers-color-scheme: light)" srcset="https://github.com/ag-grid/ag-grid/blob/latest/documentation/ag-grid-docs/public/images/ag-logos/svg-logos/AG-Charts-Logo_Light-Theme.svg?raw=true"/>
<img width="100%" alt="AG Charts Logo" src="https://github.com/ag-grid/ag-grid/blob/latest/documentation/ag-grid-docs/public/images/ag-logos/svg-logos/AG-Charts-Logo_Dark-Theme.svg?raw=true"/>
<img width="100%" alt="AG Charts Logo" src="https://github.com/ag-grid/ag-grid/blob/latest/documentation/ag-grid-docs/public/images/ag-logos/svg-logos/AG-Charts-Logo_Light-Theme.svg?raw=true"/>
</picture>
<div align="center">
<h4><a href="https://charts.ag-grid.com/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github">🌐 Website</a> • <a href="https://charts.ag-grid.com/javascript/quick-start/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github">📖 Documentation</a> • <a href="https://charts.ag-grid.com/gallery/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github">📊 Gallery</a></h4>
<h4><a href="https://ag-grid.com/charts/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github">🌐 Website</a> • <a href="https://ag-grid.com/charts/javascript/quick-start/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github">📖 Documentation</a> • <a href="https://ag-grid.com/charts/gallery/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github">📊 Gallery</a></h4>
</div>

@@ -73,6 +73,6 @@ <br>

<source media="(prefers-color-scheme: light)" srcset="https://github.com/ag-grid/ag-charts/blob/latest/packages/ag-charts-website/public/images/readme-assets/gallery.gif?raw=true"/>
<img width="100%" alt="Preview of AG Charts JavaScript Charting Examples" src="https://github.com/ag-grid/ag-charts/blob/latest/packages/ag-charts-website/public/images/readme-assets/gallery-dark.gif?raw=true"/>
<img width="100%" alt="Preview of AG Charts JavaScript Charting Examples" src="https://github.com/ag-grid/ag-charts/blob/latest/packages/ag-charts-website/public/images/readme-assets/gallery.gif?raw=true"/>
</picture>
<div align="right">
<a href="https://charts.ag-grid.com/gallery/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github"><br><img alt="Static Badge" src="https://img.shields.io/badge/View%20Gallery-blue?style=for-the-badge&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KDTwhLS0gVXBsb2FkZWQgdG86IFNWRyBSZXBvLCB3d3cuc3ZncmVwby5jb20sIFRyYW5zZm9ybWVkIGJ5OiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KDTxnIGlkPSJTVkdSZXBvX2JnQ2FycmllciIgc3Ryb2tlLXdpZHRoPSIwIi8%2BCg08ZyBpZD0iU1ZHUmVwb190cmFjZXJDYXJyaWVyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KDTxnIGlkPSJTVkdSZXBvX2ljb25DYXJyaWVyIj4gPHBhdGggZD0iTTE4IDIwLjc1SDZDNS4yNzA2NSAyMC43NSA0LjU3MTE4IDIwLjQ2MDMgNC4wNTU0NiAxOS45NDQ1QzMuNTM5NzMgMTkuNDI4OCAzLjI1IDE4LjcyOTMgMy4yNSAxOFY2QzMuMjUgNS4yNzA2NSAzLjUzOTczIDQuNTcxMTggNC4wNTU0NiA0LjA1NTQ2QzQuNTcxMTggMy41Mzk3MyA1LjI3MDY1IDMuMjUgNiAzLjI1SDEyQzEyLjE5ODkgMy4yNSAxMi4zODk3IDMuMzI5MDIgMTIuNTMwMyAzLjQ2OTY3QzEyLjY3MSAzLjYxMDMyIDEyLjc1IDMuODAxMDkgMTIuNzUgNEMxMi43NSA0LjE5ODkxIDEyLjY3MSA0LjM4OTY4IDEyLjUzMDMgNC41MzAzM0MxMi4zODk3IDQuNjcwOTggMTIuMTk4OSA0Ljc1IDEyIDQuNzVINkM1LjY2ODQ4IDQuNzUgNS4zNTA1NCA0Ljg4MTcgNS4xMTYxMiA1LjExNjEyQzQuODgxNyA1LjM1MDU0IDQuNzUgNS42Njg0OCA0Ljc1IDZWMThDNC43NSAxOC4zMzE1IDQuODgxNyAxOC42NDk1IDUuMTE2MTIgMTguODgzOUM1LjM1MDU0IDE5LjExODMgNS42Njg0OCAxOS4yNSA2IDE5LjI1SDE4QzE4LjMzMTUgMTkuMjUgMTguNjQ5NSAxOS4xMTgzIDE4Ljg4MzkgMTguODgzOUMxOS4xMTgzIDE4LjY0OTUgMTkuMjUgMTguMzMxNSAxOS4yNSAxOFYxMkMxOS4yNSAxMS44MDExIDE5LjMyOSAxMS42MTAzIDE5LjQ2OTcgMTEuNDY5N0MxOS42MTAzIDExLjMyOSAxOS44MDExIDExLjI1IDIwIDExLjI1QzIwLjE5ODkgMTEuMjUgMjAuMzg5NyAxMS4zMjkgMjAuNTMwMyAxMS40Njk3QzIwLjY3MSAxMS42MTAzIDIwLjc1IDExLjgwMTEgMjAuNzUgMTJWMThDMjAuNzUgMTguNzI5MyAyMC40NjAzIDE5LjQyODggMTkuOTQ0NSAxOS45NDQ1QzE5LjQyODggMjAuNDYwMyAxOC43MjkzIDIwLjc1IDE4IDIwLjc1WiIgZmlsbD0iI2ZmZmZmZiIvPiA8cGF0aCBkPSJNMjAgOC43NUMxOS44MDE5IDguNzQ3NDEgMTkuNjEyNiA4LjY2NzU2IDE5LjQ3MjUgOC41Mjc0N0MxOS4zMzI0IDguMzg3MzcgMTkuMjUyNiA4LjE5ODExIDE5LjI1IDhWNC43NUgxNkMxNS44MDExIDQuNzUgMTUuNjEwMyA0LjY3MDk4IDE1LjQ2OTcgNC41MzAzM0MxNS4zMjkgNC4zODk2OCAxNS4yNSA0LjE5ODkxIDE1LjI1IDRDMTUuMjUgMy44MDEwOSAxNS4zMjkgMy42MTAzMiAxNS40Njk3IDMuNDY5NjdDMTUuNjEwMyAzLjMyOTAyIDE1LjgwMTEgMy4yNSAxNiAzLjI1SDIwQzIwLjE5ODEgMy4yNTI1OSAyMC4zODc0IDMuMzMyNDQgMjAuNTI3NSAzLjQ3MjUzQzIwLjY2NzYgMy42MTI2MyAyMC43NDc0IDMuODAxODkgMjAuNzUgNFY4QzIwLjc0NzQgOC4xOTgxMSAyMC42Njc2IDguMzg3MzcgMjAuNTI3NSA4LjUyNzQ3QzIwLjM4NzQgOC42Njc1NiAyMC4xOTgxIDguNzQ3NDEgMjAgOC43NVoiIGZpbGw9IiNmZmZmZmYiLz4gPHBhdGggZD0iTTEzLjUgMTEuMjVDMTMuMzA3MSAxMS4yMzUyIDEzLjEyNzYgMTEuMTQ1NSAxMyAxMUMxMi44NzcgMTAuODYyNSAxMi44MDkgMTAuNjg0NSAxMi44MDkgMTAuNUMxMi44MDkgMTAuMzE1NSAxMi44NzcgMTAuMTM3NSAxMyAxMEwxOS41IDMuNUMxOS41Njg3IDMuNDI2MzEgMTkuNjUxNSAzLjM2NzIxIDE5Ljc0MzUgMy4zMjYyMkMxOS44MzU1IDMuMjg1MjMgMTkuOTM0OCAzLjI2MzE5IDIwLjAzNTUgMy4yNjE0MUMyMC4xMzYyIDMuMjU5NjMgMjAuMjM2MiAzLjI3ODE2IDIwLjMyOTYgMy4zMTU4OEMyMC40MjMgMy4zNTM2IDIwLjUwNzggMy40MDk3NCAyMC41NzkgMy40ODA5NkMyMC42NTAzIDMuNTUyMTggMjAuNzA2NCAzLjYzNzAxIDIwLjc0NDEgMy43MzA0QzIwLjc4MTggMy44MjM3OSAyMC44MDA0IDMuOTIzODIgMjAuNzk4NiA0LjAyNDUyQzIwLjc5NjggNC4xMjUyMyAyMC43NzQ4IDQuMjI0NTQgMjAuNzMzOCA0LjMxNjU0QzIwLjY5MjggNC40MDg1NCAyMC42MzM3IDQuNDkxMzQgMjAuNTYgNC41NkwxNCAxMUMxMy44NzI0IDExLjE0NTUgMTMuNjkyOSAxMS4yMzUyIDEzLjUgMTEuMjVaIiBmaWxsPSIjZmZmZmZmIi8%2BIDwvZz4KDTwvc3ZnPg%3D%3D">
<a href="https://ag-grid.com/charts/gallery/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github"><br><img alt="Static Badge" src="https://img.shields.io/badge/View%20Gallery-blue?style=for-the-badge&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KDTwhLS0gVXBsb2FkZWQgdG86IFNWRyBSZXBvLCB3d3cuc3ZncmVwby5jb20sIFRyYW5zZm9ybWVkIGJ5OiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KDTxnIGlkPSJTVkdSZXBvX2JnQ2FycmllciIgc3Ryb2tlLXdpZHRoPSIwIi8%2BCg08ZyBpZD0iU1ZHUmVwb190cmFjZXJDYXJyaWVyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KDTxnIGlkPSJTVkdSZXBvX2ljb25DYXJyaWVyIj4gPHBhdGggZD0iTTE4IDIwLjc1SDZDNS4yNzA2NSAyMC43NSA0LjU3MTE4IDIwLjQ2MDMgNC4wNTU0NiAxOS45NDQ1QzMuNTM5NzMgMTkuNDI4OCAzLjI1IDE4LjcyOTMgMy4yNSAxOFY2QzMuMjUgNS4yNzA2NSAzLjUzOTczIDQuNTcxMTggNC4wNTU0NiA0LjA1NTQ2QzQuNTcxMTggMy41Mzk3MyA1LjI3MDY1IDMuMjUgNiAzLjI1SDEyQzEyLjE5ODkgMy4yNSAxMi4zODk3IDMuMzI5MDIgMTIuNTMwMyAzLjQ2OTY3QzEyLjY3MSAzLjYxMDMyIDEyLjc1IDMuODAxMDkgMTIuNzUgNEMxMi43NSA0LjE5ODkxIDEyLjY3MSA0LjM4OTY4IDEyLjUzMDMgNC41MzAzM0MxMi4zODk3IDQuNjcwOTggMTIuMTk4OSA0Ljc1IDEyIDQuNzVINkM1LjY2ODQ4IDQuNzUgNS4zNTA1NCA0Ljg4MTcgNS4xMTYxMiA1LjExNjEyQzQuODgxNyA1LjM1MDU0IDQuNzUgNS42Njg0OCA0Ljc1IDZWMThDNC43NSAxOC4zMzE1IDQuODgxNyAxOC42NDk1IDUuMTE2MTIgMTguODgzOUM1LjM1MDU0IDE5LjExODMgNS42Njg0OCAxOS4yNSA2IDE5LjI1SDE4QzE4LjMzMTUgMTkuMjUgMTguNjQ5NSAxOS4xMTgzIDE4Ljg4MzkgMTguODgzOUMxOS4xMTgzIDE4LjY0OTUgMTkuMjUgMTguMzMxNSAxOS4yNSAxOFYxMkMxOS4yNSAxMS44MDExIDE5LjMyOSAxMS42MTAzIDE5LjQ2OTcgMTEuNDY5N0MxOS42MTAzIDExLjMyOSAxOS44MDExIDExLjI1IDIwIDExLjI1QzIwLjE5ODkgMTEuMjUgMjAuMzg5NyAxMS4zMjkgMjAuNTMwMyAxMS40Njk3QzIwLjY3MSAxMS42MTAzIDIwLjc1IDExLjgwMTEgMjAuNzUgMTJWMThDMjAuNzUgMTguNzI5MyAyMC40NjAzIDE5LjQyODggMTkuOTQ0NSAxOS45NDQ1QzE5LjQyODggMjAuNDYwMyAxOC43MjkzIDIwLjc1IDE4IDIwLjc1WiIgZmlsbD0iI2ZmZmZmZiIvPiA8cGF0aCBkPSJNMjAgOC43NUMxOS44MDE5IDguNzQ3NDEgMTkuNjEyNiA4LjY2NzU2IDE5LjQ3MjUgOC41Mjc0N0MxOS4zMzI0IDguMzg3MzcgMTkuMjUyNiA4LjE5ODExIDE5LjI1IDhWNC43NUgxNkMxNS44MDExIDQuNzUgMTUuNjEwMyA0LjY3MDk4IDE1LjQ2OTcgNC41MzAzM0MxNS4zMjkgNC4zODk2OCAxNS4yNSA0LjE5ODkxIDE1LjI1IDRDMTUuMjUgMy44MDEwOSAxNS4zMjkgMy42MTAzMiAxNS40Njk3IDMuNDY5NjdDMTUuNjEwMyAzLjMyOTAyIDE1LjgwMTEgMy4yNSAxNiAzLjI1SDIwQzIwLjE5ODEgMy4yNTI1OSAyMC4zODc0IDMuMzMyNDQgMjAuNTI3NSAzLjQ3MjUzQzIwLjY2NzYgMy42MTI2MyAyMC43NDc0IDMuODAxODkgMjAuNzUgNFY4QzIwLjc0NzQgOC4xOTgxMSAyMC42Njc2IDguMzg3MzcgMjAuNTI3NSA4LjUyNzQ3QzIwLjM4NzQgOC42Njc1NiAyMC4xOTgxIDguNzQ3NDEgMjAgOC43NVoiIGZpbGw9IiNmZmZmZmYiLz4gPHBhdGggZD0iTTEzLjUgMTEuMjVDMTMuMzA3MSAxMS4yMzUyIDEzLjEyNzYgMTEuMTQ1NSAxMyAxMUMxMi44NzcgMTAuODYyNSAxMi44MDkgMTAuNjg0NSAxMi44MDkgMTAuNUMxMi44MDkgMTAuMzE1NSAxMi44NzcgMTAuMTM3NSAxMyAxMEwxOS41IDMuNUMxOS41Njg3IDMuNDI2MzEgMTkuNjUxNSAzLjM2NzIxIDE5Ljc0MzUgMy4zMjYyMkMxOS44MzU1IDMuMjg1MjMgMTkuOTM0OCAzLjI2MzE5IDIwLjAzNTUgMy4yNjE0MUMyMC4xMzYyIDMuMjU5NjMgMjAuMjM2MiAzLjI3ODE2IDIwLjMyOTYgMy4zMTU4OEMyMC40MjMgMy4zNTM2IDIwLjUwNzggMy40MDk3NCAyMC41NzkgMy40ODA5NkMyMC42NTAzIDMuNTUyMTggMjAuNzA2NCAzLjYzNzAxIDIwLjc0NDEgMy43MzA0QzIwLjc4MTggMy44MjM3OSAyMC44MDA0IDMuOTIzODIgMjAuNzk4NiA0LjAyNDUyQzIwLjc5NjggNC4xMjUyMyAyMC43NzQ4IDQuMjI0NTQgMjAuNzMzOCA0LjMxNjU0QzIwLjY5MjggNC40MDg1NCAyMC42MzM3IDQuNDkxMzQgMjAuNTYgNC41NkwxNCAxMUMxMy44NzI0IDExLjE0NTUgMTMuNjkyOSAxMS4yMzUyIDEzLjUgMTEuMjVaIiBmaWxsPSIjZmZmZmZmIi8%2BIDwvZz4KDTwvc3ZnPg%3D%3D">
</a>

@@ -105,4 +105,4 @@ </div>

- `ag-charts-community` is free, available under the MIT license, and comes with core series types, such as [Pie](https://charts.ag-grid.com/javascript/pie-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Area](https://charts.ag-grid.com/javascript/area-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Bar](https://charts.ag-grid.com/javascript/bar-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Scatter](https://charts.ag-grid.com/javascript/scatter-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) and [Bubble](https://charts.ag-grid.com/javascript/bubble-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) in addition to all of the key features expected from a JavaScript charting library, including [Accessibility](https://charts.ag-grid.com/javascript/accessibility/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Tooltips](https://charts.ag-grid.com/javascript/tooltips/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Themes](https://charts.ag-grid.com/javascript/themes/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Markers](https://charts.ag-grid.com/javascript/markers/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Legends](https://charts.ag-grid.com/javascript/legend/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Axis Types](https://charts.ag-grid.com/javascript/axes-types/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) and [Secondary Axes](https://charts.ag-grid.com/javascript/axes-secondary/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github).
- `ag-charts-enterprise` is available under a commercial license and comes with additional series types, such as [Maps](https://charts.ag-grid.com/javascript/maps/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Sankey](https://charts.ag-grid.com/javascript/sankey-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Radar](https://charts.ag-grid.com/javascript/radar-area-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), and [Waterfall](https://charts.ag-grid.com/javascript/waterfall-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) Charts as well as advanced interactivity features, like [Animations](https://charts.ag-grid.com/javascript/animation/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Context Menus](https://charts.ag-grid.com/javascript/context-menu/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Zooming](https://charts.ag-grid.com/javascript/zoom/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Navigators](https://charts.ag-grid.com/javascript/navigator/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Synchronization](https://charts.ag-grid.com/javascript/sync/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) and much more, including [Financial Charts](https://charts.ag-grid.com/javascript/financial-charts/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github).
- `ag-charts-community` is free, available under the MIT license, and comes with core series types, such as [Pie](https://ag-grid.com/charts/javascript/pie-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Area](https://ag-grid.com/charts/javascript/area-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Bar](https://ag-grid.com/charts/javascript/bar-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Scatter](https://ag-grid.com/charts/javascript/scatter-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) and [Bubble](https://ag-grid.com/charts/javascript/bubble-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) in addition to all of the key features expected from a JavaScript charting library, including [Accessibility](https://ag-grid.com/charts/javascript/accessibility/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Tooltips](https://ag-grid.com/charts/javascript/tooltips/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Themes](https://ag-grid.com/charts/javascript/themes/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Markers](https://ag-grid.com/charts/javascript/markers/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Legends](https://ag-grid.com/charts/javascript/legend/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Axis Types](https://ag-grid.com/charts/javascript/axes-types/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) and [Secondary Axes](https://ag-grid.com/charts/javascript/axes-secondary/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github).
- `ag-charts-enterprise` is available under a commercial license and comes with additional series types, such as [Maps](https://ag-grid.com/charts/javascript/maps/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Sankey](https://ag-grid.com/charts/javascript/sankey-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Radar](https://ag-grid.com/charts/javascript/radar-area-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), and [Waterfall](https://ag-grid.com/charts/javascript/waterfall-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) Charts as well as advanced interactivity features, like [Animations](https://ag-grid.com/charts/javascript/animation/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Context Menus](https://ag-grid.com/charts/javascript/context-menu/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Zooming](https://ag-grid.com/charts/javascript/zoom/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Navigators](https://ag-grid.com/charts/javascript/navigator/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Synchronization](https://ag-grid.com/charts/javascript/sync/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) and much more, including [Financial Charts](https://ag-grid.com/charts/javascript/financial-charts/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github).

@@ -117,28 +117,28 @@ ### Features & Chart Types

| -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | -------------------- |
| [Bar](https://charts.ag-grid.com/javascript/bar-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Line](https://charts.ag-grid.com/javascript/line-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Area](https://charts.ag-grid.com/javascript/area-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Scatter](https://charts.ag-grid.com/javascript/scatter-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Bubble](https://charts.ag-grid.com/javascript/bubble-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Pie](https://charts.ag-grid.com/javascript/pie-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Donut](https://charts.ag-grid.com/javascript/donut-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Combination](https://charts.ag-grid.com/javascript/combination-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Box Plot](https://charts.ag-grid.com/javascript/box-plot-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Bullet](https://charts.ag-grid.com/javascript/bullet-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Candlestick](https://charts.ag-grid.com/javascript/candlestick-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [OHLC](https://charts.ag-grid.com/javascript/ohlc-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Heatmap](https://charts.ag-grid.com/javascript/heatmap-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Histogram](https://charts.ag-grid.com/javascript/histogram-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Nightingale](https://charts.ag-grid.com/javascript/nightingale-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Radar Line](https://charts.ag-grid.com/javascript/radar-line-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Radar Area](https://charts.ag-grid.com/javascript/radar-area-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Radial Column](https://charts.ag-grid.com/javascript/radial-column-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Radial Bar](https://charts.ag-grid.com/javascript/radial-bar-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Range Area](https://charts.ag-grid.com/javascript/range-area-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Range Bar](https://charts.ag-grid.com/javascript/range-bar-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Sunburst](https://charts.ag-grid.com/javascript/sunburst-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Treemap](https://charts.ag-grid.com/javascript/treemap-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Waterfall](https://charts.ag-grid.com/javascript/waterfall-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Sankey](https://charts.ag-grid.com/javascript/sankey-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Chord](https://charts.ag-grid.com/javascript/chord-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Bar](https://ag-grid.com/charts/javascript/bar-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Line](https://ag-grid.com/charts/javascript/line-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Area](https://ag-grid.com/charts/javascript/area-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Scatter](https://ag-grid.com/charts/javascript/scatter-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Bubble](https://ag-grid.com/charts/javascript/bubble-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Pie](https://ag-grid.com/charts/javascript/pie-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Donut](https://ag-grid.com/charts/javascript/donut-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Combination](https://ag-grid.com/charts/javascript/combination-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Box Plot](https://ag-grid.com/charts/javascript/box-plot-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Bullet](https://ag-grid.com/charts/javascript/bullet-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Candlestick](https://ag-grid.com/charts/javascript/candlestick-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [OHLC](https://ag-grid.com/charts/javascript/ohlc-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Heatmap](https://ag-grid.com/charts/javascript/heatmap-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Histogram](https://ag-grid.com/charts/javascript/histogram-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Nightingale](https://ag-grid.com/charts/javascript/nightingale-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Radar Line](https://ag-grid.com/charts/javascript/radar-line-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Radar Area](https://ag-grid.com/charts/javascript/radar-area-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Radial Column](https://ag-grid.com/charts/javascript/radial-column-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Radial Bar](https://ag-grid.com/charts/javascript/radial-bar-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Range Area](https://ag-grid.com/charts/javascript/range-area-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Range Bar](https://ag-grid.com/charts/javascript/range-bar-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Sunburst](https://ag-grid.com/charts/javascript/sunburst-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Treemap](https://ag-grid.com/charts/javascript/treemap-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Waterfall](https://ag-grid.com/charts/javascript/waterfall-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Sankey](https://ag-grid.com/charts/javascript/sankey-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Chord](https://ag-grid.com/charts/javascript/chord-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |

@@ -151,15 +151,17 @@ #### Features

| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | -------------------- |
| [Accessibility](https://charts.ag-grid.com/javascript/accessibility/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Localisation](https://charts.ag-grid.com/javascript/localisation/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Series Highlighting](https://charts.ag-grid.com/javascript/series-highlighting/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Tooltips](https://charts.ag-grid.com/javascript/tooltips/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Animations](https://charts.ag-grid.com/javascript/animation/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Context Menu](https://charts.ag-grid.com/javascript/context-menu/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Crosshairs](https://charts.ag-grid.com/javascript/axes-crosshairs/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Navigator](https://charts.ag-grid.com/javascript/navigator/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Synchronization](https://charts.ag-grid.com/javascript/sync/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Zoom](https://charts.ag-grid.com/javascript/zoom/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Accessibility](https://ag-grid.com/charts/javascript/accessibility/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Localisation](https://ag-grid.com/charts/javascript/localisation/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Series Highlighting](https://ag-grid.com/charts/javascript/series-highlighting/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Tooltips](https://ag-grid.com/charts/javascript/tooltips/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ✅ | ✅ |
| [Animations](https://ag-grid.com/charts/javascript/animation/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Context Menu](https://ag-grid.com/charts/javascript/context-menu/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Crosshairs](https://ag-grid.com/charts/javascript/axes-crosshairs/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Navigator](https://ag-grid.com/charts/javascript/navigator/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Synchronization](https://ag-grid.com/charts/javascript/sync/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
| [Zoom](https://ag-grid.com/charts/javascript/zoom/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) | ❌ | ✅ |
> [!IMPORTANT]
> Visit the [Pricing](https://charts.ag-grid.com/license-pricing/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) page for a full comparison.
<blockquote>
<p>ℹ️ <b>Note:</b></p>
<span>Visit the <a href="https://ag-grid.com/charts/license-pricing/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github">Pricing</a> page for a full comparison.</span>
</blockquote>

@@ -185,12 +187,12 @@ ### Financial Charts

<picture>
<source media="(prefers-color-scheme: light)" srcset="https://github.com/ag-grid/ag-charts/blob/latest/packages/ag-charts-website/public/images/readme-assets/financial-charts-annotations-light.gif?raw=true"/>
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/ag-grid/ag-charts/blob/latest/packages/ag-charts-website/public/images/readme-assets/financial-charts-annotations.gif?raw=true"/>
<source media="(prefers-color-scheme: light)" srcset="https://github.com/ag-grid/ag-charts/blob/latest/packages/ag-charts-website/public/images/readme-assets/financial-charts-annotations-light.gif?raw=true"/>
<img width="100%" alt="Financial Charts Annotations" src="https://github.com/ag-grid/ag-charts/blob/latest/packages/ag-charts-website/public/images/readme-assets/financial-charts-annotations.gif?raw=true"/>
<img width="100%" alt="Financial Charts Annotations" src="https://github.com/ag-grid/ag-charts/blob/latest/packages/ag-charts-website/public/images/readme-assets/financial-charts-annotations-light.gif?raw=true"/>
<br>
</picture>
The default chart type is [Candlestick](https://charts.ag-grid.com/javascript/candlestick-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), with additional types like [OHLC](https://charts.ag-grid.com/javascript/ohlc-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) and [Line](https://charts.ag-grid.com/javascript/line-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) for versatile data visualisation.
The default chart type is [Candlestick](https://ag-grid.com/charts/javascript/candlestick-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), with additional types like [OHLC](https://ag-grid.com/charts/javascript/ohlc-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) and [Line](https://ag-grid.com/charts/javascript/line-series/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) for versatile data visualisation.
<div align="right">
<a href="https://charts.ag-grid.com/javascript/financial-charts/"><br><img alt="Static Badge" src="https://img.shields.io/badge/Learn More-blue?style=for-the-badge&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KDTwhLS0gVXBsb2FkZWQgdG86IFNWRyBSZXBvLCB3d3cuc3ZncmVwby5jb20sIFRyYW5zZm9ybWVkIGJ5OiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KDTxnIGlkPSJTVkdSZXBvX2JnQ2FycmllciIgc3Ryb2tlLXdpZHRoPSIwIi8%2BCg08ZyBpZD0iU1ZHUmVwb190cmFjZXJDYXJyaWVyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KDTxnIGlkPSJTVkdSZXBvX2ljb25DYXJyaWVyIj4gPHBhdGggZD0iTTE4IDIwLjc1SDZDNS4yNzA2NSAyMC43NSA0LjU3MTE4IDIwLjQ2MDMgNC4wNTU0NiAxOS45NDQ1QzMuNTM5NzMgMTkuNDI4OCAzLjI1IDE4LjcyOTMgMy4yNSAxOFY2QzMuMjUgNS4yNzA2NSAzLjUzOTczIDQuNTcxMTggNC4wNTU0NiA0LjA1NTQ2QzQuNTcxMTggMy41Mzk3MyA1LjI3MDY1IDMuMjUgNiAzLjI1SDEyQzEyLjE5ODkgMy4yNSAxMi4zODk3IDMuMzI5MDIgMTIuNTMwMyAzLjQ2OTY3QzEyLjY3MSAzLjYxMDMyIDEyLjc1IDMuODAxMDkgMTIuNzUgNEMxMi43NSA0LjE5ODkxIDEyLjY3MSA0LjM4OTY4IDEyLjUzMDMgNC41MzAzM0MxMi4zODk3IDQuNjcwOTggMTIuMTk4OSA0Ljc1IDEyIDQuNzVINkM1LjY2ODQ4IDQuNzUgNS4zNTA1NCA0Ljg4MTcgNS4xMTYxMiA1LjExNjEyQzQuODgxNyA1LjM1MDU0IDQuNzUgNS42Njg0OCA0Ljc1IDZWMThDNC43NSAxOC4zMzE1IDQuODgxNyAxOC42NDk1IDUuMTE2MTIgMTguODgzOUM1LjM1MDU0IDE5LjExODMgNS42Njg0OCAxOS4yNSA2IDE5LjI1SDE4QzE4LjMzMTUgMTkuMjUgMTguNjQ5NSAxOS4xMTgzIDE4Ljg4MzkgMTguODgzOUMxOS4xMTgzIDE4LjY0OTUgMTkuMjUgMTguMzMxNSAxOS4yNSAxOFYxMkMxOS4yNSAxMS44MDExIDE5LjMyOSAxMS42MTAzIDE5LjQ2OTcgMTEuNDY5N0MxOS42MTAzIDExLjMyOSAxOS44MDExIDExLjI1IDIwIDExLjI1QzIwLjE5ODkgMTEuMjUgMjAuMzg5NyAxMS4zMjkgMjAuNTMwMyAxMS40Njk3QzIwLjY3MSAxMS42MTAzIDIwLjc1IDExLjgwMTEgMjAuNzUgMTJWMThDMjAuNzUgMTguNzI5MyAyMC40NjAzIDE5LjQyODggMTkuOTQ0NSAxOS45NDQ1QzE5LjQyODggMjAuNDYwMyAxOC43MjkzIDIwLjc1IDE4IDIwLjc1WiIgZmlsbD0iI2ZmZmZmZiIvPiA8cGF0aCBkPSJNMjAgOC43NUMxOS44MDE5IDguNzQ3NDEgMTkuNjEyNiA4LjY2NzU2IDE5LjQ3MjUgOC41Mjc0N0MxOS4zMzI0IDguMzg3MzcgMTkuMjUyNiA4LjE5ODExIDE5LjI1IDhWNC43NUgxNkMxNS44MDExIDQuNzUgMTUuNjEwMyA0LjY3MDk4IDE1LjQ2OTcgNC41MzAzM0MxNS4zMjkgNC4zODk2OCAxNS4yNSA0LjE5ODkxIDE1LjI1IDRDMTUuMjUgMy44MDEwOSAxNS4zMjkgMy42MTAzMiAxNS40Njk3IDMuNDY5NjdDMTUuNjEwMyAzLjMyOTAyIDE1LjgwMTEgMy4yNSAxNiAzLjI1SDIwQzIwLjE5ODEgMy4yNTI1OSAyMC4zODc0IDMuMzMyNDQgMjAuNTI3NSAzLjQ3MjUzQzIwLjY2NzYgMy42MTI2MyAyMC43NDc0IDMuODAxODkgMjAuNzUgNFY4QzIwLjc0NzQgOC4xOTgxMSAyMC42Njc2IDguMzg3MzcgMjAuNTI3NSA4LjUyNzQ3QzIwLjM4NzQgOC42Njc1NiAyMC4xOTgxIDguNzQ3NDEgMjAgOC43NVoiIGZpbGw9IiNmZmZmZmYiLz4gPHBhdGggZD0iTTEzLjUgMTEuMjVDMTMuMzA3MSAxMS4yMzUyIDEzLjEyNzYgMTEuMTQ1NSAxMyAxMUMxMi44NzcgMTAuODYyNSAxMi44MDkgMTAuNjg0NSAxMi44MDkgMTAuNUMxMi44MDkgMTAuMzE1NSAxMi44NzcgMTAuMTM3NSAxMyAxMEwxOS41IDMuNUMxOS41Njg3IDMuNDI2MzEgMTkuNjUxNSAzLjM2NzIxIDE5Ljc0MzUgMy4zMjYyMkMxOS44MzU1IDMuMjg1MjMgMTkuOTM0OCAzLjI2MzE5IDIwLjAzNTUgMy4yNjE0MUMyMC4xMzYyIDMuMjU5NjMgMjAuMjM2MiAzLjI3ODE2IDIwLjMyOTYgMy4zMTU4OEMyMC40MjMgMy4zNTM2IDIwLjUwNzggMy40MDk3NCAyMC41NzkgMy40ODA5NkMyMC42NTAzIDMuNTUyMTggMjAuNzA2NCAzLjYzNzAxIDIwLjc0NDEgMy43MzA0QzIwLjc4MTggMy44MjM3OSAyMC44MDA0IDMuOTIzODIgMjAuNzk4NiA0LjAyNDUyQzIwLjc5NjggNC4xMjUyMyAyMC43NzQ4IDQuMjI0NTQgMjAuNzMzOCA0LjMxNjU0QzIwLjY5MjggNC40MDg1NCAyMC42MzM3IDQuNDkxMzQgMjAuNTYgNC41NkwxNCAxMUMxMy44NzI0IDExLjE0NTUgMTMuNjkyOSAxMS4yMzUyIDEzLjUgMTEuMjVaIiBmaWxsPSIjZmZmZmZmIi8%2BIDwvZz4KDTwvc3ZnPg%3D%3D"></a>
<a href="https://ag-grid.com/charts/javascript/financial-charts/"><br><img alt="Static Badge" src="https://img.shields.io/badge/Learn More-blue?style=for-the-badge&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KDTwhLS0gVXBsb2FkZWQgdG86IFNWRyBSZXBvLCB3d3cuc3ZncmVwby5jb20sIFRyYW5zZm9ybWVkIGJ5OiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KDTxnIGlkPSJTVkdSZXBvX2JnQ2FycmllciIgc3Ryb2tlLXdpZHRoPSIwIi8%2BCg08ZyBpZD0iU1ZHUmVwb190cmFjZXJDYXJyaWVyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KDTxnIGlkPSJTVkdSZXBvX2ljb25DYXJyaWVyIj4gPHBhdGggZD0iTTE4IDIwLjc1SDZDNS4yNzA2NSAyMC43NSA0LjU3MTE4IDIwLjQ2MDMgNC4wNTU0NiAxOS45NDQ1QzMuNTM5NzMgMTkuNDI4OCAzLjI1IDE4LjcyOTMgMy4yNSAxOFY2QzMuMjUgNS4yNzA2NSAzLjUzOTczIDQuNTcxMTggNC4wNTU0NiA0LjA1NTQ2QzQuNTcxMTggMy41Mzk3MyA1LjI3MDY1IDMuMjUgNiAzLjI1SDEyQzEyLjE5ODkgMy4yNSAxMi4zODk3IDMuMzI5MDIgMTIuNTMwMyAzLjQ2OTY3QzEyLjY3MSAzLjYxMDMyIDEyLjc1IDMuODAxMDkgMTIuNzUgNEMxMi43NSA0LjE5ODkxIDEyLjY3MSA0LjM4OTY4IDEyLjUzMDMgNC41MzAzM0MxMi4zODk3IDQuNjcwOTggMTIuMTk4OSA0Ljc1IDEyIDQuNzVINkM1LjY2ODQ4IDQuNzUgNS4zNTA1NCA0Ljg4MTcgNS4xMTYxMiA1LjExNjEyQzQuODgxNyA1LjM1MDU0IDQuNzUgNS42Njg0OCA0Ljc1IDZWMThDNC43NSAxOC4zMzE1IDQuODgxNyAxOC42NDk1IDUuMTE2MTIgMTguODgzOUM1LjM1MDU0IDE5LjExODMgNS42Njg0OCAxOS4yNSA2IDE5LjI1SDE4QzE4LjMzMTUgMTkuMjUgMTguNjQ5NSAxOS4xMTgzIDE4Ljg4MzkgMTguODgzOUMxOS4xMTgzIDE4LjY0OTUgMTkuMjUgMTguMzMxNSAxOS4yNSAxOFYxMkMxOS4yNSAxMS44MDExIDE5LjMyOSAxMS42MTAzIDE5LjQ2OTcgMTEuNDY5N0MxOS42MTAzIDExLjMyOSAxOS44MDExIDExLjI1IDIwIDExLjI1QzIwLjE5ODkgMTEuMjUgMjAuMzg5NyAxMS4zMjkgMjAuNTMwMyAxMS40Njk3QzIwLjY3MSAxMS42MTAzIDIwLjc1IDExLjgwMTEgMjAuNzUgMTJWMThDMjAuNzUgMTguNzI5MyAyMC40NjAzIDE5LjQyODggMTkuOTQ0NSAxOS45NDQ1QzE5LjQyODggMjAuNDYwMyAxOC43MjkzIDIwLjc1IDE4IDIwLjc1WiIgZmlsbD0iI2ZmZmZmZiIvPiA8cGF0aCBkPSJNMjAgOC43NUMxOS44MDE5IDguNzQ3NDEgMTkuNjEyNiA4LjY2NzU2IDE5LjQ3MjUgOC41Mjc0N0MxOS4zMzI0IDguMzg3MzcgMTkuMjUyNiA4LjE5ODExIDE5LjI1IDhWNC43NUgxNkMxNS44MDExIDQuNzUgMTUuNjEwMyA0LjY3MDk4IDE1LjQ2OTcgNC41MzAzM0MxNS4zMjkgNC4zODk2OCAxNS4yNSA0LjE5ODkxIDE1LjI1IDRDMTUuMjUgMy44MDEwOSAxNS4zMjkgMy42MTAzMiAxNS40Njk3IDMuNDY5NjdDMTUuNjEwMyAzLjMyOTAyIDE1LjgwMTEgMy4yNSAxNiAzLjI1SDIwQzIwLjE5ODEgMy4yNTI1OSAyMC4zODc0IDMuMzMyNDQgMjAuNTI3NSAzLjQ3MjUzQzIwLjY2NzYgMy42MTI2MyAyMC43NDc0IDMuODAxODkgMjAuNzUgNFY4QzIwLjc0NzQgOC4xOTgxMSAyMC42Njc2IDguMzg3MzcgMjAuNTI3NSA4LjUyNzQ3QzIwLjM4NzQgOC42Njc1NiAyMC4xOTgxIDguNzQ3NDEgMjAgOC43NVoiIGZpbGw9IiNmZmZmZmYiLz4gPHBhdGggZD0iTTEzLjUgMTEuMjVDMTMuMzA3MSAxMS4yMzUyIDEzLjEyNzYgMTEuMTQ1NSAxMyAxMUMxMi44NzcgMTAuODYyNSAxMi44MDkgMTAuNjg0NSAxMi44MDkgMTAuNUMxMi44MDkgMTAuMzE1NSAxMi44NzcgMTAuMTM3NSAxMyAxMEwxOS41IDMuNUMxOS41Njg3IDMuNDI2MzEgMTkuNjUxNSAzLjM2NzIxIDE5Ljc0MzUgMy4zMjYyMkMxOS44MzU1IDMuMjg1MjMgMTkuOTM0OCAzLjI2MzE5IDIwLjAzNTUgMy4yNjE0MUMyMC4xMzYyIDMuMjU5NjMgMjAuMjM2MiAzLjI3ODE2IDIwLjMyOTYgMy4zMTU4OEMyMC40MjMgMy4zNTM2IDIwLjUwNzggMy40MDk3NCAyMC41NzkgMy40ODA5NkMyMC42NTAzIDMuNTUyMTggMjAuNzA2NCAzLjYzNzAxIDIwLjc0NDEgMy43MzA0QzIwLjc4MTggMy44MjM3OSAyMC44MDA0IDMuOTIzODIgMjAuNzk4NiA0LjAyNDUyQzIwLjc5NjggNC4xMjUyMyAyMC43NzQ4IDQuMjI0NTQgMjAuNzMzOCA0LjMxNjU0QzIwLjY5MjggNC40MDg1NCAyMC42MzM3IDQuNDkxMzQgMjAuNTYgNC41NkwxNCAxMUMxMy44NzI0IDExLjE0NTUgMTMuNjkyOSAxMS4yMzUyIDEzLjUgMTEuMjVaIiBmaWxsPSIjZmZmZmZmIi8%2BIDwvZz4KDTwvc3ZnPg%3D%3D"></a>
</div>

@@ -205,8 +207,8 @@

<picture>
<source media="(prefers-color-scheme: light)" srcset="https://github.com/ag-grid/ag-charts/blob/latest/packages/ag-charts-website/public/images/readme-assets/map.gif?raw=true"/>
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/ag-grid/ag-charts/blob/latest/packages/ag-charts-website/public/images/readme-assets/map-dark.gif?raw=true"/>
<source media="(prefers-color-scheme: light)" srcset="https://github.com/ag-grid/ag-charts/blob/latest/packages/ag-charts-website/public/images/readme-assets/map.gif?raw=true"/>
<img width="100%" alt="Preview of Map Charts from AG Charts" src="https://github.com/ag-grid/ag-charts/blob/latest/packages/ag-charts-website/public/images/readme-assets/map-dark.gif?raw=true"/>
<img width="100%" alt="Preview of Map Charts from AG Charts" src="https://github.com/ag-grid/ag-charts/blob/latest/packages/ag-charts-website/public/images/readme-assets/map.gif?raw=true"/>
</picture>
Maps can display data using [Shapes](https://charts.ag-grid.com/javascript/map-shapes/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Lines](https://charts.ag-grid.com/javascript/map-lines/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) and [Marker](https://charts.ag-grid.com/javascript/map-markers/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) series:
Maps can display data using [Shapes](https://ag-grid.com/charts/javascript/map-shapes/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github), [Lines](https://ag-grid.com/charts/javascript/map-lines/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) and [Marker](https://ag-grid.com/charts/javascript/map-markers/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github) series:

@@ -233,3 +235,3 @@ ```js

<div align="right">
<a href="https://charts.ag-grid.com/javascript/maps/"><img alt="Static Badge" src="https://img.shields.io/badge/Learn More-blue?style=for-the-badge&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KDTwhLS0gVXBsb2FkZWQgdG86IFNWRyBSZXBvLCB3d3cuc3ZncmVwby5jb20sIFRyYW5zZm9ybWVkIGJ5OiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KDTxnIGlkPSJTVkdSZXBvX2JnQ2FycmllciIgc3Ryb2tlLXdpZHRoPSIwIi8%2BCg08ZyBpZD0iU1ZHUmVwb190cmFjZXJDYXJyaWVyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KDTxnIGlkPSJTVkdSZXBvX2ljb25DYXJyaWVyIj4gPHBhdGggZD0iTTE4IDIwLjc1SDZDNS4yNzA2NSAyMC43NSA0LjU3MTE4IDIwLjQ2MDMgNC4wNTU0NiAxOS45NDQ1QzMuNTM5NzMgMTkuNDI4OCAzLjI1IDE4LjcyOTMgMy4yNSAxOFY2QzMuMjUgNS4yNzA2NSAzLjUzOTczIDQuNTcxMTggNC4wNTU0NiA0LjA1NTQ2QzQuNTcxMTggMy41Mzk3MyA1LjI3MDY1IDMuMjUgNiAzLjI1SDEyQzEyLjE5ODkgMy4yNSAxMi4zODk3IDMuMzI5MDIgMTIuNTMwMyAzLjQ2OTY3QzEyLjY3MSAzLjYxMDMyIDEyLjc1IDMuODAxMDkgMTIuNzUgNEMxMi43NSA0LjE5ODkxIDEyLjY3MSA0LjM4OTY4IDEyLjUzMDMgNC41MzAzM0MxMi4zODk3IDQuNjcwOTggMTIuMTk4OSA0Ljc1IDEyIDQuNzVINkM1LjY2ODQ4IDQuNzUgNS4zNTA1NCA0Ljg4MTcgNS4xMTYxMiA1LjExNjEyQzQuODgxNyA1LjM1MDU0IDQuNzUgNS42Njg0OCA0Ljc1IDZWMThDNC43NSAxOC4zMzE1IDQuODgxNyAxOC42NDk1IDUuMTE2MTIgMTguODgzOUM1LjM1MDU0IDE5LjExODMgNS42Njg0OCAxOS4yNSA2IDE5LjI1SDE4QzE4LjMzMTUgMTkuMjUgMTguNjQ5NSAxOS4xMTgzIDE4Ljg4MzkgMTguODgzOUMxOS4xMTgzIDE4LjY0OTUgMTkuMjUgMTguMzMxNSAxOS4yNSAxOFYxMkMxOS4yNSAxMS44MDExIDE5LjMyOSAxMS42MTAzIDE5LjQ2OTcgMTEuNDY5N0MxOS42MTAzIDExLjMyOSAxOS44MDExIDExLjI1IDIwIDExLjI1QzIwLjE5ODkgMTEuMjUgMjAuMzg5NyAxMS4zMjkgMjAuNTMwMyAxMS40Njk3QzIwLjY3MSAxMS42MTAzIDIwLjc1IDExLjgwMTEgMjAuNzUgMTJWMThDMjAuNzUgMTguNzI5MyAyMC40NjAzIDE5LjQyODggMTkuOTQ0NSAxOS45NDQ1QzE5LjQyODggMjAuNDYwMyAxOC43MjkzIDIwLjc1IDE4IDIwLjc1WiIgZmlsbD0iI2ZmZmZmZiIvPiA8cGF0aCBkPSJNMjAgOC43NUMxOS44MDE5IDguNzQ3NDEgMTkuNjEyNiA4LjY2NzU2IDE5LjQ3MjUgOC41Mjc0N0MxOS4zMzI0IDguMzg3MzcgMTkuMjUyNiA4LjE5ODExIDE5LjI1IDhWNC43NUgxNkMxNS44MDExIDQuNzUgMTUuNjEwMyA0LjY3MDk4IDE1LjQ2OTcgNC41MzAzM0MxNS4zMjkgNC4zODk2OCAxNS4yNSA0LjE5ODkxIDE1LjI1IDRDMTUuMjUgMy44MDEwOSAxNS4zMjkgMy42MTAzMiAxNS40Njk3IDMuNDY5NjdDMTUuNjEwMyAzLjMyOTAyIDE1LjgwMTEgMy4yNSAxNiAzLjI1SDIwQzIwLjE5ODEgMy4yNTI1OSAyMC4zODc0IDMuMzMyNDQgMjAuNTI3NSAzLjQ3MjUzQzIwLjY2NzYgMy42MTI2MyAyMC43NDc0IDMuODAxODkgMjAuNzUgNFY4QzIwLjc0NzQgOC4xOTgxMSAyMC42Njc2IDguMzg3MzcgMjAuNTI3NSA4LjUyNzQ3QzIwLjM4NzQgOC42Njc1NiAyMC4xOTgxIDguNzQ3NDEgMjAgOC43NVoiIGZpbGw9IiNmZmZmZmYiLz4gPHBhdGggZD0iTTEzLjUgMTEuMjVDMTMuMzA3MSAxMS4yMzUyIDEzLjEyNzYgMTEuMTQ1NSAxMyAxMUMxMi44NzcgMTAuODYyNSAxMi44MDkgMTAuNjg0NSAxMi44MDkgMTAuNUMxMi44MDkgMTAuMzE1NSAxMi44NzcgMTAuMTM3NSAxMyAxMEwxOS41IDMuNUMxOS41Njg3IDMuNDI2MzEgMTkuNjUxNSAzLjM2NzIxIDE5Ljc0MzUgMy4zMjYyMkMxOS44MzU1IDMuMjg1MjMgMTkuOTM0OCAzLjI2MzE5IDIwLjAzNTUgMy4yNjE0MUMyMC4xMzYyIDMuMjU5NjMgMjAuMjM2MiAzLjI3ODE2IDIwLjMyOTYgMy4zMTU4OEMyMC40MjMgMy4zNTM2IDIwLjUwNzggMy40MDk3NCAyMC41NzkgMy40ODA5NkMyMC42NTAzIDMuNTUyMTggMjAuNzA2NCAzLjYzNzAxIDIwLjc0NDEgMy43MzA0QzIwLjc4MTggMy44MjM3OSAyMC44MDA0IDMuOTIzODIgMjAuNzk4NiA0LjAyNDUyQzIwLjc5NjggNC4xMjUyMyAyMC43NzQ4IDQuMjI0NTQgMjAuNzMzOCA0LjMxNjU0QzIwLjY5MjggNC40MDg1NCAyMC42MzM3IDQuNDkxMzQgMjAuNTYgNC41NkwxNCAxMUMxMy44NzI0IDExLjE0NTUgMTMuNjkyOSAxMS4yMzUyIDEzLjUgMTEuMjVaIiBmaWxsPSIjZmZmZmZmIi8%2BIDwvZz4KDTwvc3ZnPg%3D%3D"></a>
<a href="https://ag-grid.com/charts/javascript/maps/"><img alt="Static Badge" src="https://img.shields.io/badge/Learn More-blue?style=for-the-badge&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KDTwhLS0gVXBsb2FkZWQgdG86IFNWRyBSZXBvLCB3d3cuc3ZncmVwby5jb20sIFRyYW5zZm9ybWVkIGJ5OiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KDTxnIGlkPSJTVkdSZXBvX2JnQ2FycmllciIgc3Ryb2tlLXdpZHRoPSIwIi8%2BCg08ZyBpZD0iU1ZHUmVwb190cmFjZXJDYXJyaWVyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KDTxnIGlkPSJTVkdSZXBvX2ljb25DYXJyaWVyIj4gPHBhdGggZD0iTTE4IDIwLjc1SDZDNS4yNzA2NSAyMC43NSA0LjU3MTE4IDIwLjQ2MDMgNC4wNTU0NiAxOS45NDQ1QzMuNTM5NzMgMTkuNDI4OCAzLjI1IDE4LjcyOTMgMy4yNSAxOFY2QzMuMjUgNS4yNzA2NSAzLjUzOTczIDQuNTcxMTggNC4wNTU0NiA0LjA1NTQ2QzQuNTcxMTggMy41Mzk3MyA1LjI3MDY1IDMuMjUgNiAzLjI1SDEyQzEyLjE5ODkgMy4yNSAxMi4zODk3IDMuMzI5MDIgMTIuNTMwMyAzLjQ2OTY3QzEyLjY3MSAzLjYxMDMyIDEyLjc1IDMuODAxMDkgMTIuNzUgNEMxMi43NSA0LjE5ODkxIDEyLjY3MSA0LjM4OTY4IDEyLjUzMDMgNC41MzAzM0MxMi4zODk3IDQuNjcwOTggMTIuMTk4OSA0Ljc1IDEyIDQuNzVINkM1LjY2ODQ4IDQuNzUgNS4zNTA1NCA0Ljg4MTcgNS4xMTYxMiA1LjExNjEyQzQuODgxNyA1LjM1MDU0IDQuNzUgNS42Njg0OCA0Ljc1IDZWMThDNC43NSAxOC4zMzE1IDQuODgxNyAxOC42NDk1IDUuMTE2MTIgMTguODgzOUM1LjM1MDU0IDE5LjExODMgNS42Njg0OCAxOS4yNSA2IDE5LjI1SDE4QzE4LjMzMTUgMTkuMjUgMTguNjQ5NSAxOS4xMTgzIDE4Ljg4MzkgMTguODgzOUMxOS4xMTgzIDE4LjY0OTUgMTkuMjUgMTguMzMxNSAxOS4yNSAxOFYxMkMxOS4yNSAxMS44MDExIDE5LjMyOSAxMS42MTAzIDE5LjQ2OTcgMTEuNDY5N0MxOS42MTAzIDExLjMyOSAxOS44MDExIDExLjI1IDIwIDExLjI1QzIwLjE5ODkgMTEuMjUgMjAuMzg5NyAxMS4zMjkgMjAuNTMwMyAxMS40Njk3QzIwLjY3MSAxMS42MTAzIDIwLjc1IDExLjgwMTEgMjAuNzUgMTJWMThDMjAuNzUgMTguNzI5MyAyMC40NjAzIDE5LjQyODggMTkuOTQ0NSAxOS45NDQ1QzE5LjQyODggMjAuNDYwMyAxOC43MjkzIDIwLjc1IDE4IDIwLjc1WiIgZmlsbD0iI2ZmZmZmZiIvPiA8cGF0aCBkPSJNMjAgOC43NUMxOS44MDE5IDguNzQ3NDEgMTkuNjEyNiA4LjY2NzU2IDE5LjQ3MjUgOC41Mjc0N0MxOS4zMzI0IDguMzg3MzcgMTkuMjUyNiA4LjE5ODExIDE5LjI1IDhWNC43NUgxNkMxNS44MDExIDQuNzUgMTUuNjEwMyA0LjY3MDk4IDE1LjQ2OTcgNC41MzAzM0MxNS4zMjkgNC4zODk2OCAxNS4yNSA0LjE5ODkxIDE1LjI1IDRDMTUuMjUgMy44MDEwOSAxNS4zMjkgMy42MTAzMiAxNS40Njk3IDMuNDY5NjdDMTUuNjEwMyAzLjMyOTAyIDE1LjgwMTEgMy4yNSAxNiAzLjI1SDIwQzIwLjE5ODEgMy4yNTI1OSAyMC4zODc0IDMuMzMyNDQgMjAuNTI3NSAzLjQ3MjUzQzIwLjY2NzYgMy42MTI2MyAyMC43NDc0IDMuODAxODkgMjAuNzUgNFY4QzIwLjc0NzQgOC4xOTgxMSAyMC42Njc2IDguMzg3MzcgMjAuNTI3NSA4LjUyNzQ3QzIwLjM4NzQgOC42Njc1NiAyMC4xOTgxIDguNzQ3NDEgMjAgOC43NVoiIGZpbGw9IiNmZmZmZmYiLz4gPHBhdGggZD0iTTEzLjUgMTEuMjVDMTMuMzA3MSAxMS4yMzUyIDEzLjEyNzYgMTEuMTQ1NSAxMyAxMUMxMi44NzcgMTAuODYyNSAxMi44MDkgMTAuNjg0NSAxMi44MDkgMTAuNUMxMi44MDkgMTAuMzE1NSAxMi44NzcgMTAuMTM3NSAxMyAxMEwxOS41IDMuNUMxOS41Njg3IDMuNDI2MzEgMTkuNjUxNSAzLjM2NzIxIDE5Ljc0MzUgMy4zMjYyMkMxOS44MzU1IDMuMjg1MjMgMTkuOTM0OCAzLjI2MzE5IDIwLjAzNTUgMy4yNjE0MUMyMC4xMzYyIDMuMjU5NjMgMjAuMjM2MiAzLjI3ODE2IDIwLjMyOTYgMy4zMTU4OEMyMC40MjMgMy4zNTM2IDIwLjUwNzggMy40MDk3NCAyMC41NzkgMy40ODA5NkMyMC42NTAzIDMuNTUyMTggMjAuNzA2NCAzLjYzNzAxIDIwLjc0NDEgMy43MzA0QzIwLjc4MTggMy44MjM3OSAyMC44MDA0IDMuOTIzODIgMjAuNzk4NiA0LjAyNDUyQzIwLjc5NjggNC4xMjUyMyAyMC43NzQ4IDQuMjI0NTQgMjAuNzMzOCA0LjMxNjU0QzIwLjY5MjggNC40MDg1NCAyMC42MzM3IDQuNDkxMzQgMjAuNTYgNC41NkwxNCAxMUMxMy44NzI0IDExLjE0NTUgMTMuNjkyOSAxMS4yMzUyIDEzLjUgMTEuMjVaIiBmaWxsPSIjZmZmZmZmIi8%2BIDwvZz4KDTwvc3ZnPg%3D%3D"></a>
</div>

@@ -307,4 +309,6 @@

> [!IMPORTANT]
> For more information on building JavaScript Charts with AG Charts, refer to our [Documentation](https://charts.ag-grid.com/javascript/quick-start/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github).
<blockquote>
<p>ℹ️ <b>Note:</b></p>
<span>For more information on building JavaScript Charts with AG Charts, refer to our <a href="https://ag-grid.com/charts/javascript/quick-start/?utm_source=ag-charts-readme&utm_medium=repository&utm_campaign=github">Documentation</a>.</span>
</blockquote>

@@ -311,0 +315,0 @@ ## 🤝 Support

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc