'use strict';

exports.__esModule = true;
exports.default = scrollIntoView;

var _vue = require('vue');

var _vue2 = _interopRequireDefault(_vue);

function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : {default: obj};
}

function scrollIntoView(container, selected) {
    if (_vue2.default.prototype.$isServer) return;

    if (!selected) {
        container.scrollTop = 0;
        return;
    }

    var offsetParents = [];
    var pointer = selected.offsetParent;
    while (pointer && container !== pointer && container.contains(pointer)) {
        offsetParents.push(pointer);
        pointer = pointer.offsetParent;
    }
    var top = selected.offsetTop + offsetParents.reduce(function (prev, curr) {
        return prev + curr.offsetTop;
    }, 0);
    var bottom = top + selected.offsetHeight;
    var viewRectTop = container.scrollTop;
    var viewRectBottom = viewRectTop + container.clientHeight;

    if (top < viewRectTop) {
        container.scrollTop = top;
    } else if (bottom > viewRectBottom) {
        container.scrollTop = bottom - container.clientHeight;
    }
}