| 9253 | 9253 | } |
| 9254 | 9254 | }); |
| 9255 | 9255 | const chatElementScroll = document.getElementById('chat'); |
| 9256 | 9256 | chatElementScroll.addEventListener('wheel',const chatScrollHandler = function () { |
| 9257 | + if (power_user.waifuMode) { |
| 9257 | 9258 | scrollLock = true; |
| 9258 | | - }, { passive: true }); |
| 9259 | + return; |
| 9259 | | - chatElementScroll.addEventListener('touchstart', function () { |
| 9260 | + } |
| 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) { |
| 9260 | 9271 | scrollLock = true; |
| 9261 | | - }, { passive: true }); |
| 9272 | + } |
| 9273 | + }; |
| 9274 | + chatElementScroll.addEventListener('wheel', chatScrollHandler, { passive: true }); |
| 9275 | + chatElementScroll.addEventListener('touchmove', chatScrollHandler, { passive: true }); |
| 9262 | 9276 | chatElementScroll.addEventListener('scroll', function () { |
| 9263 | 9277 | if (is_use_scroll_holder) { |
| 9264 | 9278 | this.scrollTop = scroll_holder; |