vnode.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.cloneElement = cloneElement;
  7. exports.cloneVNodes = cloneVNodes;
  8. var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
  9. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  10. var _propsUtil = require("./props-util");
  11. var _vue = require("vue");
  12. var _warning = _interopRequireDefault(require("./warning"));
  13. function cloneElement(vnode) {
  14. var nodeProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  15. var override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
  16. var mergeRef = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
  17. var ele = vnode;
  18. if (Array.isArray(vnode)) {
  19. ele = (0, _propsUtil.filterEmpty)(vnode)[0];
  20. }
  21. if (!ele) {
  22. return null;
  23. }
  24. var node = (0, _vue.cloneVNode)(ele, nodeProps, mergeRef);
  25. // cloneVNode内部是合并属性,这里改成覆盖属性
  26. node.props = override ? (0, _objectSpread2.default)((0, _objectSpread2.default)({}, node.props), nodeProps) : node.props;
  27. (0, _warning.default)((0, _typeof2.default)(node.props.class) !== 'object', 'class must be string');
  28. return node;
  29. }
  30. function cloneVNodes(vnodes) {
  31. var nodeProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  32. var override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
  33. return vnodes.map(function (vnode) {
  34. return cloneElement(vnode, nodeProps, override);
  35. });
  36. }