/**
*
* Get the width and height for an DOM-element based given selector.
*
* <example>
:getElementSize.js
client
.getElementSize('.header-logo-wordmark').then(function(size) {
console.log(size) // outputs: { width: 100, height: 200 }
})
.getElementSize('.header-logo-wordmark', 'width').then(function(width) {
console.log(width) // outputs: 100
})
.getElementSize('.header-logo-wordmark', 'height').then(function(height) {
console.log(height) // outputs: 200
});
* </example>
*
* @param {String} selector element with requested size
* @returns {Object} requested element size (`{width:number, height:number}`)
*
* @uses protocol/elements, protocol/elementIdSize
* @type property
*
*/
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
var _utilsErrorHandler = require('../utils/ErrorHandler');
var getElementSize = function getElementSize(selector, prop) {
return this.elements(selector).then(function (res) {
/**
* throw NoSuchElement error if no element was found
*/
if (!res.value || res.value.length === 0) {
throw new _utilsErrorHandler.CommandError(7);
}
var elementIdSizeCommands = [];
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = res.value[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var elem = _step.value;
elementIdSizeCommands.push(this.elementIdSize(elem.ELEMENT));
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator['return']) {
_iterator['return']();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return Promise.all(elementIdSizeCommands);
}).then(function (sizes) {
sizes = sizes.map(function (size) {
if (typeof prop === 'string' && prop.match(/(width|height)/)) {
return size.value[prop];
}
return {
width: size.value.width,
height: size.value.height
};
});
return sizes.length === 1 ? sizes[0] : sizes;
});
};
exports['default'] = getElementSize;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvZ2V0RWxlbWVudFNpemUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUNBMEI2Qix1QkFBdUI7O0FBRXBELElBQUksY0FBYyxHQUFHLFNBQWpCLGNBQWMsQ0FBYSxRQUFRLEVBQUUsSUFBSSxFQUFFO0FBQzNDLFdBQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUU7Ozs7QUFJL0MsWUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQ3RDLGtCQUFNLG9DQUFpQixDQUFDLENBQUMsQ0FBQTtTQUM1Qjs7QUFFRCxZQUFJLHFCQUFxQixHQUFHLEVBQUUsQ0FBQTs7Ozs7O0FBQzlCLGlDQUFpQixHQUFHLENBQUMsS0FBSyw4SEFBRTtvQkFBbkIsSUFBSTs7QUFDVCxxQ0FBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTthQUMvRDs7Ozs7Ozs7Ozs7Ozs7OztBQUVELGVBQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0tBQzVDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxLQUFLLEVBQUs7QUFDZixhQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFDLElBQUksRUFBSztBQUN4QixnQkFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO0FBQzFELHVCQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7YUFDMUI7O0FBRUQsbUJBQU87QUFDSCxxQkFBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztBQUN2QixzQkFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTthQUM1QixDQUFBO1NBQ0osQ0FBQyxDQUFBOztBQUVGLGVBQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQTtLQUMvQyxDQUFDLENBQUE7Q0FDTCxDQUFBOztxQkFFYyxjQUFjIiwiZmlsZSI6Ii9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvZ2V0RWxlbWVudFNpemUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqXG4gKiBHZXQgdGhlIHdpZHRoIGFuZCBoZWlnaHQgZm9yIGFuIERPTS1lbGVtZW50IGJhc2VkIGdpdmVuIHNlbGVjdG9yLlxuICpcbiAqIDxleGFtcGxlPlxuICAgIDpnZXRFbGVtZW50U2l6ZS5qc1xuICAgIGNsaWVudFxuICAgICAgICAuZ2V0RWxlbWVudFNpemUoJy5oZWFkZXItbG9nby13b3JkbWFyaycpLnRoZW4oZnVuY3Rpb24oc2l6ZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coc2l6ZSkgLy8gb3V0cHV0czogeyB3aWR0aDogMTAwLCBoZWlnaHQ6IDIwMCB9XG4gICAgICAgIH0pXG4gICAgICAgIC5nZXRFbGVtZW50U2l6ZSgnLmhlYWRlci1sb2dvLXdvcmRtYXJrJywgJ3dpZHRoJykudGhlbihmdW5jdGlvbih3aWR0aCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2cod2lkdGgpIC8vIG91dHB1dHM6IDEwMFxuICAgICAgICB9KVxuICAgICAgICAuZ2V0RWxlbWVudFNpemUoJy5oZWFkZXItbG9nby13b3JkbWFyaycsICdoZWlnaHQnKS50aGVuKGZ1bmN0aW9uKGhlaWdodCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coaGVpZ2h0KSAvLyBvdXRwdXRzOiAyMDBcbiAgICAgICAgfSk7XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogQHBhcmFtICAge1N0cmluZ30gc2VsZWN0b3IgZWxlbWVudCB3aXRoIHJlcXVlc3RlZCBzaXplXG4gKiBAcmV0dXJucyB7T2JqZWN0fSAgICAgICAgICByZXF1ZXN0ZWQgZWxlbWVudCBzaXplIChge3dpZHRoOm51bWJlciwgaGVpZ2h0Om51bWJlcn1gKVxuICpcbiAqIEB1c2VzIHByb3RvY29sL2VsZW1lbnRzLCBwcm90b2NvbC9lbGVtZW50SWRTaXplXG4gKiBAdHlwZSBwcm9wZXJ0eVxuICpcbiAqL1xuXG5pbXBvcnQgeyBDb21tYW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9FcnJvckhhbmRsZXInXG5cbmxldCBnZXRFbGVtZW50U2l6ZSA9IGZ1bmN0aW9uIChzZWxlY3RvciwgcHJvcCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRzKHNlbGVjdG9yKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRocm93IE5vU3VjaEVsZW1lbnQgZXJyb3IgaWYgbm8gZWxlbWVudCB3YXMgZm91bmRcbiAgICAgICAgICovXG4gICAgICAgIGlmICghcmVzLnZhbHVlIHx8IHJlcy52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tYW5kRXJyb3IoNylcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBlbGVtZW50SWRTaXplQ29tbWFuZHMgPSBbXVxuICAgICAgICBmb3IgKGxldCBlbGVtIG9mIHJlcy52YWx1ZSkge1xuICAgICAgICAgICAgZWxlbWVudElkU2l6ZUNvbW1hbmRzLnB1c2godGhpcy5lbGVtZW50SWRTaXplKGVsZW0uRUxFTUVOVCkpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoZWxlbWVudElkU2l6ZUNvbW1hbmRzKVxuICAgIH0pLnRoZW4oKHNpemVzKSA9PiB7XG4gICAgICAgIHNpemVzID0gc2l6ZXMubWFwKChzaXplKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnICYmIHByb3AubWF0Y2goLyh3aWR0aHxoZWlnaHQpLykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZS52YWx1ZVtwcm9wXVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBzaXplLnZhbHVlLndpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogc2l6ZS52YWx1ZS5oZWlnaHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gc2l6ZXMubGVuZ3RoID09PSAxID8gc2l6ZXNbMF0gOiBzaXplc1xuICAgIH0pXG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldEVsZW1lbnRTaXplXG4iXX0= |