import Vue from 'vue' const transitionsKeys = [ 'name', 'mode', 'css', 'type', 'enterClass', 'leaveClass', 'enterActiveClass', 'leaveActiveClass' ] const listenersKeys = [ 'beforeEnter', 'enter', 'afterEnter', 'enterCancelled', 'beforeLeave', 'leave', 'afterLeave', 'leaveCancelled' ] export default { name: 'nuxt-child', functional: true, render (h, { parent, data }) { data.nuxtChild = true const transitions = parent.$nuxt.nuxt.transitions const defaultTransition = parent.$nuxt.nuxt.defaultTransition let depth = 0 while (parent) { if (parent.$vnode && parent.$vnode.data.nuxtChild) { depth++ } parent = parent.$parent } data.nuxtChildDepth = depth const transition = transitions[depth] || defaultTransition let transitionProps = {} transitionsKeys.forEach((key) => { if (typeof transition[key] !== 'undefined') { transitionProps[key] = transition[key] } }) let listeners = {} listenersKeys.forEach((key) => { if (typeof transition[key] === 'function') { listeners[key] = transition[key] } }) return h('transition', { props: transitionProps, on: listeners }, [ h('router-view', data) ]) } }