renderEffect(() => {
resolvedComp = getResolvedComp()
- let blockFn
+ let render
if (loaded.value && resolvedComp) {
- blockFn = () => createInnerComp(resolvedComp!, instance, frag)
+ render = () => createInnerComp(resolvedComp!, instance, frag)
} else if (error.value && errorComponent) {
- blockFn = () =>
+ render = () =>
createComponent(errorComponent, { error: () => error.value })
} else if (loadingComponent && !delayed.value) {
- blockFn = () => createComponent(loadingComponent)
+ render = () => createComponent(loadingComponent)
}
- frag.update(blockFn)
+ frag.update(render)
})
return frag
frag?: DynamicFragment,
): VaporComponentInstance {
const { rawProps, rawSlots, isSingleRoot, appContext } = parent
- const i = createComponent(comp, rawProps, rawSlots, isSingleRoot, appContext)
+ const instance = createComponent(
+ comp,
+ rawProps,
+ rawSlots,
+ isSingleRoot,
+ appContext,
+ )
+
// set ref
- frag && frag.setRef && frag.setRef(i)
+ frag && frag.setRef && frag.setRef(instance)
// TODO custom element
// pass the custom element callback on to the inner comp
// and remove it from the async wrapper
// i.ce = ce
// delete parent.ce
- return i
+ return instance
}
const frag = i.block as DynamicFragment
// async component not resolved yet
if (!i.type.__asyncResolved) {
- frag.setRef = n => setRef(instance, n, ref, oldRef, refFor)
+ frag.setRef = i => setRef(instance, i, ref, oldRef, refFor)
return
}
import { createComment, createTextNode } from './dom/node'
import { EffectScope, pauseTracking, resetTracking } from '@vue/reactivity'
import { isHydrating } from './dom/hydration'
-import type { RefEl } from './apiTemplateRef'
export type Block =
| Node
anchor?: Node
insert?: (parent: ParentNode, anchor: Node | null) => void
remove?: (parent?: ParentNode) => void
- setRef?: (el: RefEl) => void
+ setRef?: (comp: VaporComponentInstance) => void
constructor(nodes: Block) {
this.nodes = nodes