UNPKG

@mui/x-internal-gestures

Version:

The core engine of GestureEvents, a modern and robust multi-pointer gesture detection library for JavaScript.

63 lines (60 loc) 1.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.turnWheel = void 0; /** * Implementation of the turnWheel gesture for testing. * * @param options - The options for the turnWheel gesture. * @param advanceTimers - Optional function to advance timers in tests. * @returns A promise that resolves when the turnWheel gesture is completed. */ const turnWheel = async (pointerManager, options, advanceTimers) => { const { target, pointer, delay = 50, deltaX = 0, deltaY = 100, deltaZ = 0, deltaMode = 0, turns = 1 } = options; if (!target) { throw new Error('Target element is required for turnWheel gesture'); } const parsedPointer = pointerManager.parseMousePointer(pointer, target); // Create the WheelEvent const createWheelEvent = () => { return new WheelEvent('wheel', { bubbles: true, cancelable: true, view: window, clientX: parsedPointer.x, clientY: parsedPointer.y, deltaX, deltaY, deltaZ, deltaMode }); }; // Dispatch wheel events for (let i = 0; i < turns; i += 1) { const wheelEvent = createWheelEvent(); parsedPointer.target.dispatchEvent(wheelEvent); if (i < turns - 1) { // Wait for the specified delay between turns, except for the last one if (advanceTimers) { // eslint-disable-next-line no-await-in-loop await advanceTimers(delay); } else { // eslint-disable-next-line no-await-in-loop await new Promise(resolve => { setTimeout(resolve, delay); }); } } } }; exports.turnWheel = turnWheel;