paste.js 1.1 KB

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