/* @flow */ 
 | 
  
 | 
import { warn } from 'core/util/debug' 
 | 
import { handleError } from 'core/util/error' 
 | 
import { RECYCLE_LIST_MARKER } from 'weex/util/index' 
 | 
import { createComponentInstanceForVnode } from 'core/vdom/create-component' 
 | 
import { resolveVirtualComponent } from './virtual-component' 
 | 
  
 | 
export function isRecyclableComponent (vnode: VNodeWithData): boolean { 
 | 
  return vnode.data.attrs 
 | 
    ? (RECYCLE_LIST_MARKER in vnode.data.attrs) 
 | 
    : false 
 | 
} 
 | 
  
 | 
export function renderRecyclableComponentTemplate (vnode: MountedComponentVNode): VNode { 
 | 
  // $flow-disable-line 
 | 
  delete vnode.data.attrs[RECYCLE_LIST_MARKER] 
 | 
  resolveVirtualComponent(vnode) 
 | 
  const vm = createComponentInstanceForVnode(vnode) 
 | 
  const render = (vm.$options: any)['@render'] 
 | 
  if (render) { 
 | 
    try { 
 | 
      return render.call(vm) 
 | 
    } catch (err) { 
 | 
      handleError(err, vm, `@render`) 
 | 
    } 
 | 
  } else { 
 | 
    warn( 
 | 
      `@render function not defined on component used in <recycle-list>. ` + 
 | 
      `Make sure to declare \`recyclable="true"\` on the component's template.`, 
 | 
      vm 
 | 
    ) 
 | 
  } 
 | 
} 
 |