From b68153819b2b784cadc21e8af09ecf4901cb3423 Mon Sep 17 00:00:00 2001 From: David Evans Date: Thu, 9 Nov 2023 14:55:34 +0000 Subject: [PATCH 1/3] Do not break if mouse moves to x=0 when using rangeslider --- src/components/rangeslider/draw.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/components/rangeslider/draw.js b/src/components/rangeslider/draw.js index 1bae4a3bbe3..2e80427d60b 100644 --- a/src/components/rangeslider/draw.js +++ b/src/components/rangeslider/draw.js @@ -224,6 +224,16 @@ module.exports = function(gd) { }); }; +function eventX(event) { + if (typeof event.clientX === 'number') { + return event.clientX; + } + if (event.touches && event.touches.length > 0) { + return event.touches[0].clientX; + } + return 0; +} + function setupDragElement(rangeSlider, gd, axisOpts, opts) { if(gd._context.staticPlot) return; @@ -234,7 +244,7 @@ function setupDragElement(rangeSlider, gd, axisOpts, opts) { function mouseDownHandler() { var event = d3.event; var target = event.target; - var startX = event.clientX || event.touches[0].clientX; + var startX = eventX(event); var offsetX = startX - rangeSlider.node().getBoundingClientRect().left; var minVal = opts.d2p(axisOpts._rl[0]); var maxVal = opts.d2p(axisOpts._rl[1]); @@ -247,7 +257,7 @@ function setupDragElement(rangeSlider, gd, axisOpts, opts) { dragCover.addEventListener('mouseup', mouseUp); function mouseMove(e) { - var clientX = e.clientX || e.touches[0].clientX; + var clientX = eventX(e); var delta = +clientX - startX; var pixelMin, pixelMax, cursor; From f8fe63cc3c7045d8396ca831abeb0b2165efac4c Mon Sep 17 00:00:00 2001 From: David Evans Date: Thu, 9 Nov 2023 15:00:24 +0000 Subject: [PATCH 2/3] Add changelog --- draftlogs/6780_fix.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/6780_fix.md diff --git a/draftlogs/6780_fix.md b/draftlogs/6780_fix.md new file mode 100644 index 00000000000..e1a176c2a89 --- /dev/null +++ b/draftlogs/6780_fix.md @@ -0,0 +1 @@ +- Fix `Cannot read properties of undefined (reading '0')` when the mouse moves to x=0 while dragging a rangeslider [[#6780](https://github.com/plotly/plotly.js/pull/6780)] From 769158d5f22aafce9e1ad0b2c050640e8c9f08eb Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi <33888540+archmoj@users.noreply.github.com> Date: Fri, 10 Nov 2023 13:14:58 -0500 Subject: [PATCH 3/3] Apply suggestions from code review --- draftlogs/6780_fix.md | 2 +- src/components/rangeslider/draw.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/draftlogs/6780_fix.md b/draftlogs/6780_fix.md index e1a176c2a89..51b8d3b8f7c 100644 --- a/draftlogs/6780_fix.md +++ b/draftlogs/6780_fix.md @@ -1 +1 @@ -- Fix `Cannot read properties of undefined (reading '0')` when the mouse moves to x=0 while dragging a rangeslider [[#6780](https://github.com/plotly/plotly.js/pull/6780)] +- Fix `Cannot read properties of undefined (reading '0')` when the mouse moves to x=0 while dragging a rangeslider [[#6780](https://github.com/plotly/plotly.js/pull/6780)], with thanks to @david-bezero for the contribution! diff --git a/src/components/rangeslider/draw.js b/src/components/rangeslider/draw.js index 2e80427d60b..3f9049070e8 100644 --- a/src/components/rangeslider/draw.js +++ b/src/components/rangeslider/draw.js @@ -225,10 +225,10 @@ module.exports = function(gd) { }; function eventX(event) { - if (typeof event.clientX === 'number') { + if(typeof event.clientX === 'number') { return event.clientX; } - if (event.touches && event.touches.length > 0) { + if(event.touches && event.touches.length > 0) { return event.touches[0].clientX; } return 0;