From: daiwei Date: Fri, 20 Jun 2025 06:33:12 +0000 (+0800) Subject: chore: Merge branch 'vapor' into edison/fix/setRefVdomInterop X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=297855a8544fc4934a0c7ba1f3b37508f6788e8a;p=thirdparty%2Fvuejs%2Fcore.git chore: Merge branch 'vapor' into edison/fix/setRefVdomInterop --- 297855a8544fc4934a0c7ba1f3b37508f6788e8a diff --cc packages/runtime-core/src/index.ts index e30bd5abc1,1ed6f21df7..9eb6d228fb --- a/packages/runtime-core/src/index.ts +++ b/packages/runtime-core/src/index.ts @@@ -557,11 -557,7 +557,15 @@@ export { startMeasure, endMeasure } fro * @internal */ export { initFeatureFlags } from './featureFlags' +/** + * @internal + */ +export { setRef } from './rendererTemplateRef' +/** + * @internal + */ +export { type VNodeNormalizedRef, normalizeRef } from './vnode' + /** + * @internal + */ + export { createInternalObject } from './internalObject' diff --cc packages/runtime-vapor/__tests__/dom/templateRef.spec.ts index 1073389b97,f1ce23ac15..1695a2e402 --- a/packages/runtime-vapor/__tests__/dom/templateRef.spec.ts +++ b/packages/runtime-vapor/__tests__/dom/templateRef.spec.ts @@@ -5,7 -7,7 +7,8 @@@ import createIf, createSlot, createTemplateRefSetter, + defineVaporComponent, + delegateEvents, insert, renderEffect, template, diff --cc packages/runtime-vapor/src/apiTemplateRef.ts index 5c2e6ca020,d3f3cf7181..a43261cbfc --- a/packages/runtime-vapor/src/apiTemplateRef.ts +++ b/packages/runtime-vapor/src/apiTemplateRef.ts @@@ -20,12 -20,9 +20,12 @@@ import isString, remove, } from '@vue/shared' - import { isFragment } from './block' -import { DynamicFragment } from './block' ++import { DynamicFragment, isFragment } from './block' -export type NodeRef = string | Ref | ((ref: Element) => void) +export type NodeRef = + | string + | Ref + | ((ref: Element | VaporComponentInstance, refs: Record) => void) export type RefEl = Element | VaporComponentInstance export type setRefFn = ( @@@ -53,14 -49,8 +53,14 @@@ export function setRef ): NodeRef | undefined { if (!instance || instance.isUnmounted) return + // vdom interop + if (isFragment(el) && el.setRef) { + el.setRef(instance, ref, refFor, refKey) + return + } + const setupState: any = __DEV__ ? instance.setupState || {} : null - const refValue = isVaporComponent(el) ? getExposed(el) || el : el + const refValue = getRefValue(el) const refs = instance.refs === EMPTY_OBJ ? (instance.refs = {}) : instance.refs diff --cc packages/runtime-vapor/src/vdomInterop.ts index 38e29b215a,b916a2c8eb..02409df686 --- a/packages/runtime-vapor/src/vdomInterop.ts +++ b/packages/runtime-vapor/src/vdomInterop.ts @@@ -8,12 -8,12 +8,14 @@@ import type ShallowRef, type Slots, type VNode, + type VNodeNormalizedRef, type VaporInteropInterface, + createInternalObject, createVNode, currentInstance, ensureRenderer, + isEmitListener, + normalizeRef, onScopeDispose, renderSlot, shallowRef,