chore: update

This commit is contained in:
daiwei 2024-12-31 09:30:16 +08:00
parent b0a2ce5b0e
commit 1dbd642492
10 changed files with 167 additions and 161 deletions

View File

@ -35,13 +35,13 @@ export function render(_ctx) {
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)

View File

@ -34,11 +34,11 @@ const t0 = _template("<div></div>", 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
}"
`;

View File

@ -5,11 +5,11 @@ exports[`compiler: v-if > basic v-if 1`] = `
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
}"
`;
@ -47,14 +47,14 @@ exports[`compiler: v-if > dedupe same template 1`] = `
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]
}"
`;
@ -66,13 +66,13 @@ const t1 = _template("hello")
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
}"
`;
@ -124,10 +124,10 @@ export function render(_ctx) {
const n0 = _createIf(() => (_ctx.ok) ? () => {
const n2 = t0()
return n2
} : () => (_ctx.orNot) && (() => {
} : () => (_ctx.orNot) ? () => {
const n4 = t1()
return n4
}))
} : undefined)
return n0
}"
`;

View File

@ -78,10 +78,10 @@ exports[`compiler: v-once > with v-if 1`] = `
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
}"
`;

View File

@ -31,8 +31,8 @@ export function genIf(
negativeArg.push(...genIf(negative!, context, true))
}
} else {
positiveArg.unshift(' && (')
positiveArg.push(')')
positiveArg.unshift(' ? ')
positiveArg.push(' : undefined')
}
codes.push(...positiveArg)

View File

@ -138,9 +138,8 @@ describe('api: lifecycle hooks', () => {
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
},
@ -172,9 +171,8 @@ describe('api: lifecycle hooks', () => {
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
},
@ -206,9 +204,8 @@ describe('api: lifecycle hooks', () => {
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
},
@ -249,9 +246,10 @@ describe('api: lifecycle hooks', () => {
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
},
@ -428,9 +426,10 @@ describe('api: lifecycle hooks', () => {
const { render } = define({
setup() {
// @ts-expect-error
return createIf(
() => toggle.value,
() => [createComponent(Child), createComponent(Child)],
return createIf(() =>
toggle.value
? () => [createComponent(Child), createComponent(Child)]
: undefined,
)
},
})

View File

@ -447,11 +447,12 @@ describe('component: slots', () => {
setup() {
return createComponent(Child, null, {
default: () => {
return createIf(
() => toggle.value,
() => {
return document.createTextNode('content')
},
return createIf(() =>
toggle.value
? () => {
return document.createTextNode('content')
}
: () => [],
)
},
})

View File

@ -89,13 +89,14 @@ describe('api: template ref', () => {
},
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
},
@ -160,13 +161,14 @@ describe('api: template ref', () => {
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
},
@ -371,18 +373,18 @@ describe('api: template ref', () => {
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(
() => {
@ -416,30 +418,31 @@ describe('api: template ref', () => {
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
},
@ -479,30 +482,31 @@ describe('api: template ref', () => {
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
},

View File

@ -38,21 +38,21 @@ describe('createIf', () => {
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,
)
@ -61,7 +61,7 @@ describe('createIf', () => {
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++
@ -98,19 +98,21 @@ describe('createIf', () => {
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()
@ -158,29 +160,29 @@ describe('createIf', () => {
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()

View File

@ -2,15 +2,15 @@ import { type BlockFn, DynamicFragment } from './block'
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
}