-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Add dummy 'wheel' event handler to enable scroll zoom on safari #7474
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
68f04da
to
06c3e7f
Compare
8370097
to
e6618c6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the update.
Please add a draft log.
💃
if(typeof plotObj.addEventListener === 'function') { | ||
plotObj.addEventListener("wheel", () => {}); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is the if
block necessary? Can plotObj
be undefined?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@camdecoster There's several tests which pass an empty object ({}
) as plotObj
, which was leading to an error causing the test to fail.
I'm not sure if plotObj
is supposed to be a DOM object or if other types are allowed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like in the actual code (tests aside), Events.init()
is only called in one place, and the argument is the output of getGraphDiv()
, which cannot be null
or undefined
but it could theoretically be some other type besides a DOM element.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if we should modify the tests rather than adding this if
statement.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe just use the optional chaining operator? I think that would essentially do the same thing as the if
block, but is more compact and you wouldn't have to update any tests.
plotObj?.addEventListener("wheel", () => {});
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice, TIL.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@camdecoster I've reverted to the if
statement due to the conditional chaining operator not being supported in our build pipeline (see #7477) -- are you OK with me merging as it is currently?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, this code will work fine.
src/lib/events.js
Outdated
* https://github.com/d3/d3/issues/3035 | ||
* https://github.com/plotly/plotly.js/issues/7452 | ||
*/ | ||
plotObj.addEventListener?.("wheel", () => {}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The operator should come after plotObj
in case that value is null/undefined. Where it is now, it could fail if plotObj
isn't defined.
plotObj.addEventListener?.("wheel", () => {}); | |
plotObj?.addEventListener("wheel", () => {}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@camdecoster Yes, but the specific case causing the test failures was that plotObj
was defined but plotObj.addEventListener
was undefined.
I guess we could do plotObj?.addEventListener?.("wheel", () => {});
to cover both.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, I misunderstood what you were saying before. In this case, plotObj
equals {}
. Then it's fine to leave it as you had it. No need to add unnecessary checks. It can always be addressed later if it becomes a problem.
876c90a
to
b142a3d
Compare
Co-authored-by: Mojtaba Samimi <[email protected]>
package.json
Outdated
}, | ||
"overrides": { | ||
"falafel": { | ||
"acorn": "^8.1.1" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't feel comfortable introducing overriding dependencies like that in this PR, specially if we want to release a patch.
IMHO This should be discussed in a separate PR.
I suggest we use bring back the if statement.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK. I'll put back the if
statement for now and open a separate PR for discussing upgrading acorn
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@archmoj @camdecoster I have opened #7478 regarding the acorn
override
Thank you @emilykl |
Closes #7452