| 9253 | } | 9253 | } |
| 9254 | }); | 9254 | }); |
| 9255 | const chatElementScroll = document.getElementById('chat'); | 9255 | const chatElementScroll = document.getElementById('chat'); |
| 9256 | chatElementScroll.addEventListener('wheel', function () { | 9256 | const chatScrollHandler = function () { |
| 9257 | scrollLock = true; | 9257 | if (power_user.waifuMode) { |
| 9258 | }, { passive: true }); | 9258 | scrollLock = true; |
| 9259 | chatElementScroll.addEventListener('touchstart', function () { | 9259 | return; |
| 9260 | scrollLock = true; | 9260 | } |
| 9261 | }, { passive: true }); | 9261 | |
| | 9262 | const scrollIsAtBottom = Math.abs(chatElementScroll.scrollHeight - chatElementScroll.clientHeight - chatElementScroll.scrollTop) < 1; |
| | 9263 | |
| | 9264 | // Resume autoscroll if the user scrolls to the bottom |
| | 9265 | if (scrollLock && scrollIsAtBottom) { |
| | 9266 | scrollLock = false; |
| | 9267 | } |
| | 9268 | |
| | 9269 | // Cancel autoscroll if the user scrolls up |
| | 9270 | if (!scrollLock && !scrollIsAtBottom) { |
| | 9271 | scrollLock = true; |
| | 9272 | } |
| | 9273 | }; |
| | 9274 | chatElementScroll.addEventListener('wheel', chatScrollHandler, { passive: true }); |
| | 9275 | chatElementScroll.addEventListener('touchmove', chatScrollHandler, { passive: true }); |
| 9262 | chatElementScroll.addEventListener('scroll', function () { | 9276 | chatElementScroll.addEventListener('scroll', function () { |
| 9263 | if (is_use_scroll_holder) { | 9277 | if (is_use_scroll_holder) { |
| 9264 | this.scrollTop = scroll_holder; | 9278 | this.scrollTop = scroll_holder; |