src/PopupTools.js
function assign(target) {
    var sources = Array.prototype.slice.call(arguments, 1);

    function assignArgument(previous, source) {
        Object.keys(source).forEach(function assignItem(key) {
            previous[key] = source[key]; // eslint-disable-line no-param-reassign
        });

        return previous;
    }

    return sources.reduce(assignArgument, target);
}
function assign(target) {
    var sources = Array.prototype.slice.call(arguments, 1);

    function assignArgument(previous, source) {
        Object.keys(source).forEach(function assignItem(key) {
            previous[key] = source[key]; // eslint-disable-line no-param-reassign
        });

        return previous;
    }

    return sources.reduce(assignArgument, target);
}
Polyfill Object.assign

@param  {Object} target
@param  {Object} source1 ...
@return {Object}