vnodes.js 893 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. "use strict";
  2. exports.__esModule = true;
  3. exports.sortChildren = sortChildren;
  4. function flattenVNodes(vnodes) {
  5. var result = [];
  6. function traverse(vnodes) {
  7. vnodes.forEach(function (vnode) {
  8. result.push(vnode);
  9. if (vnode.componentInstance) {
  10. traverse(vnode.componentInstance.$children.map(function (item) {
  11. return item.$vnode;
  12. }));
  13. }
  14. if (vnode.children) {
  15. traverse(vnode.children);
  16. }
  17. });
  18. }
  19. traverse(vnodes);
  20. return result;
  21. } // sort children instances by vnodes order
  22. function sortChildren(children, parent) {
  23. var componentOptions = parent.$vnode.componentOptions;
  24. if (!componentOptions || !componentOptions.children) {
  25. return;
  26. }
  27. var vnodes = flattenVNodes(componentOptions.children);
  28. children.sort(function (a, b) {
  29. return vnodes.indexOf(a.$vnode) - vnodes.indexOf(b.$vnode);
  30. });
  31. }