@testing-library/user-event
Version:
Fire events the same way the user does
40 lines (37 loc) • 1.67 kB
JavaScript
import '../setup/index.js';
import '../utils/click/isClickableInput.js';
import { createDataTransfer } from '../utils/dataTransfer/DataTransfer.js';
import { readDataTransferFromClipboard } from '../utils/dataTransfer/Clipboard.js';
import '../event/eventMap.js';
import '../event/behavior/click.js';
import '../event/behavior/cut.js';
import '../event/behavior/keydown.js';
import '../event/behavior/keypress.js';
import '../event/behavior/keyup.js';
import '../event/behavior/paste.js';
import '@testing-library/dom';
import '../utils/edit/maxLength.js';
import '../utils/edit/isEditable.js';
import { getWindow } from '../utils/misc/getWindow.js';
import '../utils/keyDef/readNextDescriptor.js';
import '../utils/misc/level.js';
import '../options.js';
import { Config } from '../setup/config.js';
async function paste(clipboardData) {
const doc = this[Config].document;
var _activeElement;
const target = (_activeElement = doc.activeElement) !== null && _activeElement !== void 0 ? _activeElement : /* istanbul ignore next */ doc.body;
var ref;
const dataTransfer = (ref = typeof clipboardData === 'string' ? getClipboardDataFromString(doc, clipboardData) : clipboardData) !== null && ref !== void 0 ? ref : await readDataTransferFromClipboard(doc).catch(()=>{
throw new Error('`userEvent.paste()` without `clipboardData` requires the `ClipboardAPI` to be available.');
});
this.dispatchUIEvent(target, 'paste', {
clipboardData: dataTransfer
});
}
function getClipboardDataFromString(doc, text) {
const dt = createDataTransfer(getWindow(doc));
dt.setData('text', text);
return dt;
}
export { paste };