/*istanbul ignore next*/"use strict"; exports.__esModule = true; var _getIterator2 = require("babel-runtime/core-js/get-iterator"); var _getIterator3 = _interopRequireDefault(_getIterator2); exports.default = function ( /*istanbul ignore next*/_ref) { /*istanbul ignore next*/var t = _ref.types; function hasSpread(node) { for ( /*istanbul ignore next*/var _iterator = node.properties, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) { /*istanbul ignore next*/ var _ref2; if (_isArray) { if (_i >= _iterator.length) break; _ref2 = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; _ref2 = _i.value; } var prop = _ref2; if (t.isSpreadProperty(prop)) { return true; } } return false; } return { inherits: require("babel-plugin-syntax-object-rest-spread"), visitor: { /*istanbul ignore next*/ ObjectExpression: function ObjectExpression(path, file) { if (!hasSpread(path.node)) return; var args = []; var props = []; function push() { if (!props.length) return; args.push(t.objectExpression(props)); props = []; } for ( /*istanbul ignore next*/var _iterator2 = path.node.properties, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) { /*istanbul ignore next*/ var _ref3; if (_isArray2) { if (_i2 >= _iterator2.length) break; _ref3 = _iterator2[_i2++]; } else { _i2 = _iterator2.next(); if (_i2.done) break; _ref3 = _i2.value; } var prop = _ref3; if (t.isSpreadProperty(prop)) { push(); args.push(prop.argument); } else { props.push(prop); } } push(); if (!t.isObjectExpression(args[0])) { args.unshift(t.objectExpression([])); } path.replaceWith(t.callExpression(file.addHelper("extends"), args)); } } }; }; /*istanbul ignore next*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } module.exports = exports["default"];