all files / DEV/lib/commands/ scroll.js

82.14% Statements 23/28
58.33% Branches 14/24
20% Functions 1/5
28.57% Lines 2/7
15 statements, 11 branches Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86                                                                                                                                                                         
/**
 *
 * Scroll to a specific element. You can also append/pass two offset values as parameter
 * to scroll to a specific position.
 *
 * <example>
    :scroll.js
    client
        // scroll to specific element
        .scroll('#myElement')
 
        // scroll to specific element with offset
        // scroll offset will be added to elements position
        .scroll('#myElement', 100, 100)
 
        // scroll to specific x and y position
        .scroll(0, 250)
        .end();
 * </example>
 *
 * @param {String=}  selector  element to scroll to
 * @param {Number}   xoffset   x offset to scroll to
 * @param {Number}   yoffset   y offset to scroll to
 *
 * @uses protocol/element, protocol/elementIdLocation, protocol/touchScroll, protocol/execute
 * @type utility
 *
 */
 
'use strict';
 
Object.defineProperty(exports, '__esModule', {
    value: true
});
// istanbul ignore next

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 
var _scriptsScroll = require('../scripts/scroll');
 
var _scriptsScroll2 = _interopRequireDefault(_scriptsScroll);
 
var scroll = function scroll(selector) {
    // istanbul ignore next
 
    var _this = this;
 
    var xoffset = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];
    var yoffset = arguments.length <= 2 || arguments[2] === undefined ? 0 : arguments[2];
 
    if (typeof selector === 'number' && typeof xoffset === 'number') {
        yoffset = xoffset;
        xoffset = selector;
        selector = null;
    }

    if (this.isMobile) {
        var queue = Promise.resolve();
 
        if (selector) {
            queue = this.element(selector);
        }
 
        return queue.then(function (res) {
            if (typeof res !== 'undefined') {
                selector = res.value.ELEMENT;
            }
 
            return _this.touchScroll(selector, xoffset, yoffset);
        });
    }
 
    if (selector) {
        return this.element(selector).then(function (res) {
            return _this.elementIdLocation(res.value.ELEMENT);
        }).then(function (location) {
            return _this.execute(_scriptsScroll2['default'], location.value.x + xoffset, location.value.y + yoffset);
        });
    }
 
    return this.execute(_scriptsScroll2['default'], xoffset, yoffset);
};
 
exports['default'] = scroll;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvc2Nyb2xsLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCQTZCeUIsbUJBQW1COzs7O0FBRTVDLElBQUksTUFBTSxHQUFHLFNBQVQsTUFBTSxDQUFhLFFBQVEsRUFBNEI7Ozs7O1FBQTFCLE9BQU8seURBQUcsQ0FBQztRQUFFLE9BQU8seURBQUcsQ0FBQzs7QUFDckQsUUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzdELGVBQU8sR0FBRyxPQUFPLENBQUE7QUFDakIsZUFBTyxHQUFHLFFBQVEsQ0FBQTtBQUNsQixnQkFBUSxHQUFHLElBQUksQ0FBQTtLQUNsQjs7QUFFRCxRQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDZixZQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7O0FBRTdCLFlBQUksUUFBUSxFQUFFO0FBQ1YsaUJBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBQ2pDOztBQUVELGVBQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFDLEdBQUcsRUFBSztBQUN2QixnQkFBSSxPQUFPLEdBQUcsS0FBSyxXQUFXLEVBQUU7QUFDNUIsd0JBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQTthQUMvQjs7QUFFRCxtQkFBTyxNQUFLLFdBQVcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1NBQ3RELENBQUMsQ0FBQTtLQUNMOztBQUVELFFBQUksUUFBUSxFQUFFO0FBQ1YsZUFBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLEdBQUc7bUJBQ25DLE1BQUssaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FBQSxDQUM1QyxDQUFDLElBQUksQ0FBQyxVQUFDLFFBQVE7bUJBQ1osTUFBSyxPQUFPLDZCQUFlLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7U0FBQSxDQUNyRixDQUFBO0tBQ0o7O0FBRUQsV0FBTyxJQUFJLENBQUMsT0FBTyw2QkFBZSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7Q0FDdEQsQ0FBQTs7cUJBRWMsTUFBTSIsImZpbGUiOiIvVXNlcnMvY2hyaXN0aWFuYnJvbWFubi9TaXRlcy9XZWJwcm9qZWt0ZS93ZWJkcml2ZXJqcy9ERVYvbGliL2NvbW1hbmRzL3Njcm9sbC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIFNjcm9sbCB0byBhIHNwZWNpZmljIGVsZW1lbnQuIFlvdSBjYW4gYWxzbyBhcHBlbmQvcGFzcyB0d28gb2Zmc2V0IHZhbHVlcyBhcyBwYXJhbWV0ZXJcbiAqIHRvIHNjcm9sbCB0byBhIHNwZWNpZmljIHBvc2l0aW9uLlxuICpcbiAqIDxleGFtcGxlPlxuICAgIDpzY3JvbGwuanNcbiAgICBjbGllbnRcbiAgICAgICAgLy8gc2Nyb2xsIHRvIHNwZWNpZmljIGVsZW1lbnRcbiAgICAgICAgLnNjcm9sbCgnI215RWxlbWVudCcpXG5cbiAgICAgICAgLy8gc2Nyb2xsIHRvIHNwZWNpZmljIGVsZW1lbnQgd2l0aCBvZmZzZXRcbiAgICAgICAgLy8gc2Nyb2xsIG9mZnNldCB3aWxsIGJlIGFkZGVkIHRvIGVsZW1lbnRzIHBvc2l0aW9uXG4gICAgICAgIC5zY3JvbGwoJyNteUVsZW1lbnQnLCAxMDAsIDEwMClcblxuICAgICAgICAvLyBzY3JvbGwgdG8gc3BlY2lmaWMgeCBhbmQgeSBwb3NpdGlvblxuICAgICAgICAuc2Nyb2xsKDAsIDI1MClcbiAgICAgICAgLmVuZCgpO1xuICogPC9leGFtcGxlPlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nPX0gIHNlbGVjdG9yICBlbGVtZW50IHRvIHNjcm9sbCB0b1xuICogQHBhcmFtIHtOdW1iZXJ9ICAgeG9mZnNldCAgIHggb2Zmc2V0IHRvIHNjcm9sbCB0b1xuICogQHBhcmFtIHtOdW1iZXJ9ICAgeW9mZnNldCAgIHkgb2Zmc2V0IHRvIHNjcm9sbCB0b1xuICpcbiAqIEB1c2VzIHByb3RvY29sL2VsZW1lbnQsIHByb3RvY29sL2VsZW1lbnRJZExvY2F0aW9uLCBwcm90b2NvbC90b3VjaFNjcm9sbCwgcHJvdG9jb2wvZXhlY3V0ZVxuICogQHR5cGUgdXRpbGl0eVxuICpcbiAqL1xuXG5pbXBvcnQgc2Nyb2xsSGVscGVyIGZyb20gJy4uL3NjcmlwdHMvc2Nyb2xsJ1xuXG5sZXQgc2Nyb2xsID0gZnVuY3Rpb24gKHNlbGVjdG9yLCB4b2Zmc2V0ID0gMCwgeW9mZnNldCA9IDApIHtcbiAgICBpZiAodHlwZW9mIHNlbGVjdG9yID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgeG9mZnNldCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgeW9mZnNldCA9IHhvZmZzZXRcbiAgICAgICAgeG9mZnNldCA9IHNlbGVjdG9yXG4gICAgICAgIHNlbGVjdG9yID0gbnVsbFxuICAgIH1cblxuICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgIHZhciBxdWV1ZSA9IFByb21pc2UucmVzb2x2ZSgpXG5cbiAgICAgICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICAgICAgICBxdWV1ZSA9IHRoaXMuZWxlbWVudChzZWxlY3RvcilcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBxdWV1ZS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gcmVzLnZhbHVlLkVMRU1FTlRcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG91Y2hTY3JvbGwoc2VsZWN0b3IsIHhvZmZzZXQsIHlvZmZzZXQpXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQoc2VsZWN0b3IpLnRoZW4oKHJlcykgPT5cbiAgICAgICAgICAgIHRoaXMuZWxlbWVudElkTG9jYXRpb24ocmVzLnZhbHVlLkVMRU1FTlQpXG4gICAgICAgICkudGhlbigobG9jYXRpb24pID0+XG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGUoc2Nyb2xsSGVscGVyLCBsb2NhdGlvbi52YWx1ZS54ICsgeG9mZnNldCwgbG9jYXRpb24udmFsdWUueSArIHlvZmZzZXQpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlKHNjcm9sbEhlbHBlciwgeG9mZnNldCwgeW9mZnNldClcbn1cblxuZXhwb3J0IGRlZmF1bHQgc2Nyb2xsXG4iXX0=