/**
*
* Send a sequence of key strokes to the active element. This command is similar to the
* send keys command in every aspect except the implicit termination: The modifiers are
* *not* released at the end of the call. Rather, the state of the modifier keys is kept
* between calls, so mouse interactions can be performed while modifier keys are depressed.
*
* You can also use unicode characters like Left arrow or Back space. WebdriverIO will take
* care of translating them into unicode characters. You’ll find all supported characters
* [here](https://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId/element/:id/value).
* To do that, the value has to correspond to a key from the table.
*
* @param {String|String[]} value The sequence of keys to type. An array must be provided. The server should flatten the array items to a single string to be typed.
*
* @see https://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId/keys
* @type protocol
*
*/
'use strict';
var _helpersConstants = require('../helpers/constants');
var _utilsErrorHandler = require('../utils/ErrorHandler');
module.exports = function keys(value) {
var key = [];
/**
* replace key with corresponding unicode character
*/
if (typeof value === 'string') {
key = checkUnicode(value);
} else if (value instanceof Array) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = value[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var charSet = _step.value;
key = key.concat(checkUnicode(charSet));
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator['return']) {
_iterator['return']();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
} else {
throw new _utilsErrorHandler.ProtocolError('number or type of arguments don\'t agree with keys protocol command');
}
return this.requestHandler.create('/session/:sessionId/keys', {
'value': key
});
};
/*!
* check for unicode character or split string into literals
* @param {String} value text
* @return {Array} set of characters or unicode symbols
*/
function checkUnicode(value) {
return _helpersConstants.UNICODE_CHARACTERS.hasOwnProperty(value) ? [_helpersConstants.UNICODE_CHARACTERS[value]] : value.split('');
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvcHJvdG9jb2wva2V5cy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0NBbUJtQyxzQkFBc0I7O2lDQUMzQix1QkFBdUI7O0FBRXJELE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxJQUFJLENBQUUsS0FBSyxFQUFFO0FBQ25DLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQTs7Ozs7QUFLWixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUMzQixXQUFHLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO0tBQzVCLE1BQU0sSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFOzs7Ozs7QUFDL0IsaUNBQW9CLEtBQUssOEhBQUU7b0JBQWxCLE9BQU87O0FBQ1osbUJBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO2FBQzFDOzs7Ozs7Ozs7Ozs7Ozs7S0FDSixNQUFNO0FBQ0gsY0FBTSxxQ0FBa0IscUVBQXFFLENBQUMsQ0FBQTtLQUNqRzs7QUFFRCxXQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLDBCQUEwQixFQUFFO0FBQzFELGVBQU8sRUFBRSxHQUFHO0tBQ2YsQ0FBQyxDQUFBO0NBQ0wsQ0FBQTs7Ozs7OztBQU9ELFNBQVMsWUFBWSxDQUFFLEtBQUssRUFBRTtBQUMxQixXQUFPLHFDQUFtQixjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxxQ0FBbUIsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0NBQ2xHIiwiZmlsZSI6Ii9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvcHJvdG9jb2wva2V5cy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIFNlbmQgYSBzZXF1ZW5jZSBvZiBrZXkgc3Ryb2tlcyB0byB0aGUgYWN0aXZlIGVsZW1lbnQuIFRoaXMgY29tbWFuZCBpcyBzaW1pbGFyIHRvIHRoZVxuICogc2VuZCBrZXlzIGNvbW1hbmQgaW4gZXZlcnkgYXNwZWN0IGV4Y2VwdCB0aGUgaW1wbGljaXQgdGVybWluYXRpb246IFRoZSBtb2RpZmllcnMgYXJlXG4gKiAqbm90KiByZWxlYXNlZCBhdCB0aGUgZW5kIG9mIHRoZSBjYWxsLiBSYXRoZXIsIHRoZSBzdGF0ZSBvZiB0aGUgbW9kaWZpZXIga2V5cyBpcyBrZXB0XG4gKiBiZXR3ZWVuIGNhbGxzLCBzbyBtb3VzZSBpbnRlcmFjdGlvbnMgY2FuIGJlIHBlcmZvcm1lZCB3aGlsZSBtb2RpZmllciBrZXlzIGFyZSBkZXByZXNzZWQuXG4gKlxuICogWW91IGNhbiBhbHNvIHVzZSB1bmljb2RlIGNoYXJhY3RlcnMgbGlrZSBMZWZ0IGFycm93IG9yIEJhY2sgc3BhY2UuIFdlYmRyaXZlcklPIHdpbGwgdGFrZVxuICogY2FyZSBvZiB0cmFuc2xhdGluZyB0aGVtIGludG8gdW5pY29kZSBjaGFyYWN0ZXJzLiBZb3XigJlsbCBmaW5kIGFsbCBzdXBwb3J0ZWQgY2hhcmFjdGVyc1xuICogW2hlcmVdKGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3Avc2VsZW5pdW0vd2lraS9Kc29uV2lyZVByb3RvY29sIy9zZXNzaW9uLzpzZXNzaW9uSWQvZWxlbWVudC86aWQvdmFsdWUpLlxuICogVG8gZG8gdGhhdCwgdGhlIHZhbHVlIGhhcyB0byBjb3JyZXNwb25kIHRvIGEga2V5IGZyb20gdGhlIHRhYmxlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfFN0cmluZ1tdfSB2YWx1ZSAgVGhlIHNlcXVlbmNlIG9mIGtleXMgdG8gdHlwZS4gQW4gYXJyYXkgbXVzdCBiZSBwcm92aWRlZC4gVGhlIHNlcnZlciBzaG91bGQgZmxhdHRlbiB0aGUgYXJyYXkgaXRlbXMgdG8gYSBzaW5nbGUgc3RyaW5nIHRvIGJlIHR5cGVkLlxuICpcbiAqIEBzZWUgIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3Avc2VsZW5pdW0vd2lraS9Kc29uV2lyZVByb3RvY29sIy9zZXNzaW9uLzpzZXNzaW9uSWQva2V5c1xuICogQHR5cGUgcHJvdG9jb2xcbiAqXG4gKi9cblxuaW1wb3J0IHsgVU5JQ09ERV9DSEFSQUNURVJTIH0gZnJvbSAnLi4vaGVscGVycy9jb25zdGFudHMnXG5pbXBvcnQgeyBQcm90b2NvbEVycm9yIH0gZnJvbSAnLi4vdXRpbHMvRXJyb3JIYW5kbGVyJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGtleXMgKHZhbHVlKSB7XG4gICAgbGV0IGtleSA9IFtdXG5cbiAgICAvKipcbiAgICAgKiByZXBsYWNlIGtleSB3aXRoIGNvcnJlc3BvbmRpbmcgdW5pY29kZSBjaGFyYWN0ZXJcbiAgICAgKi9cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBrZXkgPSBjaGVja1VuaWNvZGUodmFsdWUpXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGZvciAobGV0IGNoYXJTZXQgb2YgdmFsdWUpIHtcbiAgICAgICAgICAgIGtleSA9IGtleS5jb25jYXQoY2hlY2tVbmljb2RlKGNoYXJTZXQpKVxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFByb3RvY29sRXJyb3IoJ251bWJlciBvciB0eXBlIG9mIGFyZ3VtZW50cyBkb25cXCd0IGFncmVlIHdpdGgga2V5cyBwcm90b2NvbCBjb21tYW5kJylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0SGFuZGxlci5jcmVhdGUoJy9zZXNzaW9uLzpzZXNzaW9uSWQva2V5cycsIHtcbiAgICAgICAgJ3ZhbHVlJzoga2V5XG4gICAgfSlcbn1cblxuLyohXG4gKiBjaGVjayBmb3IgdW5pY29kZSBjaGFyYWN0ZXIgb3Igc3BsaXQgc3RyaW5nIGludG8gbGl0ZXJhbHNcbiAqIEBwYXJhbSAge1N0cmluZ30gdmFsdWUgIHRleHRcbiAqIEByZXR1cm4ge0FycmF5fSAgICAgICAgIHNldCBvZiBjaGFyYWN0ZXJzIG9yIHVuaWNvZGUgc3ltYm9sc1xuICovXG5mdW5jdGlvbiBjaGVja1VuaWNvZGUgKHZhbHVlKSB7XG4gICAgcmV0dXJuIFVOSUNPREVfQ0hBUkFDVEVSUy5oYXNPd25Qcm9wZXJ0eSh2YWx1ZSkgPyBbVU5JQ09ERV9DSEFSQUNURVJTW3ZhbHVlXV0gOiB2YWx1ZS5zcGxpdCgnJylcbn1cbiJdfQ== |