index.js 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. 'use strict';
  2. require('../utils/dataTransfer/Clipboard.js');
  3. var level = require('../utils/misc/level.js');
  4. var wait = require('../utils/misc/wait.js');
  5. var parseKeyDef = require('./parseKeyDef.js');
  6. async function pointer(input) {
  7. const { pointerMap } = this.config;
  8. const actions = [];
  9. (Array.isArray(input) ? input : [
  10. input
  11. ]).forEach((actionInput)=>{
  12. if (typeof actionInput === 'string') {
  13. actions.push(...parseKeyDef.parseKeyDef(pointerMap, actionInput));
  14. } else if ('keys' in actionInput) {
  15. actions.push(...parseKeyDef.parseKeyDef(pointerMap, actionInput.keys).map((i)=>({
  16. ...actionInput,
  17. ...i
  18. })));
  19. } else {
  20. actions.push(actionInput);
  21. }
  22. });
  23. for(let i = 0; i < actions.length; i++){
  24. await wait.wait(this.config);
  25. await pointerAction(this, actions[i]);
  26. }
  27. this.system.pointer.resetClickCount();
  28. }
  29. async function pointerAction(instance, action) {
  30. var _previousPosition_caret, _previousPosition_caret1;
  31. const pointerName = 'pointerName' in action && action.pointerName ? action.pointerName : 'keyDef' in action ? instance.system.pointer.getPointerName(action.keyDef) : 'mouse';
  32. const previousPosition = instance.system.pointer.getPreviousPosition(pointerName);
  33. var _action_target, _action_coords, _action_node, _action_offset;
  34. const position = {
  35. target: (_action_target = action.target) !== null && _action_target !== undefined ? _action_target : getPrevTarget(instance, previousPosition),
  36. coords: (_action_coords = action.coords) !== null && _action_coords !== undefined ? _action_coords : previousPosition === null || previousPosition === undefined ? undefined : previousPosition.coords,
  37. caret: {
  38. node: (_action_node = action.node) !== null && _action_node !== undefined ? _action_node : hasCaretPosition(action) ? undefined : previousPosition === null || previousPosition === undefined ? undefined : (_previousPosition_caret = previousPosition.caret) === null || _previousPosition_caret === undefined ? undefined : _previousPosition_caret.node,
  39. offset: (_action_offset = action.offset) !== null && _action_offset !== undefined ? _action_offset : hasCaretPosition(action) ? undefined : previousPosition === null || previousPosition === undefined ? undefined : (_previousPosition_caret1 = previousPosition.caret) === null || _previousPosition_caret1 === undefined ? undefined : _previousPosition_caret1.offset
  40. }
  41. };
  42. if ('keyDef' in action) {
  43. if (instance.system.pointer.isKeyPressed(action.keyDef)) {
  44. level.setLevelRef(instance, level.ApiLevel.Trigger);
  45. await instance.system.pointer.release(instance, action.keyDef, position);
  46. }
  47. if (!action.releasePrevious) {
  48. level.setLevelRef(instance, level.ApiLevel.Trigger);
  49. await instance.system.pointer.press(instance, action.keyDef, position);
  50. if (action.releaseSelf) {
  51. level.setLevelRef(instance, level.ApiLevel.Trigger);
  52. await instance.system.pointer.release(instance, action.keyDef, position);
  53. }
  54. }
  55. } else {
  56. level.setLevelRef(instance, level.ApiLevel.Trigger);
  57. await instance.system.pointer.move(instance, pointerName, position);
  58. }
  59. }
  60. function hasCaretPosition(action) {
  61. var _action_target, _ref;
  62. return !!((_ref = (_action_target = action.target) !== null && _action_target !== undefined ? _action_target : action.node) !== null && _ref !== undefined ? _ref : action.offset !== undefined);
  63. }
  64. function getPrevTarget(instance, position) {
  65. if (!position) {
  66. throw new Error('This pointer has no previous position. Provide a target property!');
  67. }
  68. var _position_target;
  69. return (_position_target = position.target) !== null && _position_target !== undefined ? _position_target : instance.config.document.body;
  70. }
  71. exports.pointer = pointer;