helpers.dom.ts functions referenced the internal `Chart` JavaScript class rather than the published `Chart<TType, TData, TLabel>` TypeScript definition. This causes errors when outside code tries to call helper functions.
The two `Chart` interfaces are incompatible - the `width`, `height`, and `currentDevicePixelRatio` properties are declared as readonly in the TS declaration but are manipulated by helpers.dom.ts functions, and helpers.dom.ts functions need to be invoked both by internal Chart.js code (which uses the JS class) and by outside code (which uses the TS types). To address this, I'm importing the JS version as `PrivateChart`. There may be a better solution.
It's my understanding that the comment about "typedefs are auto-exported" is obsolete now that helpers.dom is a native TS file.
Fixes#11153
* First step in fixing the bug of spanGaps null point interaction
* Complete bugfix of spanGaps null point interaction
* Add two tests in core.interaction.tests for the bugfix change
* Remove odd line break
* Use isNullOrUndef helper for point value checks
* Add 10 more test cases for nearest interaction when spanGaps=true
* Bugfix: spanGaps not working near min and max limits
* Fix error when meta.dataset.options = null
* Add tests for correct setting of line controller properties _drawStart and _drawCount
* Fix spacing in controller line tests
* Add tension to test
* Add a better test case
* Avoid the use of FindLastIndex
* Avoid taking 0 for null value and improve naming
* exclude 0 angle from inRange to not showing tooltip when all data are hidden
Signed-off-by: Hu, Vince <Qingkun.Hu@fmr.com>
* test 0 angle point not in arc range
---------
Signed-off-by: Hu, Vince <Qingkun.Hu@fmr.com>
* do not attempt to clear canvas if one does not exist
* update test to explicitly run clearCanvas method to ensure it doesn't throw an error
* explicitly set canvas and ctx to null in test since the helper in test code didn't
* Update test/specs/helpers.canvas.tests.js
---------
Co-authored-by: Jacco van den Berg <jaccoberg2281@gmail.com>
* Fix for getLabelAndValue on null controller
I encountered #11315 under the following circumstances:
1. Position the cursor over the chart area, such that it causes a
tooltip to be shown.
2. Move the cursor out of the chart area, such that the tooltip remains
visible.
3. Cause the chart contents to be changed, such that the dataset
referenced by the active tooltip element is no longer valid.
4. Move the mouse again. This triggers an `inChartArea = false` event,
so it reuses the previous, now invalid, active elements.
This fixes#11315 under the circumstances for which I've reproduced it,
but there may be others.
* Further fixes for elements added / changed
This possibly fixes#11365.
* test: new test to reproduce issue #10951
* test: validate the canvas style too
* fix: Avoid reassigning the the chart size. For specific values of pixelRatio the assignment would cause the size to reduce by 1px. Since it's called from the ResizeObserver it will be stuck in a loop that constantly reduce the size of the chart and canvas.
* Revert "fix: Avoid reassigning the the chart size. For specific values of pixelRatio the assignment would cause the size to reduce by 1px. Since it's called from the ResizeObserver it will be stuck in a loop that constantly reduce the size of the chart and canvas."
This reverts commit ed7a34814dd01f57eabc2379fc7187b9a41c8732.
* fix: Avoid the resize loop by fixing the rounding error in the retinaScale function.
* fix: getMaximumSize was flooring non-integer height values unnecessarily.
* Revert "fix: Avoid the resize loop by fixing the rounding error in the retinaScale function."
This reverts commit 23525abc6aadc9880f841ff58dbd4a4ea0b14e88.
* fix: Avoid the resize loop by fixing the rounding error in the retinaScale function.