paste.js 1.1 KB

12345678910111213141516171819202122232425
  1. 'use strict';
  2. var DataTransfer = require('../utils/dataTransfer/DataTransfer.js');
  3. var Clipboard = require('../utils/dataTransfer/Clipboard.js');
  4. var getWindow = require('../utils/misc/getWindow.js');
  5. async function paste(clipboardData) {
  6. const doc = this.config.document;
  7. var _doc_activeElement;
  8. const target = (_doc_activeElement = doc.activeElement) !== null && _doc_activeElement !== undefined ? _doc_activeElement : /* istanbul ignore next */ doc.body;
  9. var _ref;
  10. const dataTransfer = (_ref = typeof clipboardData === 'string' ? getClipboardDataFromString(doc, clipboardData) : clipboardData) !== null && _ref !== undefined ? _ref : await Clipboard.readDataTransferFromClipboard(doc).catch(()=>{
  11. throw new Error('`userEvent.paste()` without `clipboardData` requires the `ClipboardAPI` to be available.');
  12. });
  13. this.dispatchUIEvent(target, 'paste', {
  14. clipboardData: dataTransfer
  15. });
  16. }
  17. function getClipboardDataFromString(doc, text) {
  18. const dt = DataTransfer.createDataTransfer(getWindow.getWindow(doc));
  19. dt.setData('text', text);
  20. return dt;
  21. }
  22. exports.paste = paste;