123456789101112131415161718192021222324252627282930313233343536 |
- function flattenVNodes(vnodes) {
- var result = [];
- function traverse(vnodes) {
- vnodes.forEach(function (vnode) {
- result.push(vnode);
- if (vnode.componentInstance) {
- traverse(vnode.componentInstance.$children.map(function (item) {
- return item.$vnode;
- }));
- }
- if (vnode.children) {
- traverse(vnode.children);
- }
- });
- }
- traverse(vnodes);
- return result;
- } // sort children instances by vnodes order
- export function sortChildren(children, parent) {
- var componentOptions = parent.$vnode.componentOptions;
- if (!componentOptions || !componentOptions.children) {
- return;
- }
- var vnodes = flattenVNodes(componentOptions.children);
- children.sort(function (a, b) {
- return vnodes.indexOf(a.$vnode) - vnodes.indexOf(b.$vnode);
- });
- }
|