/**
*
* 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= |