| ... | ... | @@ -260,26 +260,18 @@ export default function DiffPanel({ mode = "inline" }: DiffPanelProps) { |
| 260 | 260 | updateTurnStripScrollState(); |
| 261 | 261 | const onScroll = () => updateTurnStripScrollState(); |
| 262 | 262 | |
| 263 | | const onWheel = (event: WheelEvent) => { |
| 264 | | if (!element) return; |
| 265 | | if (element.scrollWidth <= element.clientWidth + 1) return; |
| 266 | | if (Math.abs(event.deltaY) <= Math.abs(event.deltaX)) return; |
| 267 | | event.preventDefault(); |
| 268 | | element.scrollBy({ left: event.deltaY, behavior: "auto" }); |
| 269 | | }; |
| 270 | | |
| 271 | 263 | element.addEventListener("scroll", onScroll, { passive: true }); |
| 272 | | element.addEventListener("wheel", onWheel, { passive: false }); |
| 264 | element.addEventListener("wheel", onTurnStripWheel, { passive: false }); |
| 273 | 265 | |
| 274 | 266 | const resizeObserver = new ResizeObserver(() => updateTurnStripScrollState()); |
| 275 | 267 | resizeObserver.observe(element); |
| 276 | 268 | |
| 277 | 269 | return () => { |
| 278 | 270 | element.removeEventListener("scroll", onScroll); |
| 279 | | element.removeEventListener("wheel", onWheel); |
| 271 | element.removeEventListener("wheel", onTurnStripWheel); |
| 280 | 272 | resizeObserver.disconnect(); |
| 281 | 273 | }; |
| 282 | | }, [updateTurnStripScrollState]); |
| 274 | }, [updateTurnStripScrollState, onTurnStripWheel]); |
| 283 | 275 | |
| 284 | 276 | useEffect(() => { |
| 285 | 277 | updateTurnStripScrollState(); |