const _directive_test = _resolveDirective("test")
const n4 = _createComponentWithFallback(_component_Comp, null, {
"default": () => {
- const n0 = _createIf(() => (true) && (() => {
+ const n0 = _createIf(() => (true) ? () => {
const n3 = t0()
const n2 = _createComponentWithFallback(_component_Bar)
_withDirectives(n2, [[_directive_hello, void 0, void 0, { world: true }]])
_insert(n2, n3)
return n3
- }))
+ } : undefined)
return n0
}
}, true)
export function render(_ctx) {
const _setTemplateRef = _createTemplateRefSetter()
- const n0 = _createIf(() => (true) && (() => {
+ const n0 = _createIf(() => (true) ? () => {
const n2 = t0()
_setTemplateRef(n2, "foo")
return n2
- }))
+ } : undefined)
return n0
}"
`;
const t0 = _template("<div></div>", true)
export function render(_ctx) {
- const n0 = _createIf(() => (_ctx.ok) && (() => {
+ const n0 = _createIf(() => (_ctx.ok) ? () => {
const n2 = t0()
_renderEffect(() => _setText(n2, _ctx.msg))
return n2
- }))
+ } : undefined)
return n0
}"
`;
const t0 = _template("<div>hello</div>")
export function render(_ctx) {
- const n0 = _createIf(() => (_ctx.ok) && (() => {
+ const n0 = _createIf(() => (_ctx.ok) ? () => {
const n2 = t0()
return n2
- }))
- const n3 = _createIf(() => (_ctx.ok) && (() => {
+ } : undefined)
+ const n3 = _createIf(() => (_ctx.ok) ? () => {
const n5 = t0()
return n5
- }))
+ } : undefined)
return [n0, n3]
}"
`;
const t2 = _template("<p></p>", true)
export function render(_ctx) {
- const n0 = _createIf(() => (_ctx.ok) && (() => {
+ const n0 = _createIf(() => (_ctx.ok) ? () => {
const n2 = t0()
const n3 = t1()
const n4 = t2()
_renderEffect(() => _setText(n4, _ctx.msg))
return [n2, n3, n4]
- }))
+ } : undefined)
return n0
}"
`;
const n0 = _createIf(() => (_ctx.ok) ? () => {
const n2 = t0()
return n2
- } : () => (_ctx.orNot) && (() => {
+ } : () => (_ctx.orNot) ? () => {
const n4 = t1()
return n4
- }))
+ } : undefined)
return n0
}"
`;
const t0 = _template("<div></div>", true)
export function render(_ctx) {
- const n0 = _createIf(() => (_ctx.expr) && (() => {
+ const n0 = _createIf(() => (_ctx.expr) ? () => {
const n2 = t0()
return n2
- }), true)
+ } : undefined, true)
return n0
}"
`;
negativeArg.push(...genIf(negative!, context, true))
}
} else {
- positiveArg.unshift(' && (')
- positiveArg.push(')')
+ positiveArg.unshift(' ? ')
+ positiveArg.push(' : undefined')
}
codes.push(...positiveArg)
const { render, host } = define({
setup() {
// @ts-expect-error
- const n0 = createIf(
- () => toggle.value,
- () => createComponent(Child),
+ const n0 = createIf(() =>
+ toggle.value ? () => createComponent(Child) : undefined,
)
return n0
},
const { render, host } = define({
setup() {
// @ts-expect-error
- const n0 = createIf(
- () => toggle.value,
- () => createComponent(Child),
+ const n0 = createIf(() =>
+ toggle.value ? () => createComponent(Child) : undefined,
)
return n0
},
const { render, host } = define({
setup() {
// @ts-expect-error
- const n0 = createIf(
- () => toggle.value,
- () => createComponent(Child),
+ const n0 = createIf(() =>
+ toggle.value ? () => createComponent(Child) : undefined,
)
return n0
},
onUnmounted(() => calls.push('onUnmounted'))
// @ts-expect-error
- const n0 = createIf(
- () => toggle.value,
- () => createComponent(Mid, { count: () => count.value }),
+ const n0 = createIf(() =>
+ toggle.value
+ ? () => createComponent(Mid, { count: () => count.value })
+ : undefined,
)
return n0
},
const { render } = define({
setup() {
// @ts-expect-error
- return createIf(
- () => toggle.value,
- () => [createComponent(Child), createComponent(Child)],
+ return createIf(() =>
+ toggle.value
+ ? () => [createComponent(Child), createComponent(Child)]
+ : undefined,
)
},
})
setup() {
return createComponent(Child, null, {
default: () => {
- return createIf(
- () => toggle.value,
- () => {
- return document.createTextNode('content')
- },
+ return createIf(() =>
+ toggle.value
+ ? () => {
+ return document.createTextNode('content')
+ }
+ : () => [],
)
},
})
},
render() {
const setRef = createTemplateRefSetter()
- const n0 = createIf(
- () => toggle.value,
- () => {
- const n1 = t0()
- setRef(n1 as Element, 'refKey')
- return n1
- },
+ const n0 = createIf(() =>
+ toggle.value
+ ? () => {
+ const n1 = t0()
+ setRef(n1 as Element, 'refKey')
+ return n1
+ }
+ : undefined,
)
return n0
},
const t0 = template('<div></div>')
const { render } = define({
render() {
- const n0 = createIf(
- () => toggle.value,
- () => {
- const n1 = t0()
- createTemplateRefSetter()(n1 as Element, fn)
- return n1
- },
+ const n0 = createIf(() =>
+ toggle.value
+ ? () => {
+ const n1 = t0()
+ createTemplateRefSetter()(n1 as Element, fn)
+ return n1
+ }
+ : undefined,
)
return n0
},
render() {
const instance = currentInstance!
const setRef = createTemplateRefSetter()
- const n0 = createIf(
- () => refToggle.value,
- () => {
- const n1 = t0()
- setRef(n1 as Element, 'foo')
- return n1
- },
- () => {
- const n1 = t1()
- setRef(n1 as Element, 'foo')
- return n1
- },
+ const n0 = createIf(() =>
+ refToggle.value
+ ? () => {
+ const n1 = t0()
+ setRef(n1 as Element, 'foo')
+ return n1
+ }
+ : () => {
+ const n1 = t1()
+ setRef(n1 as Element, 'foo')
+ return n1
+ },
)
watchEffect(
() => {
const t1 = template('<li></li>')
const { render } = define({
render() {
- const n0 = createIf(
- () => show.value,
- () => {
- const n1 = t0()
- const n2 = createFor(
- () => list,
- state => {
- const n1 = t1()
- createTemplateRefSetter()(
- n1 as Element,
- listRefs,
- undefined,
- true,
+ const n0 = createIf(() =>
+ show.value
+ ? () => {
+ const n1 = t0()
+ const n2 = createFor(
+ () => list,
+ state => {
+ const n1 = t1()
+ createTemplateRefSetter()(
+ n1 as Element,
+ listRefs,
+ undefined,
+ true,
+ )
+ renderEffect(() => {
+ const [item] = state
+ setText(n1, item)
+ })
+ return n1
+ },
)
- renderEffect(() => {
- const [item] = state
- setText(n1, item)
- })
+ insert(n2, n1 as ParentNode)
return n1
- },
- )
- insert(n2, n1 as ParentNode)
- return n1
- },
+ }
+ : undefined,
)
return n0
},
return { listRefs }
},
render() {
- const n0 = createIf(
- () => show.value,
- () => {
- const n1 = t0()
- const n2 = createFor(
- () => list,
- state => {
- const n1 = t1()
- createTemplateRefSetter()(
- n1 as Element,
- 'listRefs',
- undefined,
- true,
+ const n0 = createIf(() =>
+ show.value
+ ? () => {
+ const n1 = t0()
+ const n2 = createFor(
+ () => list,
+ state => {
+ const n1 = t1()
+ createTemplateRefSetter()(
+ n1 as Element,
+ 'listRefs',
+ undefined,
+ true,
+ )
+ renderEffect(() => {
+ const [item] = state
+ setText(n1, item)
+ })
+ return n1
+ },
)
- renderEffect(() => {
- const [item] = state
- setText(n1, item)
- })
+ insert(n2, n1 as ParentNode)
return n1
- },
- )
- insert(n2, n1 as ParentNode)
- return n1
- },
+ }
+ : undefined,
)
return n0
},
const n0 = t0()
insert(
- createIf(
- spyConditionFn,
- // v-if
- (spyIfFn ||= vi.fn(() => {
- const n2 = t1()
- renderEffect(() => {
- setText(n2, count.value)
- })
- return n2
- })),
- // v-else
- (spyElseFn ||= vi.fn(() => {
- const n4 = t2()
- return n4
- })),
+ createIf(() =>
+ spyConditionFn()
+ ? // v-if
+ (spyIfFn ||= vi.fn(() => {
+ const n2 = t1()
+ renderEffect(() => {
+ setText(n2, count.value)
+ })
+ return n2
+ }))
+ : // v-else
+ (spyElseFn ||= vi.fn(() => {
+ const n4 = t2()
+ return n4
+ })),
),
n0 as any as ParentNode,
)
expect(host.innerHTML).toBe('<div><p>zero</p><!--if--></div>')
expect(spyConditionFn).toHaveBeenCalledTimes(1)
- expect(spyIfFn!).toHaveBeenCalledTimes(0)
+ expect(spyIfFn!).toBeUndefined()
expect(spyElseFn!).toHaveBeenCalledTimes(1)
count.value++
const t0 = template('Vapor')
const t1 = template('Hello ')
const { host } = define(() => {
- const n1 = createIf(
- () => ok1.value,
- () => {
- const n2 = t1()
- const n3 = createIf(
- () => ok2.value,
- () => {
- const n4 = t0()
- return n4
- },
- )
- return [n2, n3]
- },
+ const n1 = createIf(() =>
+ ok1.value
+ ? () => {
+ const n2 = t1()
+ const n3 = createIf(() =>
+ ok2.value
+ ? () => {
+ const n4 = t0()
+ return n4
+ }
+ : undefined,
+ )
+ return [n2, n3]
+ }
+ : undefined,
)
return n1
}).render()
const t0 = template('<p></p>')
const { instance } = define(() => {
- const n1 = createIf(
- spyConditionFn1,
- () => {
- const n2 = t0()
- withDirectives(children(n2, 0), [
- [vDirective, () => (update.value, '1')],
- ])
- return n2
- },
- () =>
- createIf(
- spyConditionFn2,
- () => {
+ const n1 = createIf(() =>
+ spyConditionFn1()
+ ? () => {
const n2 = t0()
- withDirectives(children(n2, 0), [[vDirective, () => '2']])
+ withDirectives(children(n2, 0), [
+ [vDirective, () => (update.value, '1')],
+ ])
return n2
- },
- () => {
- const n2 = t0()
- withDirectives(children(n2, 0), [[vDirective, () => '3']])
- return n2
- },
- ),
+ }
+ : () =>
+ createIf(() =>
+ spyConditionFn2()
+ ? () => {
+ const n2 = t0()
+ withDirectives(children(n2, 0), [[vDirective, () => '2']])
+ return n2
+ }
+ : () => {
+ const n2 = t0()
+ withDirectives(children(n2, 0), [[vDirective, () => '3']])
+ return n2
+ },
+ ),
)
return [n1]
}).render()
import { renderEffect } from './renderEffect'
export function createIf(
- ifBlockFn: () => BlockFn,
+ ifBlockGetter: () => BlockFn | undefined,
once?: boolean,
// hydrationNode?: Node,
): DynamicFragment {
const frag = __DEV__ ? new DynamicFragment('if') : new DynamicFragment()
if (once) {
- frag.update(ifBlockFn())
+ frag.update(ifBlockGetter())
} else {
- renderEffect(() => frag.update(ifBlockFn()))
+ renderEffect(() => frag.update(ifBlockGetter()))
}
return frag
}