/
githubmirror
/
tldraw
Обзор
Документация
Войти
/
githubmirror
/
tldraw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
packages/editor/src/lib/utils/normalizeWheel.ts
31 строка
1 KB
Guillaume Richard
fix(editor): guard possible non-finite delta values in the wheel events normalization (#9586)
07 авг 2026, 12:15
Не верифицирован
07 авг 2026, 12:15
bce4c97
Код
Авторство
О чём код?
import { tlenv } from '../globals/environment' const MAX_ZOOM_STEP = 10 /** * Normalizes a wheel event, so that the delta values are consistent across different browsers or devices. Adapted from https://stackoverflow.com/a/13650579. * @param event - The wheel event to normalize. * @returns The normalized wheel event. * @internal */ export function normalizeWheel(event: WheelEvent | React.WheelEvent<HTMLElement>) { let { deltaY, deltaX } = event // Coerce non-finite deltas to no movement so they can't propagate into the camera and // crash validation. Also covers deltaZ below, which is derived from deltaY. if (!Number.isFinite(deltaX)) deltaX = 0 if (!Number.isFinite(deltaY)) deltaY = 0 let deltaZ = 0 // wheeling if (event.ctrlKey || event.altKey || event.metaKey) { deltaZ = (Math.abs(deltaY) > MAX_ZOOM_STEP ? MAX_ZOOM_STEP * Math.sign(deltaY) : deltaY) / 100 } else { if (event.shiftKey && !tlenv.isDarwin && !tlenv.isIos) { deltaX = deltaY deltaY = 0 } } return { x: -deltaX, y: -deltaY, z: -deltaZ } }