UNPKG

twreporter-react

Version:

React-Redux site for The Reporter Foundation in Taiwan

82 lines (63 loc) 2.03 kB
"use strict"; var _getIterator = require("babel-runtime/core-js/get-iterator")["default"]; exports.__esModule = true; exports["default"] = function (_ref3) { var t = _ref3.types; function hasSpread(node) { for (var _iterator = (node.properties /*: Array<Object>*/), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) { var _ref; if (_isArray) { if (_i >= _iterator.length) break; _ref = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; _ref = _i.value; } var prop = _ref; if (t.isSpreadProperty(prop)) { return true; } } return false; } return { inherits: require("babel-plugin-syntax-object-rest-spread"), visitor: { 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 (var _iterator2 = (path.node.properties /*: Array*/), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) { var _ref2; if (_isArray2) { if (_i2 >= _iterator2.length) break; _ref2 = _iterator2[_i2++]; } else { _i2 = _iterator2.next(); if (_i2.done) break; _ref2 = _i2.value; } var prop = _ref2; 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)); } } }; }; module.exports = exports["default"];