{"action":"opened","issue":{"url":"https://api.github.com/repos/d3/d3-zoom/issues/158","repository_url":"https://api.github.com/repos/d3/d3-zoom","labels_url":"https://api.github.com/repos/d3/d3-zoom/issues/158/labels{/name}","comments_url":"https://api.github.com/repos/d3/d3-zoom/issues/158/comments","events_url":"https://api.github.com/repos/d3/d3-zoom/issues/158/events","html_url":"https://github.com/d3/d3-zoom/issues/158","id":369620524,"node_id":"MDU6SXNzdWUzNjk2MjA1MjQ=","number":158,"title":"Emit zoom event 150 ms after last wheel event which had an effect","user":{"login":"Herst","id":1042176,"node_id":"MDQ6VXNlcjEwNDIxNzY=","avatar_url":"https://avatars2.githubusercontent.com/u/1042176?v=4","gravatar_id":"","url":"https://api.github.com/users/Herst","html_url":"https://github.com/Herst","followers_url":"https://api.github.com/users/Herst/followers","following_url":"https://api.github.com/users/Herst/following{/other_user}","gists_url":"https://api.github.com/users/Herst/gists{/gist_id}","starred_url":"https://api.github.com/users/Herst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Herst/subscriptions","organizations_url":"https://api.github.com/users/Herst/orgs","repos_url":"https://api.github.com/users/Herst/repos","events_url":"https://api.github.com/users/Herst/events{/privacy}","received_events_url":"https://api.github.com/users/Herst/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-10-12T16:21:59Z","updated_at":"2018-10-12T16:21:59Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"Currently a zoom `end` event is emitted 150 ms after the last wheel event. How about changing to 150 ms after the last `wheel` event which made a difference, so that `wheel` events which were ignored because the scale extent has been reached don't count towards the timeout?\r\n\r\nThis would be consistent with the current behaviour of the `start` event (because there is no start even if \"already at the corresponding limit of the scale extent.\")\r\n\r\nIn my specific use case I have non-linear scaling for certain elements in place in order to e.g. make important lines and symbols still visible at certain zoom levels (think of hinting in typography) but for this I do a costly redrawing of a lot of stuff which is why I only do it at the end of a zoom operation and during the zoom I am only relying on `transform=\"scale(...)\"`. Now with user which are wild with their scroll wheels (or equivalent) and continue scrolling even after the limit has been reached, you get the `end` event much later and so they see the results of the smart scaling later."}}
{"actor":{"display_login":"Herst"}}