# Change Log

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased] - yyyy-mm-dd

### Added

### Changed

### Removed

### Fixed

### Deprecated

## [6.0.1] - 2024-08-13

### Added

-   Added `Band.setClipping`, `ConstantLine.setClipping`

### Changed

-   `Band` and `ConstantLine` rendering is now clipped against their owning axis.
    -   Previous behavior can be achieved with `setClipping(false)`

### Fixed

-   Fixed `PointLineAreaSeries` RangeError: Maximum call stack size exceeded when using auto max sample count and supplying data that exceeds initial data set size * 2
-   Fixed `PolarChart.radialAxis`, `axisRadial` not working

## [6.0.0] - 2024-08-06

### Added

-   Added new, refactored `Cursor` API
    -   Added new functionalities, such as multi-series cursors, 3D cursors and more.
    -   Please refer to migration guide and docs > Features > Cursors for more information.
-   Added new, fully reworked `GaugeChart`
    -   Improved default look, improved adaptibility to different user interfaces, added built-in value indicators functionality, added built-in Needle functionality, added value based background glows and gauge bar coloring.
    -   API is completely changed. Please refer to migration guide if you are migrating from old gauge chart API (https://lightningchart.com/js-charts/docs/migration-guides/)
-   Added new, simplified `SolveNearest` API
    -   Refer to migration guide and developer documentation for more details.
-   Added `SeriesXY.setClipping`
    -   Allows reverting back to previous behavior, where series rendering could leak outside its owning axes in stacked axis applications. Defaults to enabled (`true`)
-   Added `PointShape.HollowCircle`
-   Added `Chart3D.setProjection` (beta)
-   Added event API for tracking user interactions on Axis titles
    -   `Axis.onTitleMouseEnter`, ...
-   Added `Axis.setTitlePosition`
    -   Allows changing axis title position between pre-determined key locations.
-   Added `x` and `y` options to `DataSetXY.alterSamples`
    -   Slightly more convenient way to alter 1 sample at specific index with specific X and Y values.
-   `DataSetXY` and `PointLineAreaSeries` can now directly consume `x` and `y` coordinates from `Date` objects or valid date-time strings.
    -   Rather than user having to map them to `Date` object and use `getTime()` method.
-   Added `FormattingFunctions.Scientific`
    -   Formats numbers like '0.00e+3'
-   Added `EmptyTickStrategy.setCursorFormatter`
    -   Useful in use cases of manual tick placement. Instead of specifying formatting with `CustomTick.setTextFormatter`, you can specify a cursor formatter, which is automatically utilized by cursor result tables as well.
-   Added `CursorXY.setTickMarkersAllocateAxisSpace`
-   Added `CustomTick3D.setBackgroundFillStyle`, `setBackgroundStrokeStyle`, `setPadding`
-   Added `Chart3D.translateCoordinate` capability to translate 3D axis coordinate to client and relative coordinate systems.

### Changed

-   XY series connected to stacked axes are now clipped so rendering doesn't leak outside the owning axes.
    -   Previous behavior can be restored per series using `SeriesXY.setClipping` method
-   Enhanced the layout of `Pie`, `Funnel`, and `Pyramid` charts.
    -   Labels are now hidden for Pie charts with a radius smaller than 50px.
    -   For Funnel and Pyramid chart labels are hidden when the chart width or height is smaller than 250px
-   Tweaked default area series fill styles to utilize more transparency for a more modern look.
-   Improved `DateTime` Axis tick strategy zoom range
    -   Previous min interval ~1 second. Now ~1 millisecond.
    -   Also improved default formatting at minute/second zoom levels.
-   Tweaked darkGold and light themes cursor gridlines to have more contrast.
-   LCJS drag events are now stopped whenever any `draggable` HTML event is dragged on the web page.
    -   Change made because of use case where user could not interact with HTML event even when it had pointer event priority.
-   Disabled DateTime great ticks ticklines by default
    -   Frequently requested by users
-   Inverted sorting order of the TreeMap chart

### Removed

-   Removed `DashboardOptions.disableAnimations`, `DashboardCellOptions.disableAnimations`, `CommonChartOptions.disableAnimations`
    -   Use `animationsEnabled` instead
-   Removed `Dashboard.pixelScale`, `Panel.pixelScale`
    -   Use `coordsRelative` instead
-   Removed `HeatmapScrollingGridSeriesOptions.start`, `step`
    -   Use `setStart`, `setStep` instead
-   Removed `translatePoint`, `translatePoint3D`
    -   Use `chart.translateCoordinate` instead
-   Removed `LightningChartOptions.sharedContextOptions.webgl`
    -   API was never functional
-   Removed `PublicEngine.scale`
    -   Use `chart.coordsRelative` instead
-   Removed `PublicEngine.clientLocation2Engine`, `engineLocation2Client`
    -   Use `chart.translateCoordinate` instead
-   Removed `Chart3D.axes`
    -   Use `coordAxis` instead
-   Removed `Chart3D.world`
    -   Use `coordsWorld` instead
-   Removed `SurfaceGridSeries3DOptions.start`, `step`, `end`
    -   Use `setStart`, `setStep`, `setEnd` instead
-   Removed `SurfaceScrollingGridSeries3DOptions.start`, `step`
    -   Use `setStart`, `setStep` instead
-   Removed `TickStyleProperties.labelPadding`
    -   Use `Axis.setMarginAfterTicks` instead
-   Removed deprecated signature of `SpiderChart.addSeries` which accepted a `pointShape` parameter
-   Removed `Axis.setTitleMargin`, `getTitleMargin`
    -   Use `setMarginAfterTitle` instead
-   Removed `HeatmapGridSeriesOptions.start`, `step`, `end`
    -   Use `setStart`, `setStep`, `setEnd` instead

### Fixed

-   Fixed charts sometimes not adjusting to browser zoom level change before something changes in chart.
-   Fixed series sometimes leaking 1 or 2 pixels outside series background in ChartXY
-   Fixed crash with `PointLineAreaSeries` automatic max sample count control.
-   Fixed `RectangleSeries` render errors with high precision axis. Errors happened very inconsistently with very specific rectangle coordinates.
-   Fixed text rendering issue sometimes present for 1st frame in apps with relative large number of text objects, where text is rendered as strange symbols
-   Fixed `MapChart` coloring regions with no data with first LUT color, instead of using fallback color.
-   Fixed crash with `ZoomBandChart` inside `Dashboard` "Cannot compare node with itself"
-   Fixed `PointLineAreaSeries` Y axis scrolling 1 frame behind.
-   Fixed XY heatmap and scrolling heatmap series not accepting `axisX` or `axisY` options
-   Fixed `ZoomBandChart` misalignment when connected to multiple stacked axes
-   Fixed custom tick label padding sometimes wrong.
-   Fixed `PointLineAreaSeries` hiding points when zoomed out even if both stroke + area are disabled.
    -   Essentially it was not possible to use progressive scatter visualization
-   Fixed `ZoomBandChart` not mimicking `PointLineAreaSeries` point style fully (rotation, shape, size)
-   Fixed `PointLineAreaSeries` crash when supplied only data points with exact same `x`
-   Fixed `DataSetXY` append methods not working correctly with `start` and `step` options

## [5.2.0] - 2024-05-07

### Added

-   Added **Stacked Axes** (beta)
    -   Accessed via `AxisOptions.iStack`, `Axis.setLength`, `Axis.setMargins`
    -   See online examples and/or Developer documentation (Features > Axis) for latest updates to stacked axis use cases.
-   Added `TreeMapChart`
-   Added `ChartXY.swapAxes` (beta)
    - Can be used to swap the position of two stacked Axes.
-   Added `ImageFill` support for `PointLineAreaSeries` and `PolarPointSeries` marker fill styles
    -   Allows displaying custom picture assets in axis coordinates with axis clipping.
-   Added `PointLineAreaSeries.setPointAlignment`, `getPointAlignment`
    -   Allows display of non-centered points. For example, position points by vertical bottom.
-   Added convenience axis getter properties
    -   `ChartXY.axisX`, `xAxis`, `axisY`, `yAxis`
    -   `Chart3D.axisX`, `xAxis`, `axisY`, `yAxis`, `axisZ`, `zAxis`
    -   `PolarChart.axisRadial`, `axisAmplitude`, `radialAxis`, `amplitudeAxis`
    -   These behave exactly same as `getDefaultAxisX()` or equivalents, but simply look more neat.
-   Added `SeriesOptions.axisX`, `SeriesOptions.axisY`
    -   Convenience properties that do exactly same as existing `xAxis` and `yAxis`
-   Added convenience properties `SeriesXY.xAxis`, `SeriesXY.yAxis`
-   Added `DisposableEvents.isDisposed`
    -   This simple getter is added to basically all charts, series, etc. objects
    -   Introduced mainly to workaround some issues in React run-time crashes
-   Added `LightningChart.layout`
    -   Required for React applications which use shared LC context and include charts inside scrollable DIVs which are not the document body. Used to notify charts that their position on the webpage may have changed.
-   Added `ChartComponent.setIcon` (beta)
    -   This can be used to associate a chart component with a icon graphic. For many series types this results in automatically displaying that Icon in legends and cursors.
-   Added ability to use `Icon` anywhere `PointShape` can be used.
    -   XY point series, Polar point series, Point markers, Legend entries, Checkboxes
    -   Additionally, Icons can now be used as part of Result table content
-   Added `DataSetXY.fill`, `PointLineAreaSeries.fill` methods
    -   Convenient way to set same value to all existing samples. Especially useful for implementing custom interactions, like highlighting selected data 
-   Added `setTickStyle` convenience methods to all tick strategies.
    -   This does the same as existing `setMajorTickStyle` and `setMinorTickStyle` but applies both with just 1 method call.points with different color/size etc.
-   Added more optional parameters to `DataSetXY.alterSamplesByID` and `PointLineAreaSeries.alterSamplesByID`: `x`, `y`, `lookupValue`, `color`, `rotation`
    -   Can be used to load same value for all specified sample IDs.
-   Added `Axis.setTitleMarginBefore`, `getTitleMarginBefore`
-   Added `Axis.setAutoRegionsEnabled`
    -   Can be used to disable built-in functionality that adds extra gaps around axis interval to make sure that attached series fit inside. In some specific cases this is necessary.
-   Added `hasUIElementBackground` type guard.
-   Added `Color.toUint32`
-   Added slice parameter to sliced chart slice styling APIs
    -   Allows referencing slice label and other properties in custom style use cases

### Removed

-   Removed `EngineSettings.webgl`
    -   This property was faulty since v5.0.0, and didn't actually do anything. Use `LightningChartOptions.webgl` instead

### Fixed

-   Fixed bug `synchronizeAxisIntervals` resulting in axes not being zoomable or pannable.
-   Fixed `PointLineAreaSeries` run-time crash "invalid array length" sometimes when using time-series data and zooming in/out.
-   Fixed long scroll animations in time-series use cases when first data points are added.
-   Fixed charts not following changes to window devicePixelRatio after chart is created
    -   This can be observed by text staying sharp and thicknesses/point sizes adjusting when using browser zooming
    -   Note that in order for this to work, web site needs to have meta tag meta[name="viewport"] width=device-width
-   Made `PointLineAreaSeries` more robust to common invalid data supply patterns in data streaming test setups.
    -   e.g. data points sharing same time coordinate, or even having slightly incorrect order.
-   Fixed `PointLineAreaSeries` individual point sizes low resolution with circle shape.
-   Fixed `PointLineAreaSeries.clear` resulting in series not being visible under specific circumstances.
-   Fixed axis gridlines invisible with light theme.
-   Fixed extreme ticklines not visible.
-   Fixed crash when attempting to dispose same chart twice.
-   Fixed sliced charts (pie, pyramid, funnel) auto cursors not updating on mouse move when highlight on hover is disabled.
-   Fixed legend button not showing if legend is added while attached component is invisible.
-   Fixed `alterSamples` not doing anything if only `sizes` or `rotations` were altered.
-   Fixed Legend entry hiding itself even when toggleVisibilityOnClick is false
-   Fixed BarChart sometimes disabling animations even if they are explicitly enabled or not disabled at least.

### Deprecated

-   Deprecated `LightningChartOptions.sharedContextOptions.webgl` in favour of `LightningChartOptions.webgl`
-   Deprecated `Axis.setTitleMargin`, `getTitleMargin`
    -   For clearer distinction should use `Axis.setMarginAfterTitle` instead

## [5.1.1] - 2024-02-19

### Fixed

-   Fixed `PointLineAreaSeries` defaulting to float 32 data storage instead of float 64
    -   Mainly showed as issues in time series use cases.

## [5.1.0] - 2024-02-06

### Added

-   Added `MeshModel3D`
    -   New 3D series type for rendering 3D Models inside 3D charts.
    -   Main features: dynamic coloring from separate data set in real-time
-   Added `BarChart.setDataStacked`, `setDataGrouped`
    -   Allows creation of stacked and grouped bar charts
-   Added `LUT.percentageValues`
    -   Adds to user convenience when you want to color a data set between min/max value range, as opposed to a fixed value range.
    -   Not optimized yet for real-time data updates
-   Added `Axis.setDefaultInterval` (beta)
-   Added `Axis.setIntervalRestrictions` (beta)
-   Added `Band.setDefaultMouseInteractions`, `ConstantLine.setDefaultMouseInteractions`
    -   Enables use cases where user needs to implement custom interactions for Band/ConstantLine
-   Added `Control.getLegendBoxes`
    -   Recommended especially in scrolling applications to set scrolling Axis interval
-   Added `setStart`, `setEnd` and `setStep` methods to `HeatmapGridSeries` and `SurfaceGridSeries3D`
    -   Allows modifying heatmap location and scale after creation.
-   Added `setStart` and `setStep` methods to `HeatmapScrollingGridSeries` and `SurfaceScrollingGridSeries3D`
    -   Allows modifying heatmap location and scale after creation.
-   Added `PublicEngine.onRenderFrame`, `offRenderFrame`
    -   mainly added for performance and FPS measurement
-   Added `uint32ColorFromRGBA`, `uint32ColorFromObject`, `ColorUint32`
-   Added `PointLineAreaSeries`, `DataSetXY` (beta)
-   Added `UICheckBox.setButtonShape`, `UILutCheckBox.setButtonShape`
    -   Allows modification of button shape during run-time. Previously had to be specified before creating checkbox
-   Added beta feature `DateTimeTickStrategy.setUTC`
    -   Allows tick placement to be done in UTC (instead of clients local region), removing any region specific day light saving and time zone offsets

### Changed

-   `ChartXY.getDefaultAxisX` and `getDefaultAxisY` methods now return the first Axis that is visible.
    -   Previously even invisible Axis may be returned.
-   `ChartXY` rectangle zoom interaction now works regardless of mouse gesture direction if rectangle fit interaction is disabled (setMouseInteractionRectangleFit(false))
-   Tweaked built-in themes for `BarChart`
    -   Changed gradients to solid fills
    -   Added subtle borders
    -   This was done to accommodate for new Grouped and Stacked BarCharts that are contained within the same chart type.
-   `PolygonSeries` can now be attached to logarithmic and high precision axes

### Removed

-   Removed redundant `UIButtonPicture` and `UIButtonPictures` exports
    -   Replaced by `PointShape`

### Fixed

-   Fixed `ChartXY` mouse wheel interaction stopping Axis even if mouse wheel zoom interaction is disabled
-   Fixed FigureSeries style changes and dimension changes resetting mouse interaction state (under mouse, drag, etc.)
    -   Issue can however still happen by style changes under very specific circumstances!
-   Fixed hidden axis taking space
-   Fixed `ChartXY` animationsEnabled and disableAnimations options being applied opposite to afterwards added Axis
-   Greatly improved LUT precision
    -   Previously some users were facing issues with LUT picking wrong color when the value was very close to a threshold. For example, couple decimals off, or sometimes when the magnitude of the numbers was very large.
-   Improved DataGrid performance with large number of text and most of it outside view.
-   Fixed minor memory leak when using Dashboard and disposing charts inside it
    -   Introduced in v5.0.0
-   Fixed crash on `LegendBox.setVisible(false)` when a LUT is attached.
-   Fixed drag stop, mouse leave, mouse up events firing when mouse leaves chart area
-   Fixed warning about not supported WebGL extensions being displayed even if `warnings` options is `false`

### Deprecated

-   Deprecated `start`, `step` and `end` options when creating Heatmap or Surface grids.
    -   Usage should be replaced with `setStart`, `setStep` and `setEnd` methods respectively.

## [5.0.7] - 2024-01-19

### Fixed

-   Fixed typings issue when using library from NPM.
    -   Reported at least from React and Vite frameworks, types were not found from package.

## [5.0.6] - 2024-01-08

### Fixed

-   Fixed auto cursor not updating when moving mouse over a heatmap
-   Fixed ChartXY.solveNearest and other equivalent methods missing.

## [5.0.5] - 2023-12-13

### Changed

-   Improved license validation errors to not throw errors that crash applications.
    -   This makes it easier to work with applications where not every person running it will need charts to be visible.

### Fixed

-   Fixed CSS issue where chart starts expanding height infinitely, shows as white and uses a lot of CPU
-   Fixed ChartXY animationsEnabled and disableAnimations options being applied opposite to afterwards added Axis

## [5.0.4] - 2023-12-01

### Added

-   Added `formatNumberAsUnicodeSuperscript`
-   Added new file to release bundle: `dist/lcjs.iife.d.ts`
    -   This contains typings compatible with the IIFE distribution (`dist/lcjs.iife.js`)
    -   Can be used to get basic intellisense in simplistic applications that are directly utilizing the IIFE library.
    -   For example, see https://lightningchart.com/js-charts/docs/frameworks/aaa-vanilla/

### Changed

-   Tweaked axis restrictions on logarithmic axis to prevent situations where 0 axis ticks are visible
-   Added new alternate, built-in option for logarithmic tick formatting
    -   Formats values like 10¹, 10², 10³, ...
    -   See `FormattingFunctions.LogarithmicNoExponentsRounded)`

### Fixed

-   Fixed extra jitter in ChartXY zoom to fit animation
-   Fixed all log axis ticks being hidden if any major tick collides with another
    -   Now only colliding ticks are hidden.
-   Fixed BarChart license error even though license was valid
-   Fixed tick behavior issue when either numeric extreme tick or date time great tick collided with another tick.
    -   Instead of hiding colliding tick, the entire tick level was sometimes not displayed

## [5.0.3] - 2023-11-10

### Fixed

-   Fixed ZoomBand Chart resources not included in package
-   Fixed crash when using sandbox licensing and initiating `lightningChart()` several times.

## [5.0.0] - 2023-11-08

### Added

-   Shared WebGL Context rendering.
    -   Removes the old 16 chart limit. Now you can have 1000+ charts on a single page depending on the hardware running the page.
    -   Has two modes:
        -    Individual canvas mode. In this mode each chart is render to it's own canvas. This is the default mode.
        -    Shared canvas mode. All charts are render to a single shared canvas. Can have better performance than the individual canvas mode.
    -   See Developer Documentation "Grouping charts" for more information
    -   Starting with LCJS v5.0.0, it's important to do only one call to the `lightningChart()` library entry point function. You should call this function once and create all of the charts from the same returned object
-   Added automatic sandbox licensing.
    -   When charts are used in specific, popular sandbox sites (like Stack Overflow, Codepen, JSFiddle), the charts work automatically, without passing any license.
-   New event `isInView`
    -   This event is triggered when a chart becomes visible in the browser viewport.
-   `dispose()` to the library entry point interface (`lightningChart()`)`
    -   This can be used to dispose the shared WebGL context and all charts that have been created with it.
-   Added option to have different fonts and fill styles within result table content.
    -   See changes to `ResultTableContent` and `TableContentBuilder.addRow`
-   Added `PointShape.Arrow`, `Cross`, `Diamond`, `Minus`, `Plus`, `Star`
-   Added `HeatmapScrollingGridSeriesIntensityValues.invalidateIntensityValues`, `getSampleCount` methods
    -   Allows backwards invalidation of previously added samples and pushing data by sample index.
    -   Directed to make heatmap time series applications more convenient.
-   Added `MapChart.getRegionUnderMouse`
-   Added `ResultTable.setPadding`, `ResultTable.getPadding`
-   Added auto cursors to `PieChart`, `FunnelChart` and `PyramidChart`
    -   New methods: `setAutoCursor`, `getAutoCursor`, `setAutoCursorMode`, `getAutoCursorMode`, `setCursorResultTableFormatter`
-   Added optional `matchStyleExactly` flag when adding components to legend box to match button color exactly to attached components rather than making default gradient
-   Added `PieChartWithLabelsOnSides.setLabelSliceOffset`, `getLabelSliceOffset`, `setLabelConnectorGapStart`, `getLabelConnectorGapStart`, `setLabelConnectorEndLength`, `getLabelConnectorEndLength`
-   Added option to `captureFrame` method to return the result as a Data URL.
    -   See LegendBoxAddOptions in API reference to learn more.
-   Added `UICheckBox.setTextFillStyleHidden`, `getTextFillStyleHidden` methods

### Changed

-   Changed non-commercial license terms
    -   Before, omitting license key meant approving to non-commercial use terms
    -   Now, license key is always required. Get a license at `https://lightningchart.com/js-charts/#license-key`
-   Reworked `OHLCSeries`.
    -   Performance massively improved. Loading time 40x faster, data capacity 200x more (average desktop GPU).
    -   See migration guide for instructions of using reworked feature.
-   Reworked `ZoomBandChart`
    -   The feature has been reimplemented from scratch with two goals: better UX + simpler API.
    -   See migration guide for details.
-   Refactored `FigureSeries` (`RectangleSeries`, `SegmentSeries`, `PolygonSeries`, `BoxSeries`, `EllipseSeries`)
    -   Main motivation to improve performance greatly, enabling use cases that need large numbers of figures.
    -   New implementation is much more performance efficient, on average ~50x more powerful or even more.
-   Changed visual look of `LegendBox` buttons.
    -   Now the text and button are dimmed when series is hidden, rather than the previous "check box ticked" approach.
-   Built-in `Themes` cursor gridstroke style changed to `DashedLine`
-   Changed interfaces around tick styles.
    -   `TickStyle` should now be only needed interface. It has all APIs necessary for styling axis ticks.
    -   `emptyTick` can be used as convenience to hide ticks completely.
    -   `VisibleTicks` and `EmptyTicks` classes are removed.
    -   When mutating a tick style, there is no longer a need to check `isVisibleTicks` in TypeScript applications.
    -   This should mainly remove type errors, rather than introduce them.
-   Changed `Theme` properties:
    -   Some deprecated `Theme` properties have been removed, and new ones introduced and made non-optional to accommodate for new features.
    -   For details, see migration guide.
-   `LegendBox` buttons now match the shape of attached point-based series.
    -   Concerns following series: `PointSeries`, `PointLineSeries`, `StepSeries`, `SplineSeries`, `PolarPointSeries`, `PolarPointLineSeries` and `SpiderSeries`.
    -   If this behavior is undesirable, it can be prevented like: `LegendBox.add(component, { builder: UIElementBuilders.CheckBox })`
    -   This also let's you choose any shape from `PointShape` collection. See `LegendBoxAddOptions` in API reference for more information.
-   Changed parameters of `onHighlight` methods.
    -   First parameter is now reference to object itself. Other parameters shifted right.
    -   Change done to be symmetrical with other event APIs.
-   Changed parameters of `CustomTick.onValueChange` method.
    -   First parameter is now reference to object itself. Other parameters shifted right.
    -   Change done to be symmetrical with other event APIs.
-   Changed `PointMarker` API
    -   Removed `setStrokeStyle`, `getStrokeStyle`
    -   Added `setShape`, `getShape`, `setRotation`, `getRotation`
    -   PointMarkers can no longer have borders, but their shape and rotation can be easily changed.
-   Changed default look of cursor PointMarkers
    -   Previously was not visible, now it is a small crosshair
    -   To restore previous look you can either use `chart.setAutoCursor((cursor) => cursor.setPointMarkerVisible(false))` or `theme: { ...Themes.darkGold, cursorPointMarkerFillStyle: emptyFill }`
-   `CursorPoint.series` property name changed to `owner` and type to `unknown`.
-   `PieChartWithLabelsOnSides` visual look changed.
    -   Labels are now next to labels rather than at left/right edges of chart area.
-   Moved `SpiderChart` axis nibs draw order behind series.
    -   This was causing some cursor interaction issues due to the nibs having priority over series

### Removed

-   Removed `BoxAndWhiskers`, `BoxFigureConstructor`, `CustomizableFigure`, `SimpleFigureSeries`
    -   Can be replaced with `BoxSeries`, `BoxFigure`
-   Removed `Figure.setHighlight`, `getHighlight`, `onHighlight`, `offHighlight` methods
    -   They can still be used via the `FigureSeries` (same value shared for all figures)
-   Removed `VisibleTicks`, `isVisibleTicks`
    -   Can be replaced with `TickStyle`, `isTickStyle`
-   Removed `MarkerBuilders.XY`
    -   Can be replaced with `MarkerBuilders.ChartMarkerXY` or `MarkerBuilders.SeriesMarkerXY` instead
-   Removed `PointMarkers`, `EmptyPointMarker`, all generic type parameters related to `PointMarkers`
    -   `PointMarker` concept still exists, but has been simplified. See `PointMarker` in API reference for more information.
-   Removed `PieChartWithLabelsOnSides.getLabelConnectorGap`, `getLabelConnectorLength`, `setLabelConnectorGap`, `setLabelConnectorLength`
-   Removed `UICheckBoxBuilder.setPictureOff`, `setPictureOn` methods
    -   Replaced by `setButtonShape` method
-   Removed `UICheckBox.setButtonOffSize`, `setButtonOnSize` methods
    -   Replaced by `setButtonSize` method
-   Removed `UICheckBox.setButtonOnStrokeStyle`, `setButtonOffStrokeStyle` methods
    -   No equivalent method exists, check boxes no longer have borders, only fill style.

### Fixed

-   Fixed some Firefox specific render and console warning issues
    -   `MapChart` stroke not rendered and potentially other unidentified occurences.
-   Fixed `ChartXY` series background border sometimes being clipped 1 pixel on some sides
-   Fixed `ChartXY` axis stroke not aligning with series background border
    -   Before axis stroke was offset by half its thickness so they partially overlapped.
-   Fixed effects leaking outside series area
-   Fixed `PieChartWithLabelsOnSides` pushing labels out of view.
-   Minor CPU performance optimizations for all chart types.
-   Fixed `BarChart` category axis title mispositioned with bipolar data set
-   Improved some situations where `BarChart` looked off when it had not been supplied data yet
-   Fixed `BarChart` value axis gridstroke plotted in wrong direction
-   Fixed `ZoomBandChart` missing series background style API

### Deprecated

-   Deprecated all `disableAnimations` readonly configurations.
    -   Added new `animationsEnabled` option to replace these.

## [4.2.1] - 2023-09-22

### Fixed

-   Fix DataGrid UI elements not working.

## [4.2.0] - 2023-08-08

### Added

-   Added `PolarHeatmapSeries`, `PolarHeatmapSeriesFormatter`, `PolarHeatmapSeriesOptions`
-   Added `BarChart`
    -   Dedicated chart type for visualizing categorical data with convenient high level end user API.
    -   Features (to mention some): cursor, sorting, animations, overlapping label hiding, different label position options, events API, high performance, support for large number of bars, logarithmic value axis, vertical + horizontal bars.
-   `Control.translateCoordinate`
    -   This method is present on all chart types and Dashboard
    -   It replaces `translatePoint` and similar previous APIs.
-   Added TimeTickStrategy.setFormattingFunction, setMajorFormattingFunction, setMinorFormattingFunction
-   Added convenience function: `DateTimeTickStrategy.setFormatting`
    -   Easier way of configuring date time ticks formatting for cases with simple requirements.
-   Added `Control.getSizePixels(): Point`
    -   Simple method for getting size of a chart in pixels.
-   Added `Control.onResize`, `Control.offResize`
    -   Methods were missing for `Dashboard` and `ZoomBandChart`
-   Added type guards for all style objects.
    -   `isSolidFill`, `isSolidLine`, `isFontSettings`, etc.

### Fixed

-   Fixed `FormattingFunctions.NumericUnits` sometimes not adding decimal places where necessary.
-   Fixed errors and crashes when supplying LCJS with style objects created from separate ES module based library.
    -   Problem appeared when using `lcjs-themes`, for example.
-   Fixed PolarChart radial axis stroke having clearly visible angle steps especially on large monitors.
-   Fixed issue where axis didn't scroll to show data if all coordinates were same.
-   Fixed LineSeries with DashedLine visualization error when appending 1 or very few data points at a time.
-   Fixed slight performance degradation with static Line Series
    -   Introduced in v4.1.0
    -   With 1 million data points, about 1 millisecond of extra loading time
-   Fixed DateTime tick display error in major = months range
    -   Sometimes right side great tick would display next year even if its not in axis range.

### Deprecated

-   Deprecated `translatePoint`, `translatePoint3D`, `PublicEngine.scale`, `PublicEngine.clientLocation2Engine`, `PublicEngine.engineLocation2Client`
    -   See `Control.translateCoordinate` for newer syntax of coordinate translations
-   Deprecated previous method signature of `solveNearestFromScreen`
    -   New signature was added to replace it. It expects object with { clientX: number, clientY: number } properties, instead of { x: number, y: number }. These values should be proper HTML client coordinates rather than internal LCJS engine coordinates like before.
-   Deprecated `pixelScale` properties.
    -   Use `coordsRelative` property instead, it works exactly same.
-   Deprecated Chart3D.world, Chart3D.axes over Chart3D.coordsWorld, Chart3D.coordsAxis

## [4.1.2] - 2023-06-22

### Fixed

-   Fixed memory leak when using `PalettedFill` repeatedly in `setFillStyle` or equivalent methods.
-   Fixed high precision axis not fitting to visible data on first attempt sometimes
-   Fixed gridlines not visible sometimes on high precision axis

## [4.1.1] - 2023-06-14

### Fixed

-   Fixed 2D heatmap crash when interpolation disabled
-   Fixed some cases where DateTime ticks were missing
-   Fixed Pie label connectors sometimes overlapping labels

## [4.1.0] - 2023-05-16

### Added

-   Added `automaticColorIndex` for 3D and spider series
    -   `SpiderSeries` got optional object with configuration arguments
-   Added `MapChart` highlighting.
    -   Hovering mouse on attached legend entry highlights the whole map.
    -   Hovering mouse over a region highlights that region. This can be disabled with `MapChart.setHighlightOnHover`
-   Added `CustomTick3D`
-   Added `DashedLine`
    -   Type of `LineStyle`
    -   Supported by selected features: Axis, ConstantLine, Ticks, CustomTick, SegmentSeries, LineSeries, PointLineSeries, StepSeries, SplineSeries, AreaSeries, AreaRangeSeries

### Changed

-   `SeriesOptions` was renamed to `SeriesOptionsXY`.
    -   `SeriesOptions` was re-added as options interface for all series from all chart types.
-   Greatly improved `MapChart` performance (CPU & GPU use reduced)
-   Logarithmic axis no longer throws errors and alerts if data is in invalid log range.
    -   May lead to apps having log axes with impossible intervals. In this case, visualization will not make sense or might behave weird.
-   Improved 2D Point Series loading speed.

### Fixed

-   Fixed `PointSeries` and `PointSeries3D` not supporting `LUT.color` when using value palette coloring.
-   Fixed `Axis.setVisible(false)` not properly hiding the Axis and it's ticks.
-   Fixed chart titles and some other internal UI components being drawn above legend box.
-   Fixed `AreaRangeSeries` and all types of `AreaSeries` not working with high precision axis.

### Deprecated

-   Deprecated old method signature of `SpiderChart.addSeries` over newer one

## [4.0.2] - 2023-02-21

### Fixed

-   Fixed GaugeChart allocating a bit excessive amount of space along Y direction.
-   Fixed CSS display 'none' breaking chart rendering even if restored afterwards to visible.

## [4.0.1] - 2023-02-13

### Fixed

-   Reduced amount of WebGL warnings thrown by FireFox.
    -   "ClientWaitSync must return TIMEOUT_EXPIRED" warning is now shown less.
-   Fixed LightningChart Logo showing up as a black box when only WebGL 1 was available.
-   Fixed WebGL warning for deprecated Alpha-premult for non-DOM-element uploads.

## [4.0.0] - 2023-02-06

### Added

-   Added `isThemeDark(Theme)` function to check if selected theme is dark or light
    -   Intended to be used on default library themes only, not custom user themes.
-   Added `EngineSettings.pickingPrecision` for modifying user interactions precision.
    -   This should not be required in normal use cases, but exists just in case.
-   Added `EngineSettings.interactable` for disabling all user interactions.
    -   This can be useful in server side rendering applications, or otherwise when user interactions are not needed.
-   Added new API `ChartXY.setAutoCursorEnabledDuringAxisAnimation`
    -   Supported by ChartXY
    -   Replaces functionality of removed APIs `Chart.setMouseInteractionsWhileScrolling` and `Chart.setMouseInteractionsWhileZooming`
-   Added `Chart.getTitleSize` method to get title size (width and height) in pixels
-   Added Dashboard.pixelScale property
-   Added `ChartXY.setTitlePosition` and `Chart.setTitleMargin` methods
-   Added `setVisible` and `getVisible` API to all visible elements.
    -   This API can be used to hide an element from rendering but still keep updating it in the background.
-   Added `onVisibleStateChanged` / `offVisibleStateChanged` event listener to most elements that support `setVisible`.
    -   This event will be triggered when the visibility of an element is actually changed.
-   Added `Hideable` interface.
    -   This interface is implemented by everything that can be hidden with `setVisible`.
-   Added `HideableEvents` interface.
    -   This interface is implemented by everything that has event listeners available for visibility state changes.
-   Added `setAnimationHighlight` and `getAnimationHighlight` methods to chart components.
-   AreaSeries and AreaRangeSeries now support `emptyFill` style
-   AreaSeries and AreaRangeSeries now support PalettedFill (x and y lookup properties)
-   `regularColorSteps` convenience function
-   Added `SolidGauge.setIntervalLabelsFillStyle`
-   Added `onDispose` and `offDispose` methods for all components that have `dispose()`. This event triggers whenever the object is disposed.
-   Added `isDisposed()` for Dashboard and all Chart types.
-   Added `UIElementBuilders.AxisTickMinor` type for CustomTick. This type has style of default minor tick
-   Added `isLUTCheckBox`
-   Added `UILUTCheckBox.setLUTDisplayProportionalSteps`
-   Added `Axis.onStoppedStateChanged`, `Axis.offStoppedStateChanged`
    -   Event API for tracking when Axis scrolling/fitting is stopped and unstopped.
-   Added `setInteractionMoveByDragging` API to ConstantLine. Now ConstantLine interactions can be disabled without disabling entire mouse interactions
-   Added `SeriesXY.setDrawOrder` method.
    -   This method can be used to explicitly configure drawing order of series in 1 chart.
-   Added common UI element API's to LegendBox
-   Chart3D event API for series background.
    -   `onSeriesBackgroundMouseEnter`, etc.
-   Started tracking minimum required TypeScript version.
    -   This information is available in API documentation https://lightningchart.com/js-charts/api-documentation
    -   Currently minimum TypeScript version is 4.1
-   Added new API `disableThemeEffects`
    -   New convenience API to easily disable the new glow and shadow effects from any given theme.
-   `Dashboard.getCells`
    -   Returns all defined dashboard cells with content.
-   EngineSettings.textPixelSnappingEnabled
    -   Can be used to toggle new text pixel snapping feature, which is enabled by default.
    -   If you encounter issues with text "moving" or "bouncing" undesirably, consider testing with disabling this experimental flag.
-   Icon, IconProperties
    -   Currently only supported by Data Grid.
-   Theme.legendTitleFont
-   Added GlowEffects
    -   Controlled with `Theme.effect`
    -   Individual component effects controlled with `set...Effect` methods
-   Added `ImageFitMode.Tile`
-   Added new Theme properties:
    -   `dataGridFont`, `dataGridTextFillStyle`, `dataGridCellStrokeStyle`, `dataGridBackgroundFillStyle`
-   Added `ValueGrid`
    -   New high level component type that can be placed in a Dashboard or used standalone.
    -   Provides a variety of frontend and data visualization methods inside a grid layout.

### Changed

-   Changed end user APIs that accepted rotations as radians to work with degrees instead:
    -   Data point `rotation` property was previously interpreted as radian, now as degrees
-   ChartXY and Chart3D default interactions now also work over series, instead of just series background
-   Theme interface now requires `isDark` property.
    -   For user defined Themes, you may set this to any value safely. It only interacts with `isThemeDark` convenience function.
-   Improved some default user interactions on trackpad
    -   Affects: ChartXY zoom, Axis zoom, Chart3D zoom
    -   Zooming now responds better according to user interaction behavior (small movement = small effect, etc.)
-   Changed Chart3D zoom animation to be smoother
-   Creating LightningChart component on user supplied DIV no longer overrides `style.position` if it was previously assigned by user
-   Renamed `setHighlighted` -> `setHighlight` and `getHighlighted` -> `getHighlight`
    -   New method now accepts boolean or a number between 0 and 1, meaning that the intensity of highlighting can be configured instead of just being ON/OFF
    -   `getHighlighted()` previously returned Boolean, now `getHighlight()` returns Number
-   Auto cursor now works when mouse is over a series with mouse interactions enabled.
    -   Previously this required user to disable mouse interactions with `series.setMouseInteractions(false)`
-   `onHighlight` parameter can now be `number` or `boolean`. Previously it was always `boolean`.
-   Changed AutoCursor default behavior.
    -   AutoCursor is no longer disabled during Axis Animations (zooming, scrolling) by default
    -   To restore this behavior, use `ChartXY.setAutoCursorEnabledDuringAxisAnimation(false)`
-   Following components default mouse interactions enabled state changes from false to true:
    -   LineSeries, HeatmapSeries, all 3D series
    -   This will not affect performance in any way. By default this will result in these series highlighting when interacted above.
    -   To disable this, use setHighlightOnHover(false)
-   Now axis interactions area expands when axis nibs are disabled.
    -   Axis nibs can be disabled with `axis.setNibInteractionScaleByDragging(false).setNibInteractionScaleByWheeling(false)`
-   Removed `LineStyle.thickness`, please use `LineStyle.getThickness()` instead.
-   `forEachAxis` method now returns `this` instead of `void`
-   UICheckBox 'switch' event is no longer triggered when `setOn()` is called and the state is actually unchanged.
-   Component highlighting is now animated by default.
    -   Animation can be disabled with `setAnimationHighlight(false)`
-   Changed look of LightningChart JS logo that is visible when not using a license.
-   highlighting doesn't touch the alpha channel anymore
-   Changed `LegendBoxAddOptions.disposeOnClick` to `toggleVisibilityOnClick`.
    -   Functionality is also changed to use setVisible internally, rather than dispose
-   Disposing a component can no longer be reverted.
    -   `dispose()` now permanently removes the component.
    -   To temporarily hide a component, use `setVisible(false)` instead
-   Changed default cursor result table formatter of most series types.
    -   Use `series.setCursorResultTableFormatter` method to alter this behavior.
-   Changed default CustomTick type from `UIElementBuilders.PointableTextBox` to `UIElementBuilders.AxisTickMajor`
-   Renamed NewSurfaceGridSeries3D -> SurfaceGridSeries3D, NewSurfaceGridSeries3DOptions -> SurfaceGridSeries3DOptions
-   Changed LegendBox LUTs to not display relative distances between step values. This was done to improve use of space and avoid overlapping labels in cases where LUT steps deltas increase exponentially.
    -   The previous display behavior can be restored with `UILUTCheckBox.setLUTDisplayProportionalSteps` method
-   LegendBoxes are now not draggable by default.
    -   To revert to previous behavior add `legend.setDraggingMode(UIDraggingModes.draggable)` after LB is created.
-   Renamed `Axis.isStopped` to `Axis.getStopped`
-   Slightly altered behavior of `Axis.setInterval` 4th parameter `disableScrolling`
    -   Renamed to `stopAxisAfter`
    -   Before, the method released the Axis unless the `disableScrolling = true`
    -   Now, the method stops the Axis unless `stopAxisAfter = false`
    -   Essentially very similar behavior, but now works a little bit more logically. Usage should not be affected by this change
-   Axis API 'onScaleChange' was changed to 'onIntervalChange' and accepts a callback function with 3 parameters that return axis itself, start and end values
    -   Previous event accepted only 2 parameters, start and end
-   Wrapped parameters of `Axis.setInterval` method in an object
    -   Previous use: `Axis.setInterval(start, end)` -> `Axis.setInterval({ start, end })`
    -   Parameter `disableScrolling` was renamed to `stopAxisAfter` and has a 'true' value by default
-   Library now targets ES6 version instead of ES5.
-   Previously optional `Theme` properties are no longer optional.
    -   `uiTickFont`
    -   `uiTickStrokeStyle`
    -   `uiTickTextFillStyle`
    -   `uiPointableTextBoxFont`
    -   `uiPointableTextBoxStrokeStyle`
    -   `uiPointableTextBoxTextFillStyle`
    -   `uiPointableTextBoxFillStyle`
    -   `lcjsBackgroundFillStyle`
    -   `lcjsBackgroundStrokeStyle`
    -   `heatmapGridSeriesFillStyle`
    -   `heatmapGridSeriesWireframeStyle`
    -   `surfaceSeriesWireframeStyle`
    -   `resultTableTextFont`
    -   `polarAreaSeriesStrokeStyle`
    -   `polarAreaSeriesFillStyle`
-   Loosened types of `LineStyle` and `emptyLine`. This should not cause any issues with existing applications, but should make it easier to use the library with type safety.
-   ImageFill.sourceMissingColor default value changed from opaque black to completely transparent black.
-   Slightly tweaked default legend, checkbox and lut checkbox style and layout.
-   Changed UI layout behavior (UIElementColumn/UIElementRow)
    -   Before layout was "center oriented", its members were aligned around the entire layouts center.
    -   Now, members are aligned to the start of layout (top for Row and left for Column). This should feel more logical than before.

### Removed

-   Removed all highlight style methods. This removes the ability to apply different style of highlighted components (all highlighted components now behave the same, always). To change highlighted style differently, change component style in event handlers.
    -   `setSplitterStyleHighlight`
    -   `getSplitterStyleHighlight`
    -   `setStrokeStyleHighlight`
    -   `getStrokeStyleHighlight`
    -   `setLineStyleHighlight`
    -   `getLineStyleHighlight`
    -   `setPointStyleHighlight`
    -   `getPointStyleHighlight`
    -   `setPointFillStyleHighlight`
    -   `getPointFillStyleHighlight`
    -   `setFillStyleHighlighted(PolarSector)`
    -   `getFillStyleHighlighted(PolarSector)`
    -   `setFillStyleHighlight`
    -   `getFillStyleHighlight`
    -   `setBodyFillStyleHighlight`
    -   `getBodyFillStyleHighlight`
    -   `setMedianStrokeStyleHighlight`
    -   `getMedianStrokeStyleHighlight`
    -   `setBodyStrokeStyleHighlight`
    -   `getBodyStrokeStyleHighlight`
    -   `setHighFillStyleHighlight`
    -   `setLowFillStyleHighlight`
    -   `setHighStrokeStyleHighlight`
    -   `setLowStrokeStyleHighlight`
    -   `setPositiveFillStyleHighlight`
    -   `getPositiveFillStyleHighlight`
    -   `setNegativeFillStyleHighlight`
    -   `getNegativeFillStyleHighlight`
    -   `setPositiveStrokeStyleHighlight`
    -   `getPositiveStrokeStyleHighlight`
    -   `setNegativeStrokeStyleHighlight`
    -   `getNegativeStrokeStyleHighlight`
    -   `createDefaultHighlightStyle`
    -   `getDefaultHighlightStyle`
-   Removed `Series.solveNearestFromSegment`, use `solveNearestFromScreen` instead
-   Removed `Series.onHover`, `Series.offHover`
-   Removed `Chart.setMouseInteractionsWhileScrolling`
    -   Use `ChartXY.setAutoCursorEnabledDuringAxisAnimation` instead
-   Removed `Chart.setMouseInteractionsWhileZooming`
    -   Use `ChartXY.setAutoCursorEnabledDuringAxisAnimation` instead
-   Removed Chart.setTitleMarginTop, Chart.setTitleMarginBottom and respective getters.
    -   Use Chart.setTitleMargin instead.
-   Removed all `restore()` methods
    -   To show temporarily hidden components, use `setVisible(true)`
-   Removed all `getDisposed()` methods.
    -   Disposing a component can no longer be reverted. If a component is disposed by user, then that component should no longer be interacted with in any way.
-   Removed several built-in Themes.
-   Removed some custom theme utilities included in library
    -   Types: CustomFillStyle, CustomLineStyle, CustomStyle
    -   `customTheme`, `customSimpleTheme`, `customComplexTheme`
-   Removed `SpiderSeries.setDisposeAnimation()`
    -   Replaced with `setVisibleStateChangedAnimation`
-   Removed `Axis.stop()`
    -   Replaced with `Axis.setStopped(true)`
-   Removed `Axis.release()`
    -   Replaced with `Axis.setStopped(false)`
-   Removed type `UILegendBox`
    -   Should be replaced as just `LegendBox`
-   Removed ability to specify Theme when adding a component to `Dashboard`.
    -   Theme must be specified when creating the Dashboard and thus must also be same for all components inside the Dashboard.
-   Old themes.
    -   `dark`
    -   `light`
    -   `darkGradient`
    -   `lightGradient`
    -   `auroraBorealis`
    -   `sunset`
    -   `blueSciFi`
    -   `monochrome`
    -   `lavender`
    -   `lavenderGradient`
    -   `classic`
    -   `night`
    -   `raspberry`
    -   `lipstick`
    -   `green`
    -   `lightGreen`
    -   `red`
    -   `lightRed`
    -   `purple`
    -   `lightPurple`
    -   `rainbow`
-   `Chart.disableAnimations()` method. Use `Chart.setAnimationsEnabled(false)` instead.
-   `ChartXY.addHeatmapSeries`
    -   Use `ChartXY.addHeatmapGridSeries` or `ChartXY.addHeatmapScrollingGridSeries` instead.
    -   Heatmap Mesh type is temporarily removed and is planned to be reintroduced in future. If you require this feature, please contact us and let us know your use case so that we can provide possible alternative methods or timeline on when this is reintroduced.
-   `ZoomBandChart.attachedAxis`
    -   Use `ZoomBandChart.attachedAxes` instead.
-   `HeatmapGridSeries.setPixelInterpolationMode`
    -   Use `HeatmapGridSeries.setIntensityInterpolation` instead
-   `Chart3D.addSurfaceMeshSeries`
    -   3D Surface Mesh Series is temporarily removed and is planned to be reintroduced in future. If you require this feature, please contact us and let us know your use case so that we can provide possible alternative methods or timeline when this is reintroduced.
-   `Axis.getHeight()`
-   `Dashboard.mapCharts` and `Dashboard.forEachChart`
    -   Use `Dashboard.getCells` and filter for `Chart` instances to replace these methods.
-   Renamed axis event handlers.
    -   `onAxisAreaMouseDragStart`
    -   `onAxisAreaMouseDrag`
    -   `onAxisAreaMouseDragStop`
    -   `onAxisInteractionAreaMouseTouchStart`
    -   `onAxisInteractionAreaMouseTouch`
    -   `onAxisInteractionAreaMouseTouchStop`
    -   `offAxisInteractionAreaMouseTouchStart`
    -   `offAxisInteractionAreaMouseTouch`
    -   `offAxisInteractionAreaMouseTouchStop`
-   3D Line Style methods.
    -   `LineSeries3D.setLineStyle`
    -   `LineSeries3D.getLineStyle`
    -   `PointLineSeries3D.setLineStyle`
-   `Chart3D.addSurfaceSeries`
    -   Use `Chart3D.addSurfaceGridSeries` or `Chart3D.addSurfaceScrollingGridSeries` instead.
    -   Surface Mesh type is temporarily removed and is planned to be reintroduced in future. If you require this feature, please contact us and let us know your use case so that we can provide possible alternative methods or timeline on when this is reintroduced.
-   Removed deprecated Theme properties.
    -   `dashboardBackgroundFillStyle
    -   `dashboardBackgroundStrokeStyle
    -   `axisLabelFillStyle
    -   `axisLabelFont
    -   `customTickMarkerFillStyle
    -   `customTickMarkerTextFillStyle
    -   `customTickMarkerStrokeStyle
    -   `customTickMarkerFont
    -   `seriesStrokeStyle3D
    -   `seriesTriangulatedPointStyle3D
    -   `seriesNonTriangulatedPointStyle3D
    -   `OHLCBarPositiveHighlightStyle
    -   `OHLCBarNegativeHighlightStyle
    -   `candleStickStyleHighlight
    -   `candleStickPositiveStyleHighlight
    -   `candleStickPositiveStrokeStyleHighlight
    -   `candleStickNegativeStyleHighlight
    -   `candleStickNegativeStrokeStyleHighlight
    -   `pointMarkerHorizontalGridStrokeStyle
    -   `pointMarkerVerticalGridStrokeStyle
    -   `pointMarkerTextFillStyle
-   `Axis.setTickStyle` Use `Axis.setTickStrategy` instead.
-   `Series.setMaxPointCount`, `Series.getMaxPointCount`
    -   Use `Series.setDataCleaning` instead.
-   `setDataCleaningThreshold`
    -   Use `setDataCleaning` instead.
-   `LUTOptions.valueRangeMin` and `LUTOptions.valueRangeMax`
-   Removed HighlightModes and setHighlightMode methods
    -   Usually should use setHighlightOnHover instead
    -   Previous use of onHoverIndividual option is no longer supported. Instead, components should be separated into different series or custom events should be used.

### Fixed

-   Fixed FigureSeries mouse drag stop event receiving wrong parameters
-   Fixed Chart3D zoom animation being more sensitive with low FPS
-   Crash when invalid point shape was provided.
-   Fixed `PointLineSeries3D` point style `wireframe` option not working.
-   Fixed `SurfaceGridSeries3D` wireframe being invisible when `thickness` < 0
-   Fixed ConstantLine RadialGradient when thickness = 1
-   Fixed `PointSeries3D` wireframe being invisible when `thickness` is < 0
-   Fixed visual error when trying to add entry to a disposed legend box.
-   Fixed Candlesticks being invisible when close is equal to open
-   Fixed LegendBox.setEntries() affecting all LegendBoxes instead of just one.
-   Fixed ChartXY fitting rectangle sometimes looking like zooming rectangle (no crosses)
-   Fixed ticklines and gridlines being hidden if label fill style is set to `emptyFill`
-   Fixed crash when using Surface 3D Series on some mobile devices.
-   Fixed StepSeries cursor picking on non-real data points some times.
-   Fixed Numeric ticks performance issue that sometimes occured when axis interval is less than 1.
-   Fixed PointLineSeries3D crash when points are styled as PalettedFill but stroke not.
-   Fixed PointSeries3D crash with emptyFill but visible wireframe
-   Fixed Line series some data points not being solvable by cursor when using data gaps
-   Fixed crash when creating zoom band chart on an Axis that contained an area series
-   Fixed MapChart incorrect PalettedFill color interpolation when interpolation disabled
-   Fixed `SolidGauge.setDataLabelFillStyle` also affecting interval labels fill style
-   Fixed hiding components using LegendBox sometimes changing render order of components.
-   Fixed visibility rendering issue in spline series
-   Fixed LineSeries -1 thickness resulting in axis regions shrinking and possibly partly clipping lines
        -   1 thickness can be used for most optimal line rendering mode, especially useful for low end devices.
-   Fixed `synchronizeAxisIntervals` sometimes stopping scrolling if 1 of many series are hidden via LegendBox.
-   Fixed application crash in a specific scenario when RectangleFigure style is changed to emptyFill during run-time
-   Fixed GaugeChart animations sometimes doing quirky unanimated jumps when value is changed more rapidly than animation finishes.
-   Fixed mouse enter and leave events sometimes being fired in wrong order when moving mouse between two objects
    -   Correct order is always LEAVE, ENTER
-   Fixed performance issue when ZBC is used with large line chart (over 1 million data points).
-   Fixed rendering line shapes after styling visible style to empty style and then to SolidLine
-   Fixed issues with gradient fill during streaming data in LineSeries
-   Fixed AreaSeriesBipolar wrong rendering sometimes when data crosses over baseline.
-   Fixed console warning: "Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true."
-   Fixed UICircle background sometimes not rendering properly when chart viewport changes.
-   Fixed MapChart Turkey having incorrect ISO_A3 code
-   Fixed chart mouse interactions and coordinate translation messing up if chart is scrolled in a non-body div that is also not the charts container.
    -   This fix does not work out of the box. In this kind of use case, you'll have to inform the chart when it is scrolled with `chart.engine.layout()`
-   Fixed `ChartXY` rectangle zoom/fit sometimes failing randomly (not doing anything)
-   Fixed chart flickering sometimes when resizing
-   Fixed occasional crash / memory leak issue related to use of `ZoomBandChart.dispose`
-   Fixed some warnings not being disabled by `warnings` LCJS option.
    -   "Uint8ClampedArray is not supported as texture data..."
    -   "WebGL extensions could not be loaded..."
-   Fixed Axis interaction events not triggered if the default interaction is disabled.
    -   This effectively prevented defining custom interactions over Axis.
-   Fixed series with auto scrolling disabled still affecting axis regions.
-   Fixed Axis.setChartInteractionZoomByWheel(false) not working
-   Fixed massive performance issue with LineSeries3D and PointLineSeries3D
    -   Introduced in v3.4.0
-   Fixed logarithmic minor ticks hidden when no major tick is visible
-   Fixed AutoCursor sometimes being below UI elements
-   Fixed incorrect LUT color lookup in some specific use cases
    -   Map, Funnel, Gauge, Pie, Pyramid when LUT with interpolation disabled is used.

### Deprecated

-   LightningChart JS no longer officially supports Internet Explorer 11.

## [3.4.0] - 2022-02-02

### Added

-   Added `PalettedFill` support to Line and PointLine Series (2D and 3D)
    -   2D series support all available lookup properties: `'x'`, `'y'` and `'value'`
    -   3D series support `'x'`, `'y'` and `'z'` lookup properties
-   Added MapChart.onViewChange
    -   Allows laying ChartXY over MapChart for powerful and convenient geographical data visualization
-   Added `Dashboard.getRowHeight`, `Dashboard.getColumnWidth`
-   Added `PalettedFill` support to 2D and 3D axis strokes
    -   Axes can now be colored dynamically based on `x`, `y` or `z` coordinate using `setStrokeStyle` method
-   Added `CustomTick.onValueChange`
-   Added `onDispose` method to all stand-alone chart components (`Dashboard`, `ChartXY`, `Chart3D`, etc.)
-   Added support for data gaps in most XY series
    -   Number.NaN can be used to specify a data gap
    -   Supported by LineSeries, PointLineSeries, StepSeries, AreaSeries and AreaRangeSeries
-   Added support for supplying data as typed arrays for most XY chart features
    -   Affects following data methods: `addArrayX`, `addArrayY`, `addArraysXY`
    -   At this time, this does not increase performance, when compared to any previous method of supplying data

### Changed

-   Significantly improved LineSeries visual quality when using progressive data pattern.
    -   Line looks clearly sharper and smoother.

### Fixed

-   Fixed `ZoomBandChart` displaying step series as line series
-   Fixed Point Line Series incorrect fitting on first frame when scroll strategy is `undefined`.
-   Fixed CustomTicks being rendered above series.
-   Fixed `LineSeries` with progressive data pattern looking slightly off in some very specific scenarios
-   Fixed auto cursor flickering when moved above series with rapidly clearing data
    -   Applies to use cases that do `Series.clear().add(...)` very rapidly
    -   Also applies to use of `Chart.solveNearest` if used in above scenario
-   Fixed CustomTick gridline sometimes spanning outside the chart area
-   Fixed `ChartXY.dispose()` not removing bands and some other components when used inside Dashboard.
-   Fixed `MapChart.setAutoCursorMode(AutoCursorModes.disabled)` not hiding cursor
-   Fixed `PointSeries.clear()` still showing cleared data until new data is added.
-   Fixed crash when disposing and recreating Chart3D
-   Fixed surface series crash when phong shading style is enabled

## [3.3.3] - 2021-12-14

### Fixed

-   Fixed StepSeries crash after clear + add

## [3.3.2] - 2021-12-08

### Fixed

-   Fixed Chart size being incorrect when using explicit chart width and/or height.
    -   This mainly affected scenarios where chart was placed in automatically generated container.

## [3.3.1] - 2021-12-08

### Fixed

-   Fixed case where chart size would grow indefinitely.
    -   Changes to Chart container default CSS
        -   boxSizing: 'content-box'

## [3.3.0] - 2021-12-01

### Added

-   Added Chart3D zoom animation
    -   This is present when using mouse wheel or trackpad
    -   Can be disabled with `Chart3D.setAnimationZoom(false)`
-   Added `NewSurfaceGridSeries3D`
    -   Optimized version of previous surface grid series feature
    -   This new feature has even up to 1000x better performance. Usage is almost exactly same
-   Added `SurfaceScrollingGridSeries3D`
    -   Specially designed series type for scrolling surface applications
    -   Compared to previous surface grid series feature, has up to 1000x better performance
-   Added `Theme.surfaceSeriesWireframeStyle`
-   Added `CullMode3D`. This can be used with new 3D surface series
-   Added `TriangulatedPoints3DProperties.wireframeStyle`. This allows drawing wireframe for 3D points. Disabled by default.
-   Added `ChartXY.getDefaultAxes`, `Chart3D.getDefaultAxes`
    -   Convenience methods for applying same operations to several axes
-   Added `ZoomBandChartOptions.bandAboveSeries` to indicate whether band should be displayed above or below series.
    -   Previously band was always under series.
    -   Defaults to `true`, to display similarly as before set to `false`.
-   Added `SpiderChart.setScaleLabelFormatter`
-   Added optional `automaticColorIndex` property to all XY series options
    -   This allows interacting with the default themes automatic coloring of several series
-   Added `CustomTick.setAllocatesAxisSpace()`
    -   Can be used to disable axis allocating space for particular custom ticks.
-   Added `lineAntiAlias` EngineOption.
    -   This can be used to explicitly disable line anti-aliasing.
-   Added `Chart3D.onCameraChange`, `Chart3D.offCameraChange`.
-   Added `TimeTickStrategy.setTimeOrigin` option, works similarly to `DateTimeTickStrategy.setDateOrigin`
-   Added `ImageFill` style.
    -   Allows filling any rectangular shape in chart based on external image or video.
-   Added `EngineSettings.webgl` to allow specifying used WebGL (graphics framework) version.

### Changed

-   Webpack 5 no longer requires additional configuration for Node JS core modules.
-   `ZoomBandChart` now automatically matches the TickStrategy of first attached axis.
    -   ZBC axis can be manually modified using `getDefaultAxisX` and `getDefaultAxisY` methods, just like `ChartXY`
-   Significant optimizations to `HeatmapGridSeriesIntensityValues` and `HeatmapScrollingGridSeriesIntensityValues`
    -   Load-up speed increased by ~250%
    -   Load-up speed of empty heatmap increased by 10x
    -   Memory usage decreased by ~60%
    -   Intensity data update speed increased significantly
    -   Find latest conclusive performance updates at our web site https://www.arction.com/high-performance-javascript-charts/
-   Added default wireframe style to heatmap grid series
    -   To disable wireframe, use `setWireframeStyle(emptyLine)`
-   Heatmap grid series legend entries are no longer colored based on wireframe style
-   Changed default Chart3D bounding box stroke style to `emptyLine`
    -   Use `Chart3D.setBoundingBoxStrokeStyle` to specify bounding box stroke style.
-   Added little bit of default left padding to `UICheckBox` and `UIButtonBox`
-   Changed default right padding in XY chart from 10px to 24px
    -   To change right padding, use ChartXY.setPadding({ right: 10 })
-   Enabled Axis3D scroll animation by default.
    -   To restore previous behavior, use `Axis3D.setAnimationScroll(false)` for each 3D axis.
    -   Axes can be referenced like this `Chart3D.getDefaultAxisX()`.
-   Improved line anti-aliasing quality.
    -   Primitive lines, with only hardware anti-aliasing, can now be drawn by setting the line thickness to `-1`.
    -   Previously primitive lines were used when line thickness was set to `1`, now to use primitive lines you will need to use `-1` as the thickness.
    -   By default lines with thickness of `1` are now rendered with higher quality anti-aliasing.
-   Improved track-pad interactions with ChartXY and Chart3D (previously it was much too sensitive).
    -   Known issue: track-pad is still too sensitive on Safari.
-   LightningChart JS now uses `WebGL 2` whenever supported. This shouldn't introduce any major difference to existing applications and users. If anything, `WebGL 2` should work better.
-   `DateTimeTickStrategy.setFormatting...` methods now allow supplying `undefined` for any value (only overriding particular settings).
-   `DateTimeTickStrategy.setFormattingSecond` now allows configuring formatting of minor ticks at that level.
    -   This option was incorrectly missing before.
-   Charts now automatically trigger layout operation when chart container is resized.
    -   This is done by using a ResizeObserver if the browser has support for it.
-   `TriangulatedPoints3DProperties.size` can now be `Coord3D`. This allows drawing 3D points with sizes on X, Y and Z Axes.
-   `ZoomBandChart` band is now drawn above series.
-   `ZoomBandChart` now supports Heatmap series (non-scrolling variant only).
-   `ZoomBandChart` can now be attached to several axis by supplying an array instead of just one axis when it is created.
-   `ZoomBandChart` now automatically aligns its right side according to reference charts.
    -   Previously only left side was aligned.
-   Tweaks to default Axis ticks
    -   In XY charts, ticks that do not fit no longer display their tickline and gridline. Previously, only the label was hidden.
    -   Fixed Numeric major ticks sometimes behaving strange when there is little axis space available. For example, showing 1, 3, 5 instead of 0, 2, 4, 6.
    -   Numeric minor ticks are no longer displayed if the axis is shorter than 50 pixels.
    -   Slightly adjusted the selection of Numeric tick level. Larger tick levels are now activated slightly less eagerly.
-   ChartXY title no longer allocates top & bottom margins when title length is ''

### Fixed

-   Fixed spline series mouse interactions being triggered when mouse was outside of spline.
-   Fixed Map Charts not properly stopping mouse and touch events.
-   Fixed dashboard series sometimes not rendering after disposing and creating several charts
-   Fixed Test Domain being prioritized over Deployment Domain.
    -   Resulted in "Deployment Test" watermark being rendered in a valid Deployment Domain.
-   Fixed bad performance when repeatedly triggering `clear` + `add` methods for `LineSeries` or `PointSeries`.
-   Fixed heatmap series not updating palette if configured after intensity data.
-   Fixed GaugeChart disableAnimations flag not working when inside Dashboard.
-   Fixed GaugeChart behaving strange when animations are enabled and slice value is changed rapidly.
-   Improved high CPU usage in Chart3D when camera is rotated with automatic fitting enabled.
-   Fixed 3D pixelated points having different visible size with different device pixel ratio monitors.
-   Fixed chart interaction not properly canceled when interaction goes over OSM element.
-   Fixed 3D chart centering after resize -`LinearGradientFill` and `RadialGradientFill` now properly thrown an error when color stop definition doesn't contain enough color stops.
-   Fixed `IntensityGrid` and `IntensityMesh` not rendering after restored when using `IndividualPointFill`.
-   Fixed `Axis` event API having some incorrect typings (wheel, drag & touch events) and callback not receiving all arguments.
-   Fixed `HeatmapScrollingGridSeriesIntensityValues` scrolling sometimes behaving strangely (pausing or skipping ahead).
-   Fixed `Axis` animations sometimes not disabled even if chart animations are disabled.
-   Fixed touch events not properly cancelled when touch event goes over OSM.
-   Fixed XY and Polar Axis sometimes rendering incorrectly for 1 frame after window resize.

### Deprecated

-   Deprecated `Chart3D.addSurfaceSeries`
    -   To keep using surface grid series, use `Chart3D.addSurfaceGridSeries`.
        -   This is a new series type with slightly changed API and greatly increased performance
    -   To keep using surface mesh series, use `Chart3D.addSurfaceMeshSeries`
-   Deprecated `Axis.setTickStyle`. Use `setTickStrategy` instead.
-   Deprecated `LUT.valueRangeMin`, `LUT.valueRangeMax`. They do not affect anything anymore
-   Deprecated `HeatmapGridSeries.setPixelInterpolationMode`, use `setIntensityInterpolation` instead
-   Deprecated some inconsistently named methods of `Axis`:
    -   `onAxisAreaMouseDragStart` -> `onAxisInteractionAreaMouseDragStart`
    -   `onAxisAreaMouseDrag` -> `onAxisInteractionAreaMouseDrag`
    -   `onAxisAreaMouseDragStop` -> `onAxisInteractionAreaMouseDragStop`
    -   `onAxisInteractionAreaMouseTouchStart` -> `onAxisInteractionAreaTouchStart`
    -   `onAxisInteractionAreaMouseTouch` -> `onAxisInteractionAreaTouch`
    -   `onAxisInteractionAreaMouseTouchStop` -> `onAxisInteractionAreaTouchStop`
    -   `offAxisInteractionAreaMouseTouchStart` -> `offAxisInteractionAreaTouchStart`
    -   `offAxisInteractionAreaMouseTouch` -> `offAxisInteractionAreaTouch`
    -   `offAxisInteractionAreaMouseTouchStop` -> `offAxisInteractionAreaTouchStop`
-   `ZoomBandChart.attachedAxis`, use `attachedAxes` (array property) instead.

## [3.2.0] - 2021-09-22

### Added

-   Added `DateTimeTickStrategy.setCursorFormatter` for easy modification of cursor ticks formatting.
-   Added `NumericTickStrategy.setCursorFormatter` for easy modification of cursor ticks formatting.
-   Added `TimeTickStrategy.setCursorFormatter` for modification of cursor ticks formatting.
-   Added `translatePoint3D`, `Chart3D.axes`, `Chart3D.world` for translating coordinates between 3D _world space_ and _axis coordinates_. This can be used for depth sorting.
-   Added `Series3D.setDepthTestEnabled`. This gives more configuration options for drawing 3D transparent objects.
-   Added `PointSeriesOptions3D.individualPointSizeAxisEnabled`. This allows drawing 3D points with individual sizes on X, Y and Z Axes.
-   Added `Axis.setThickness`.
    -   This can be used to control the width or height of axis depending on is the axis Y or X axis.
-   Added primitive draw mode to `LineSeries3D` and `PointLineSeries3D`.
    -   This feature can be used for improved performance by reducing line depth perception.
    -   See `setStrokeStyle` method for more information.
-   Added `series.setAutoScrollingEnabled` for disabling scrolling and fitting of specific series.
-   Added `synchronizeAxisIntervals`. Utility for synchronizing intervals of one or more axis.

### Changed

-   Improved default Date time cursor formatting to display Year, month, day, hour and minute information. This can be modified with new method `DateTimeTickStrategy.setCursorFormatter`.
-   Added `dataPoint` parameter to `SeriesXYFormatter`. This allows using `value`, `size`, `color`, `rotation` and custom values in cursor result table formatters.
-   `ZoomBandChart` now automatically aligns itself with the reference chart.
-   Community version no longer has performance penalty.
-   `NumericTickStrategy.setFormattingFunction` now also affects default cursor result table formatting and cursor ticks formatting.
-   `SolidGauge.setIntervalLabelFormatter` and `setDataLabelFormatter` now also accept callback functions which can be used to display text that is not strictly numbers.
-   Improved axis tick rendering performance.

### Fixed

-   Fixed ChartXY UI element positioning on axis.
-   Fixed map chart AutoCursor not usable with touch.
-   Fixed `ZoomBandChart` not reacting to `Dashboard` `theme` or `disableAnimations` options.
-   `PointSeries3D` no longer crashes when styled with `PalettedFill`.
-   `PointSeries3D` now displays color lookup table range when attached to a legend box and styled with paletted fill.
-   Fixed edge case in text rendering when creating text with large font size.
-   Fixed occasional error message when zooming in and out line series rapidly.
-   Fixed incorrect rendering behavior when chart is transitioned to fullscreen on Safari.
-   Fixed incorrect legend box entry alignment after restoring the legend box entry.
-   Fixed `OHLCSeries` sometimes not being visible, especially when chart is created and animations are disabled.
-   Fixed point, line and range series `getPointAmount` not counting points that were added just before.
-   Fixed empty series affecting automatic fitting of series.
-   LightningChart JS logo now renders properly on high DPI devices with `window.devicePixelRatio` greater than 1.
-   Fixed poor performance when adding new points to charts with 1 million or more points in some cases.
-   Fixed `HeatmapGridSeries.getWireframeStyle` returning `FillStyle` instead of `LineStyle`.
-   Fixed TypeScript issue with being able to pass `LineStyle` as `FillStyle` or vice versa.
-   Fixed `HeatmapScrollingGridSeries` not attaching to any other axis than default chart axis.
-   Fixed `IntensityGridSeries` and `IntensityMeshSeries` not rendering after it has been restored.

## [3.1.0] - 2021-07-28

### Added

-   Added new chart type, `MapChart`.
    -   `MapChart` has multiple views for visualizing data in different regions of world.
    -   Supports real-time data updates with high FPS.
-   Added new series type, `PolygonSeries`.
    -   This series can be created with `ChartXY.addPolygonSeries`.
    -   `PolygonSeries.add` returns you a `PolygonFigure` object which can be used to style the polygon.
-   Added improved series type `HeatmapGridSeries`.
    -   This series can be created with `ChartXY.addHeatmapGridSeries`.
    -   Replaces the existing `IntensityGridSeries` (`ChartXY.addHeatmapSeries`) which is now considered deprecated and will be removed in next major release.
    -   This new series type provides considerably better performance compared to the previous version.
-   Added new series type `HeatmapScrollingGridSeries`.
    -   This series can be created with `ChartXY.addHeatmapScrollingGridSeries`.
    -   Provides a way to create scrolling heatmap with data cleaning support.
-   Added new methods to help to make better experience on devices with smaller screens.
    -   `UIElement.setAutoDispose`, `UIElement.getAutoDispose`
-   Added `High precision XY Axis`.
    -   New XY Axis type that allows zooming to smaller axis intervals with drawback of decreased performance. Refer to `AxisOptions` documentation for instructions.
    -   This is considered an experimental feature and might be changed in a minor or major release with no backwards compatibility.
-   Added `AxisTickStrategies.Time`.
    -   New automatic ticks strategy for depicting axis intervals between hundreds of hours and individual nanoseconds.
-   Added `TimeFormattingFunctions` helper methods for formatting millisecond time stamps to different time string formats.
-   Added `LUT` parameter to `UILUTCheckBox.setLUTStepValueFormatter` callback.
-   Added new options to `LUT`, `LUT.valueRangeMin` and `LUT.valueRangeMax`.
-   Added new control for suppressing warnings that are mostly useful when developing, `LightningChartOptions.warnings`.
-   Added `NumericTickStrategy.formattingOffset`, works similarly to `DateTimeTickStrategy.setDateOrigin`.
-   Ability to rotate all texts.
    -   `Chart.setTitleRotation`
    -   `Axis.setTitleRotation`
    -   `VisibleTicks.setLabelRotation`
    -   `ResultTable.setTextRotation`
    -   `CustomTick.setTickLabelRotation`
    -   `LegendBox.setTitleRotation`
    -   `UITextBox.setTextRotation`
-   Added helper method `Chart.zoom`.
-   Added helper method `Chart.pan`.
-   Added missing API `PolarChart.getSeries`.
-   Added missing API `Chart3D.getSeries`.
-   Added ability to control mouse and touch interaction state to 3D Chart.
    -   `Chart3D.setMouseInteractions`
    -   `Chart3D.setMouseInteractionZoom`, `Chart3D.getMouseInteractionZoom`
    -   `Chart3D.setMouseInteractionRotate`, `Chart3D.getMouseInteractionRotate`
-   Added `LineSeries3D.setStrokeStyle, getStrokeStyle, setStrokeStyleHighlight, getStrokeStyleHighlight`.
    -   These replace the similarly named `LineSeries3D.setLineStyle, getLineStyle, setLineStyleHighlight, getLineStyleHighlight`.
-   Added `PointLineSeries3D.setStrokeStyle, getStrokeStyle, setStrokeStyleHighlight, getStrokeStyleHighlight`
    -   These replace the similarly named `PointLineSeries3D.setLineStyle, getLineStyle, setLineStyleHighlight, getLineStyleHighlight`.
-   Added `individualPointColorEnabled`, `individualPointSizeEnabled` and `individualLookupValuesEnabled` to `PointSeriesOptions3D`.
-   Added `UIElementBuilders.LUTRange`.
-   Added more control to how 3D series are shaded.
    -   `Series3D.setColorShadingStyle`, `Series3D.getColorShadingStyle`
-   Added new Shading style `ColorShadingStyles.Simple`.
    -   This shading style can make some 3D visualizations look better by removing all shading and using the object colors directly.
    -   Using this shading style can improve performance on low end devices.
-   Added new Shading style `ColorShadingStyles.Phong`.
    -   This has been the default shading style for all 3D features since the 3D features were introduced.
    -   You can now control `ambientColor`, `ambientReflection`, `diffuseReflection`, `specularReflection`, `specularColor` and `shininess` options.
-   Added `ChartXY.addOnScreenMenu`.
    -   `OnScreenMenu` can be used to create UI controls over the chart.
    -   This is considered an experimental feature and might be changed in a minor or major release with no backwards compatibility.
-   Added new theme styling options.
    -   `Theme.lineSeries3DStrokeStyle`
    -   `Theme.pointSeries3DPointStyle`
    -   `Theme.pointLineSeries3DStrokeStyle`
    -   `Theme.pointLineSeries3DPointStyle`
    -   `Theme.pointCloudSeries3DPointStyle`
    -   `Theme.polygonSeriesFillStyle`
    -   `Theme.polygonSeriesStrokeStyle`
    -   `Theme.heatmapFillStyle`
    -   `Theme.heatmapWireframeStyle`
    -   `Theme.heatmapGridSeriesFillStyle`
    -   `Theme.heatmapGridSeriesWireframeStyle`
    -   `Theme.rectangleSeriesFillStyle`
    -   `Theme.rectangleSeriesStrokeStyle`
    -   `Theme.polarAreaSeriesFillStyle`
    -   `Theme.polarAreaSeriesStrokeStyle`
    -   `Theme.polarAreaSeriesStrokeStyle`
    -   `Theme.uiPointableTextBoxFillStyle`
    -   `Theme.uiPointableTextBoxTextFillStyle`
    -   `Theme.uiPointableTextBoxStrokeStyle`
    -   `Theme.uiPointableTextBoxFont`
    -   `Theme.uiTickTextFillStyle`
    -   `Theme.uiTickStrokeStyle`
    -   `Theme.uiTickFont`
-   Added new themes.
    -   `Themes.darkGold`
    -   `Themes.darkGreen`
    -   `Themes.darkLime`
    -   `Themes.darkMagenta`
    -   `Themes.darkRed`
    -   `Themes.darkTurquoise`
    -   `Themes.blueSciFiNew`
    -   `Themes.glacier`
    -   `Themes.lightNew`
    -   `Themes.lightNature`
    -   `Themes.darkNature`
    -   `Themes.duskInLapland`
    -   `Themes.auroraBorealisNew`
    -   `Themes.cyberSpace`
    -   Themes that end with suffix `New` will replace similarly named theme with no `New` suffix.
-   Most Theme series style properties now support Palette definition optionally as well.

### Changed

-   `FormattingFunctions.Numeric` now also works for more than 3 decimal parts.
-   `PointSeries3D` now supports `IndividualPointFill` style and `PalettedFill` style.
-   `PointSeries3D` performance has been greatly improved overall.
-   `LineSeries3D` performance has been greatly improved overall.
-   `PointLineSeries3D` performance has been greatly improved overall.
-   Removed _empty UI backgrounds_ from all default UI builders. This makes it easier to style UI backgrounds - afterwards, only using `setBackground(bg => bg.setFillStyle(...))` will always be enough.
-   Changed UI default background behavior - now ALL UI elements will always have background styled according to Theme by default. To hide background, use `setBackground(bg => bg.setFillStyle(...))`, etc.
-   `DateTimeTickStrategy` default cursor formatting now falls back to major ticks formatting if minor ticks are disabled.
-   Improved LUT precision.

### Fixed

-   Improved 3D color shading, and fixed some cases with incorrect lighting.
-   Fixed some scenarios where GPU memory wasn't freed when it could have been freed.
-   WebGL context wasn't marked as 'lost' when chart/dashboard was completely disposed.
-   Fixed `GL_INVALID_VALUE : glScissor` warning.
-   Fixed crash when Pie chart of type `PieChartTypes.LabelsOnSides` was created with only one slice.
-   Fixed 3D Point Line Series point size not updated to match highlight size when highlighted.
-   Fixed 3D Point Line Series point size could be smaller than line thickness, after changing line thickness, resulting in visible gaps in line.

### Deprecated

-   `Theme.seriesNonTriangulatedPointStyle3D`. Use `Theme.pointCloudSeries3DPointStyle` instead.
-   `Theme.seriesTriangulatedPointStyle3D`. Use `Theme.pointSeries3DPointStyle` instead.
-   `Theme.customTickMarkerFillStyle`. Use `Theme.uiPointableTextBoxFillStyle` instead.
-   `Theme.customTickMarkerTextFillStyle`. Use either `customTickMarkerTextFillStyle` or `uiTickTextFillStyle`.
-   `Theme.customTickMarkerStrokeStyle`. Use either `uiPointableTextBoxStrokeStyle` or `uiTickStrokeStyle`.
-   `Theme.pointMarkerHorizontalGridStrokeStyle`. Use `customTickGridStrokeStyle` instead.
-   `Theme.pointMarkerVerticalGridStrokeStyle`. Use `customTickGridStrokeStyle` instead.
-   `Theme.axisLabelFillStyle`. Use `numericTickStrategy` or other _tick strategy_ property instead.
-   `Theme.axisLabelFont`. Use `numericTickStrategy` or other _tick strategy_ property instead.
-   `Theme.pointMarkerTextFillStyle`. Use `uiPointableTextBoxTextFillStyle` or `uiTickTextFillStyle` instead.
-   `Theme.seriesStrokeStyle3D`. Use `Theme.lineSeries3DStrokeStyle` instead.
-   `Theme.seriesNonTriangulatedPointStyle3D`. Use `Theme.pointCloudSeries3DPointStyle` instead.
-   `Theme.seriesTriangulatedPointStyle3D`. Use `Theme.pointSeries3DPointStyle` instead.
-   `LineSeries3D.setLineStyle`. Use `setStrokeStyle` instead.
-   `LineSeries3D.getLineStyle`. Use `getStrokeStyle` instead.
-   `LineSeries3D.setLineStyleHighlight`. Use `setStrokeStyleHighlight` instead.
-   `LineSeries3D.getLineStyleHighlight`. Use `getStrokeStyleHighlight` instead.
-   `PointLineSeries3D.setLineStyle`. Use `setStrokeStyle` instead.
-   `PointLineSeries3D.getLineStyle`. Use `getStrokeStyle` instead.
-   `PointLineSeries3D.setLineStyleHighlight`. Use `setStrokeStyleHighlight` instead.
-   `PointLineSeries3D.getLineStyleHighlight`. Use `getStrokeStyleHighlight` instead.
-   `ChartXY.disableAnimations()` use `ChartXY.setAnimationsEnabled(false)` instead.
-   `Axis.disableAnimations()` use `Axis.setAnimationsEnabled(false)` instead.
-   `Dashboard.disableAnimations()` use `Dashboard.setAnimationsEnabled(false)` instead.
-   `Spider.disableAnimations()` use `Spider.setAnimationsEnabled(false)` instead.
-   `Polar.disableAnimations()` use `Polar.setAnimationsEnabled(false)` instead.
-   `Pie.disableAnimations()` use `Pie.setAnimationsEnabled(false)` instead.
-   `Gauge.disableAnimations()` use `Gauge.setAnimationsEnabled(false)` instead.
-   `Funnel.disableAnimations()` use `Funnel.setAnimationsEnabled(false)` instead.
-   `Pyramid.disableAnimations()` use `Pyramid.setAnimationsEnabled(false)` instead.
-   `Map.disableAnimations()` use `Map.setAnimationsEnabled(false)` instead.
-   `Chart3D.disableAnimations()` use `Chart3D.setAnimationsEnabled(false)` instead.
-   `Series.setMaxPointCount()` use `Series.setDataCleaning()` instead.
-   `Series.setDataCleaningThreshold()` use `Series.setDataCleaning()` instead.

## [3.0.1] - 2021-05-26

### Added

-   PointSeries, PointLineSeries, SplineSeries and StepSeries now support data point 'value' paletted coloring.

### Fixed

-   PointSeries, PointLineSeries, SplineSeries and StepSeries now properly interact with Legend LUT UI element if styled with PalettedFill.
-   LineSeries and AreaSeries stroke gradient stroke style sometimes would render incorrectly.
-   WebGL Errors in some scenarios when running 3D charts on Android Chrome.
-   Fixed LUT Unit label clipping out of legend box in some configurations.
-   Rectangle gradient stroke style not working properly.
-   Chart would try to zoom out when zooming in with touch gesture.
-   Surface 3D theme style only applied after the series was highlighted or style was explicitly set.
-   Box Series 3D legend box entry not styled according to the series fill style.
-   Axis pan direction could be reversed when chart was in dashboard and the chart was resized using a splitter and the axis was reversed.
-   Axis interval selection visual incorrect height in some scenarios.
-   Opposite axis positioning was incorrect before first update after the axis was added.
-   Polar Sector low resolution in some cases.
-   Fixed missing LineSeries mouse interactions.
    -   LineSeries Mouse interactions are disabled by default for performance reasons regarding freeform line series.
    -   Call LineSeries.setMouseInteractions(true) to enable mouse interactions if interactions are needed.
-   Fixed minor grid lines sometimes rendering over major grid lines

## [3.0.0] - 2020-05-05

### Added

-   PolarChart
-   PolarAxisAmplitude
-   PolarAxisRadial
-   PolarPoint
-   PolarPointSeries
-   PolarLineSeries
-   PolarPointLineSeries
-   PolarAreaSeries
-   PolarPolygonSeries
-   PolarSector
-   Logarithmic axis support for XY charts
-   BoxSeries3D now supports PalettedFill by x, y or z
-   LineSeries.setDataCleaningThreshold, getDataCleaningThreshold
-   LineSeries.setCursorSolveBasis, getCursorSolveBasis
-   PointLineSeries.setCursorSolveBasis, getCursorSolveBasis
-   SplineSeries.setCursorSolveBasis, getCursorSolveBasis
-   StepSeries.setCursorSolveBasis, getCursorSolveBasis
-   UILUTCheckBox
-   API for Axis mouse and touch events
-   UITick
-   UITickBuilder
-   UIElementBuilders.AxisTick
-   Configuration options for changing mouse interactions to different mouse buttons
-   `UILegendBoxPanel.setLegendBoxes`
-   NumericTickStrategy.setExtremeFormattingFunction
-   NumericTickStrategy.setMajorFormattingFunction
-   NumericTickStrategy.setMinorFormattingFunction
-   API for subscribing to mouse and touch events on chart background
-   Dependency to earcut (https://github.com/mapbox/earcut). Used for Polygon triangulation.

### Changed

-   Attaching a series with color lookup table (LUT) now automatically visualizes the color steps with a LUTUICheckBox component.
-   LegendBox title is no longer automatically set to match chart title. Title can be set with new method `LegendBox.setTitle`.
-   Tweaked LegendBox default style to look a bit nicer.
-   `LegendBox.add` API has changed. Refer to migration guide for details.
-   LegendBoxEntry is now styled accordingly with series `PalettedFill`.
-   Nib mouse wheel behavior is now more intuitive
-   Default style of XY Markers was changed to same as AutoCursor
-   Renamed CustomTick.setTopPadding -> setTickLabelPadding
-   Renamed PointableTextBox -> UIPointableTextBox
-   Major improvements to text rendering performance
-   Changed default CheckBox button picture to UIButtonPictures.Circle
-   Renamed `ResultTable.setFont` to `setTextFont`
-   Renamed `UITextBox.setFont` to `setTextFont`
-   Renamed `UICheckBox.setFont` to `setTextFont`
-   Renamed `LegendBoxEntry.setFont` to `setTextFont`
-   Theme.chartBackgroundFillStyle renamed to seriesBackgroundFillStyle
-   Theme.chartBackgroundStrokeStyle renamed to seriesBackgroundStrokeStyle
-   on/offChartBackground... event methods were renamed to on/offSeriesBackground...
-   setChartBackgroundFillStyle methods renamed to setSeriesBackgroundFillStyle
-   getChartBackgroundFillStyle methods renamed to getSeriesBackgroundFillStyle
-   setChartBackgroundStrokeStyle methods renamed to setSeriesBackgroundStrokeStyle
-   getChartBackgroundStrokeStyle methods renamed to getSeriesBackgroundStrokeStyle
-   Changed default CheckBox button picture to `UIButtonPictures.Circle`
-   `UILegendBoxPanel.add` no longer accepts series, or other _attachables_. Only chart or dashboard can be supplied.
-   Default LegendBox alignment changed from horizontal to vertical.
-   Improved default LegendBox positioning.
-   Changed default cursor solve basis of all line series' to `'nearest-x'`. This can be changed with new method: `setCursorSolveBasis`
-   Improved Line Series rendering algorithms for progressive and real-time rendering, to perform much faster and look better.
-   Heavily optimized progressive Line Series with user zooming in/out and automatic scrolling
-   Significantly improved Line Series memory usage in scrolling applications with data cleaning enabled
-   `AreaSeries` and `AreaRangeSeries` cursor now behaves as expected, by picking closest data point along X dimension. Cursor now also performs better.
-   All `dataPattern` options have been changed. Instead of selecting an option from `DataPatterns` export, use object format instead, for example `{ pattern: 'ProgressiveX' }`. See documentation/migration guide for details.
-   `onPanelBackground...` -methods were renamed to `onBackground...`
-   Renamed `setResultTableFormatter`, and `getResultTableFormatter` methods to `setCursorResultTableFormatter`, and `getCursorResultTableFormatter` respectively.
-   Improved API documentation

### Removed

-   `DefaultLibraryStyle` - Use Themes.dark or any other Theme instead.
-   `UILegendBoxPanel` title API (`setTitle`, `getTitle`, `setTitleFillStyle`, `getTitleFillStyle`, `setTitleFont`, `getTitleFont`).
-   `UILegendBoxPanel.setEntries`, use `UILegendBoxPanel.setLegendBoxes` for same functionality.
-   Boolean parameter to ChartXY.addAxisX and addAxisY. Replaced with object syntax
-   NumericAxisTickStrategy.setFormattingFunction. Replaced with individual setters for each tick level.
-   CustomTick.setPaddingBottom (can be accessed via TickMarker background)
-   CustomTick.setSidePaddings (can be accessed via TickMarker background)
-   CursorBuilderXY.setTickMarkerXBackground
-   CursorBuilderXY.setTickMarkerYBackground
-   `PointSeriesOptions3D.pointShape`, use `PointSeries3D.setPointStyle` instead.
-   `PointLineSeriesOptions3D.pointShape`, use `PointLineSeries3D.setPointStyle` instead.
-   Theme.numericTickStrategy3D use Theme.numericTickStrategy instead.
-   Theme.dateTimeTickStrategy3D use Theme.dateTimeTickStrategy instead.
-   `DataPatterns`. Use object format instead, for example `{ pattern: 'ProgressiveX' }`. See documentation/migration guide for details.

### Fixed

-   Fixed ticks overlapping other ticks in some cases
-   Fixed LUT unexpected color step behavior when interpolation is disabled
-   Fixed Axis.fit() when Series points are in a straight line
-   Fixed progressive Axis scrolling sometimes getting ahead of series
-   Fixed scenario where chart rendered with 1px x 1px canvas
-   Fixed Constant line and Band touch events not working inside dashboard.
-   Fixed mouse leave event not fired correctly in all cases
-   Fixed missing configuration for 3D chart creation inside dashboard, theme and disableAnimations can now be properly set
-   Fixed improper dispose behavior of ChartXY
-   IntensitySeries now supports highlighting when styled with SolidFill
-   IntensitySeries style is now properly matched in LegendBox
-   SurfaceSeries3D style is now properly matched in LegendBox
-   SurfaceSeries3D is now properly highlighted when hovering over respective LegendBoxEntry
-   Fixed some cases where series boundaries were one frame behind actual boundaries
-   Resolved some Z-fighting issues with `SurfaceSeries3D` wireframe and surface.
-   Fixed SurfaceSeries3D and HeatmapMeshSeries not accounting boundaries of first and last column & row.
-   Fixed axis nib mouse wheel scroll event wasn't properly stopped when interaction happened.
-   Fixed IntensitySeries not updating when using `addColumn` to add only values
-   Fixed type issues when using strict type checking mode with TypeScript
-   Fixed linear gradient interpolation being incorrect when devicePixelRatio wasn't exactly 1.
-   Fixed NumericTickStrategy formatting in very low value range (1e-6 and below)

## [2.2.1] - 2020-01-28

### Fixed

-   License verification error when using a valid license

## [2.2.0] - 2020-01-27

### Added

-   Chart3D series background
    -   Chart3D.setSeriesBackgroundFillStyle
    -   Chart3D.setSeriesBackgroundStrokeStyle
-   3D BoundingBox style API
    -   Chart3D.setBoundingBoxStrokeStyle
    -   Chart3D.getBoundingBoxStrokeStyle
-   3D camera behavior control
    -   Chart3D.setCameraAutomaticFittingEnabled
    -   Chart3D.getCameraAutomaticFittingEnabled
-   New color palettes for palettes that match with the themes added in 2.1.0
    -   auroraBorealis
    -   blueSciFi
    -   light
    -   monochrome
    -   night
    -   sunset2
-   Add get/setResultTableFormatter for IntensitySeries
-   Intensity series wireframe. This was included in 2.1.0 release but was missing from the changelog. Changelog for 2.1.0 has also been updated to include this change.

### Changed

-   Major improvements to 3D Point Series and 3D Line Series performance
-   Improved 3D Box Series performance
-   Improved Axis3D tick and grid line rendering performance
-   General performance improvements
-   Tweaked Axis3D joint style with thick line style
-   Inconsistent RangeSeries max point count value to be consistent (0) with other series types.
-   Improved default Chart3D camera behavior to fit data into visible viewport better
-   Improved default themes paletted color behavior
-   Improved 3D Line Series visual style
-   Added 'shape' option to PointStyle3D.Triangulated for changing 3D points shape during runtime.
-   Tweaked themes

### Fixed

-   3D theme inconsistencies
-   `Axis.setScrollStrategy` TS type not accepting `undefined`
-   IntensitySeries zooming and panning did unnecessary calculation

### Deprecated

-   Theme.numericTickStrategy3D use Theme.numericTickStrategy instead.
-   Theme.dateTimeTickStrategy3D use Theme.dateTimeTickStrategy instead.
-   ChartXY.setChartBackgroundFillStyle renamed to setSeriesBackgroundFillStyle
-   ChartXY.setChartBackgroundStrokeStyle renamed to setSeriesBackgroundStrokeStyle
-   PointSeries3D 'pointShape' initialization configuration. Use PointSeries3D.setPointStyle instead.
-   PointLineSeries3D 'pointShape' initialization configuration. Use PointLineSeries3D.setPointStyle instead.

## [2.1.0] - 2020-11-30

### Added

-   3D Surface Series
-   3D Box Series
-   Added 3D Tick gridlines.
-   Heatmap cursor support
-   Custom Theme API to create your own Themes.
    -   customSimpleTheme()
    -   customComplexTheme()
    -   customTheme()
-   New themes
    -   AuroraBorealis
    -   BlueSciFi
    -   Classy
    -   DarkGradient
    -   Lavender
    -   LavenderGradient
    -   LightGradient
    -   Lipstick
    -   Monochrome
    -   Night
    -   Raspberry
    -   Sunset
-   Series.onHighlight / Series.offHighlight
-   `Axis.getInterval()` method for retrieving the currently applied axis scale interval.
-   Added `vec3utils`. A collection of 3-dimensional vector math functions.
-   Intensity series wireframe

### Changed

-   Highlighting a Series on a Chart also highlights corresponding Series in attached Zoom Band Chart

### Removed

### Fixed

-   Fix not being able to style 3D Tick lines.
-   Fixed error when running the charts in Node JS. (With the lcjs-headless package)
-   Pie, Funnel and Spider charts animation speed inconsistency with ChartXY animation speed.
-   Rendering error on first frame.

### Deprecated

-   `DefaultLibraryStyle` - Use Themes.dark or any other Theme instead.

## [2.0.3] - 2020-10-15

### Fixed

-   Rendering error after chart with PointSeries had been disposed once and recreated with a new PointSeries.

## [2.0.2] - 2020-09-17

### Fixed

-   Fixed issue with PointSeries in Mac systems.
-   Fixed AutoCursor being out of sync with actual position.
-   Fixed issues with AngularJS related to typings.

## [2.0.1] - 2020-09-07

### Fixed

-   Fixed new example links in readme file

## [2.0.0] - 2020-09-04

### Added

-   Add public API to get Highlighters for Axis
-   Added onPositionChange event to ChartMarker and SeriesMarker
-   Added more mouse and touch events to chart background
-   layout() method to PublicEngine interface.
-   Add LinearGradientFill and RadialGradientFill fill styles.
-   Added Axis _setTickStrategy_ method.
-   Added AxisTickStrategies.Empty (replaces Axis.setTickStyle( emptyTick ))
-   Added VisibleTicks.setLabelAlignment()
-   Chart3D
-   Axis3D
-   Point3D
-   PointSeries3D
-   PointCloudSeries3D
-   PointStyle3D
-   LineSeries3D
-   PointLineSeries3D

### Changed

-   Refactored thick line rendering.
    -   Improves the visual style of the line when a semi-transparent fill style is used.
    -   Improves GL memory usage. Same line now takes 40 to 70% less GL memory depending on the line.
-   PointSeries now uses faster rendering methods on supported devices.
    -   Major performance improvement
    -   Uses less GL memory
-   columnSpan and rowSpan Dashboard options are now optional and default to 1.
-   Chart options when creating a chart inside dashboard are simplified.
    -   Options are no longer behind a separate object but are instead given in same object as the dashboard options.
-   Reduced zooming animation duration
-   Made transparent backgrounds possible.
-   LightningChart JS now requires the following WebGL extensions to work properly
    -   ANGLE_instanced_arrays
    -   EXT_blend_minmax
    -   OES_element_index_uint
    -   OES_standard_derivatives
    -   OES_vertex_array_object
    -   WEBGL_lose_context
    -   If any of these extensions is missing, then a dismissible warning will be shown to notify users of possibly incorrectly working features.
-   Changed seriesBackground mouse and touch event naming to chartBackground mouse and touch events.
    -   e.g. onSeriesBackgroundMouseDown was changed to onChartBackgroundMouseDown
-   `requestAnimationFrame` and `cancelAnimationFrame` are no longer polyfilled automatically.
    -   The methods should be polyfilled if support for environments where the methods don't exist is needed.
-   Numeric Axis ticks have been reworked
-   DateTime Axis ticks have been reworked
-   Mouse and touch events are properly handled to allow normal browser interactions when chart does no action for the event
-   Changed ColorHEX factory color syntax to follow CSS color syntax, #RRGGBB\[AA\]
-   Changed default highlight behavior of Series.
    -   Series is no longer highlighted by default when hovering over it. Use `series.setHighlightOnHover()` or `chart.setSeriesHighlightOnHover()` to highlight on hover.
-   Improved styles for default themes.

### Removed

-   AxisTickStrategies.NumericWithUnits
-   Passing AxisTickStrategy of default Axes upon creating a ChartXY
-   Passing AxisTickStrategy as parameter of ChartXY.addAxisX() or ChartXY.addAxisY()
-   Removed APIs that were previously marked deprecated.
    -   `Chart.setDataLabelFormater`
    -   `Chart.getDataLabelFormater`
    -   `Chart.setChartBackgroundStroke`
    -   `Chart.getChartBackgroundStroke`
    -   `Series.setMaxPointsCount`
    -   `containerId` option

### Fixed

-   Fix legend box item checkbox looking bad when stroke style is other than 1.
-   Fix touch events triggering outside chart area

## [1.3.1] - 2020-05-29

### Fixed

-   Inconsistent cursor style changing when moving from hovering element to hovering one element to hovering over another element.
-   Fixed a crash when adding data to OHLCSeries
-   Hovering over the Arction logo for long enough caused the chart to freeze itself instead of allowing clicking a link to go to the Arction website.
-   Incorrect resolution and interactions when opening a chart in fullscreen mode

## [1.3.0] - 2020-04-28

### Added

-   Heatmap
-   ChartXY.addHeatmapSeries()
-   IntensityGridSeries can be used for visualization of magnitude in two dimensions.
-   IntensityMeshSeries can be used for visualization of magnitude in two dimensions, where the geometry of the series can be edited.
-   Dashboard.createZoomBandChart()
-   Added Axis _Bands_ and _ConstantLines_.
-   Application/Intranet Deployment key support
-   A way to disable all animations at once.
    -   Call `disableAnimations()` on any chart or specify `disableAnimations: true` as a chart creation option.
-   Added series._addArrayX()_, ._addArrayY()_, ._addArrayXY()_ to basic Series types in XY Charts for user convenience.
    -   These methods cause some overhead when used, so using the series._add()_ is still recommended for best performance.
-   Added _.addArrayY()_ to _OHLCSeriesWithAutomaticPacking_ for user convenience.
    -   This method causes some overhead when used, using _.add()_ method is still recommended for best performance.
-   getSeries() method to XY Charts and Spider chart.
-   Support for rendering in Node JS environment with the help of "@arction/lcjs-headless" package.
-   `renderFrame()` method to engine.
-   Added getDataLabelFillStyle and setDataLabelFillStyle to SolidGauge.

### Changed

-   _FitEngineToDiv.container_ to pass DOM Element to Engine. Users can pass either DOM Element itself, or its ID.
-   Mouse and touch interaction handling to add support for pen and PC touch screen interactions.
    -   All interactions still work the same way, interactions just has better support for more interaction methods.

### Fixed

-   Rendering error on some GPU's where GPU received some vertices as NaN instead of a valid vertex.
-   Inconsistent style for SeriesMarker tick X and Y labels
-   Fixed a TypeError on pyramid chart
-   LightningChart JS logo failing to render correctly when high-dpi mode is used and devicePixelRatio is less than 1
-   LightningChart JS logo duplication in LegendBoxPanel
-   Incorrect cursor styles when hovering over axis or other element with resize cursor style
-   PointSeries.add method requiring added points to be of `ColorPoint` type when `Point` is a valid type for it.

### Deprecated

-   Deprecated use of _FitEngineToDiv.containerId_ in EngineOptions. Use _FitEngineToDiv.container_ instead.
-   Deprecated use of _setChartBackgroundStroke_ in SpiderChart, ChartXY. Use _setChartBackgroundStrokeStyle_ instead.
-   Deprecated use of _getChartBackgroundStroke_ in SpiderChart, ChartXY. Use _getChartBackgroundStrokeStyle_ instead.

## [1.2.2] - 2020-01-07

### Changed

-   Error message when trying to create a chart in container that doesn't exist

### Fixed

-   Mouse interactions permanently disabled when interactions disabled while interaction is in-progress
-   Multiple Slice Explosion restriction not always working

## [1.2.1] - 2019-12-18

### Fixed

-   TypeScript typings duplicate identifier

## [1.2.0] - 2019-12-10

### Added

-   Added Axis _Bands_ and _ConstantLines_.
-   ColorHEX supports format with '0x' prefix.
-   Dashboard.setSplitterStyle()
-   Dashboard.setSplitterStyleHighlight()
-   Dashboard.setBackgroundFillStyle()
-   Dashboard.setBackgroundStrokeStyle()
-   High DPI rendering support with 'devicePixelRatio' engine option
-   Themes, with 'dark' and 'light' preset themes available.
-   LUT (ValueRangePalette)
-   series.getPointAmount() in XY Charts
-   ChartXY.setMouseInteractionsWhileScrolling()
-   ChartXY.setMouseInteractionsWhileZooming()
-   New option when creating lines: highlightThicknessMultiplier can be used to specify thickness of highlighted lines
-   Progressive DataPatterns precision

### Changed

-   Chart examples linked in the readme
-   Mouse interactions are disabled by default when scrolling / zooming. This behavior can be changed with methods in XY Charts.

### Fixed

-   GL errors with Pyramid Chart
-   AutoCursor working incorrectly with touch displays

## [1.1.1] - 2019-10-11

### Changed

-   Chart examples linked in the readme

### Fixed

-   Typo in the readme
-   Missing typings
-   Performance issue found in the trading showcase

## [1.1.0] - 2019-10-03

### Added

-   Dispose API for Charts, Dashboard
-   Add OHLCSeries.set/getFigureAutofitting()

### Changed

-   Removed dependency to crc package.
-   Removed dependency to collections package.

### Deprecated

-   SolidGauge.setDataLabelFormater in favor of SolidGauge.setDataLabelFormatter
-   SolidGauge.getDataLabelFormater in favor of SolidGauge.getDataLabelFormatter
-   OHLCSeries.setMaxPointsCount in favor of OHLCSeries.setMaxPointCount

### Fixed

-   Fixed crash when adding points to step series.
-   PointableTextBox incompatibility with axis custom tick.
-   Empty StrokeStyle not working with Axis Nibs

## [1.0.3] - 2019-08-26

### Added

-   More keywords for npm

### Changed

-   Readme file contents present the package better

## [1.0.1] - 2019-08-14

### Added

-   CHANGELOG.md included in the npm package
-   More keywords for npm

### Fixed

-   Pyramid Chart
    -   Added missing API documentation for `get/setAnimationsEnabled`
-   Funnel Chart
    -   Added missing API documentation for `get/setAnimationsEnabled`

## [1.0.0] - 2019-08-05

### Added

-   2-Dimensional Charts
    -   ChartXY (Cartesian Chart)
        -   Line Series
        -   Point Series
        -   Point Line Series
        -   Spline Series
        -   Step Series
        -   Rectangle Series
        -   Ellipse Series
        -   Box Series
        -   OHLC Series
        -   Area Series (BiPolar, Monopolar, AreaRange)
        -   Axes
    -   Spider Chart
    -   Pie Chart
    -   Gauge Chart
    -   Funnel Chart
    -   Pyramid Chart
-   Markers (for Series / Chart)
-   Cursor
-   Mouse Interactions
-   Touch Support
-   Animations
-   Dashboard
-   LegendBox
-   UI Elements (Buttons, CheckBoxes, Labels, TextBoxes)
