]> git.mxchange.org Git - friendica-addons.git/blob
17e8c018bd5a535a7bff347cb43e15456287cdd4
[friendica-addons.git] /
1 /* @flow */
2
3 import { warn } from 'core/util/debug'
4 import { handleError } from 'core/util/error'
5 import { RECYCLE_LIST_MARKER } from 'weex/util/index'
6 import { createComponentInstanceForVnode } from 'core/vdom/create-component'
7 import { resolveVirtualComponent } from './virtual-component'
8
9 export function isRecyclableComponent (vnode: VNodeWithData): boolean {
10   return vnode.data.attrs
11     ? (RECYCLE_LIST_MARKER in vnode.data.attrs)
12     : false
13 }
14
15 export function renderRecyclableComponentTemplate (vnode: MountedComponentVNode): VNode {
16   // $flow-disable-line
17   delete vnode.data.attrs[RECYCLE_LIST_MARKER]
18   resolveVirtualComponent(vnode)
19   const vm = createComponentInstanceForVnode(vnode)
20   const render = (vm.$options: any)['@render']
21   if (render) {
22     try {
23       return render.call(vm)
24     } catch (err) {
25       handleError(err, vm, `@render`)
26     }
27   } else {
28     warn(
29       `@render function not defined on component used in <recycle-list>. ` +
30       `Make sure to declare \`recyclable="true"\` on the component's template.`,
31       vm
32     )
33   }
34 }