emulate-key-in-browser
Version:
emulate browsers reactions on special keys
47 lines (46 loc) • 2.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.emulateDelete = exports.emulateBackspace = void 0;
var emulate_key_events_1 = require("./emulate-key-events");
var text_input_element_type_1 = require("./text-input-element.type");
function emulateBackspace() {
return emulate_key_events_1.emulateKeyEvents('Backspace', function (target) {
var value = target.value || '';
var valueLength = value.length;
if (valueLength > 0) {
var selectionStart = text_input_element_type_1.findSelectionStart(target, valueLength);
var selectionEnd = text_input_element_type_1.findSelectionEnd(target, valueLength);
if (selectionStart !== selectionEnd) {
target.value = value.substr(0, selectionStart) + value.substr(selectionEnd);
target.setSelectionRange(selectionStart, selectionStart, 'none');
}
else if (selectionStart > 0) {
var newSelectionStart = selectionStart - 1;
target.value = value.substr(0, newSelectionStart) + value.substr(selectionEnd);
target.setSelectionRange(newSelectionStart, newSelectionStart, 'none');
}
}
return target.dispatchEvent(new InputEvent('input'));
});
}
exports.emulateBackspace = emulateBackspace;
function emulateDelete() {
return emulate_key_events_1.emulateKeyEvents('Delete', function (target) {
var value = target.value || '';
var valueLength = value.length;
if (valueLength > 0) {
var selectionStart = text_input_element_type_1.findSelectionStart(target, valueLength);
var selectionEnd = text_input_element_type_1.findSelectionEnd(target, valueLength);
if (selectionStart !== selectionEnd) {
target.value = value.substr(0, selectionStart) + value.substr(selectionEnd);
target.setSelectionRange(selectionStart, selectionStart, 'none');
}
else if (selectionEnd < valueLength) {
target.value = value.substr(0, selectionEnd) + value.substr(selectionEnd + 1);
target.setSelectionRange(selectionEnd, selectionEnd, 'none');
}
}
return target.dispatchEvent(new InputEvent('input'));
});
}
exports.emulateDelete = emulateDelete;