From 7e593c26589c5b8008a90b60ba330a88556c9444 Mon Sep 17 00:00:00 2001 From: daiwei Date: Tue, 4 Mar 2025 15:12:02 +0800 Subject: [PATCH] wip: handle built-in components --- packages/compiler-vapor/src/generators/component.ts | 8 ++++++++ .../src/transforms/transformElement.ts | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/packages/compiler-vapor/src/generators/component.ts b/packages/compiler-vapor/src/generators/component.ts index b131ad2e94..8b0ab73e78 100644 --- a/packages/compiler-vapor/src/generators/component.ts +++ b/packages/compiler-vapor/src/generators/component.ts @@ -39,6 +39,7 @@ import { genEventHandler } from './event' import { genDirectiveModifiers, genDirectivesForElement } from './directive' import { genBlock } from './block' import { genModelHandler } from './vModel' +import { isBuiltInComponent } from '../transforms/transformElement' export function genCreateComponent( operation: CreateComponentIRNode, @@ -90,6 +91,13 @@ export function genCreateComponent( } else if (operation.asset) { return toValidAssetId(operation.tag, 'component') } else { + const { tag } = operation + const builtInTag = isBuiltInComponent(tag) + if (builtInTag) { + // @ts-expect-error + helper(builtInTag) + return `_${builtInTag}` + } return genExpression( extend(createSimpleExpression(operation.tag, false), { ast: null }), context, diff --git a/packages/compiler-vapor/src/transforms/transformElement.ts b/packages/compiler-vapor/src/transforms/transformElement.ts index f42801ace6..14cdf66c2e 100644 --- a/packages/compiler-vapor/src/transforms/transformElement.ts +++ b/packages/compiler-vapor/src/transforms/transformElement.ts @@ -109,6 +109,12 @@ function transformComponentElement( asset = false } + const builtInTag = isBuiltInComponent(tag) + if (builtInTag) { + tag = builtInTag + asset = false + } + const dotIndex = tag.indexOf('.') if (dotIndex > 0) { const ns = resolveSetupReference(tag.slice(0, dotIndex), context) @@ -435,3 +441,9 @@ function mergePropValues(existing: IRProp, incoming: IRProp) { function isComponentTag(tag: string) { return tag === 'component' || tag === 'Component' } + +export function isBuiltInComponent(tag: string): string | undefined { + if (tag === 'Transition' || tag === 'transition') { + return 'Transition' + } +} -- 2.47.2