UNPKG

@testing-library/user-event

Version:
93 lines (88 loc) 4.34 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); require('../setup/index.js'); require('../utils/click/isClickableInput.js'); require('../utils/dataTransfer/Clipboard.js'); require('../event/eventMap.js'); require('../event/behavior/click.js'); require('../event/behavior/cut.js'); require('../event/behavior/keydown.js'); require('../event/behavior/keypress.js'); require('../event/behavior/keyup.js'); require('../event/behavior/paste.js'); require('@testing-library/dom'); require('../utils/edit/maxLength.js'); require('../utils/edit/isEditable.js'); require('@testing-library/dom/dist/helpers.js'); require('../utils/keyDef/readNextDescriptor.js'); var level = require('../utils/misc/level.js'); var wait = require('../utils/misc/wait.js'); require('../options.js'); var parseKeyDef = require('./parseKeyDef.js'); var config = require('../setup/config.js'); async function pointer(input) { const { pointerMap } = this[config.Config]; const actions = []; (Array.isArray(input) ? input : [ input ]).forEach((actionInput)=>{ if (typeof actionInput === 'string') { actions.push(...parseKeyDef.parseKeyDef(pointerMap, actionInput)); } else if ('keys' in actionInput) { actions.push(...parseKeyDef.parseKeyDef(pointerMap, actionInput.keys).map((i)=>({ ...actionInput, ...i }))); } else { actions.push(actionInput); } }); for(let i = 0; i < actions.length; i++){ await wait.wait(this[config.Config]); await pointerAction(this[config.Config], actions[i]); } this[config.Config].system.pointer.resetClickCount(); } async function pointerAction(config, action) { var ref, ref1; const pointerName = 'pointerName' in action && action.pointerName ? action.pointerName : 'keyDef' in action ? config.system.pointer.getPointerName(action.keyDef) : 'mouse'; const previousPosition = config.system.pointer.getPreviousPosition(pointerName); var _target, _coords, _node, _offset; const position = { target: (_target = action.target) !== null && _target !== void 0 ? _target : getPrevTarget(config, previousPosition), coords: (_coords = action.coords) !== null && _coords !== void 0 ? _coords : previousPosition === null || previousPosition === void 0 ? void 0 : previousPosition.coords, caret: { node: (_node = action.node) !== null && _node !== void 0 ? _node : hasCaretPosition(action) ? undefined : previousPosition === null || previousPosition === void 0 ? void 0 : (ref = previousPosition.caret) === null || ref === void 0 ? void 0 : ref.node, offset: (_offset = action.offset) !== null && _offset !== void 0 ? _offset : hasCaretPosition(action) ? undefined : previousPosition === null || previousPosition === void 0 ? void 0 : (ref1 = previousPosition.caret) === null || ref1 === void 0 ? void 0 : ref1.offset } }; if ('keyDef' in action) { if (config.system.pointer.isKeyPressed(action.keyDef)) { level.setLevelRef(config, level.ApiLevel.Trigger); await config.system.pointer.release(config, action.keyDef, position); } if (!action.releasePrevious) { level.setLevelRef(config, level.ApiLevel.Trigger); await config.system.pointer.press(config, action.keyDef, position); if (action.releaseSelf) { level.setLevelRef(config, level.ApiLevel.Trigger); await config.system.pointer.release(config, action.keyDef, position); } } } else { level.setLevelRef(config, level.ApiLevel.Trigger); await config.system.pointer.move(config, pointerName, position); } } function hasCaretPosition(action) { var _target, ref; return !!((ref = (_target = action.target) !== null && _target !== void 0 ? _target : action.node) !== null && ref !== void 0 ? ref : action.offset !== undefined); } function getPrevTarget(config, position) { if (!position) { throw new Error('This pointer has no previous position. Provide a target property!'); } var _target; return (_target = position.target) !== null && _target !== void 0 ? _target : config.document.body; } exports.pointer = pointer;