feat: support getter in provide/inject

This commit is contained in:
Yue JIN
2025-05-12 19:08:14 +08:00
committed by Yue JIN
parent 0aaa68d03b
commit a8b238cedd
5 changed files with 72 additions and 17 deletions

View File

@ -1,3 +1,6 @@
import type { MaybeRefOrGetter } from "./types";
import { unref } from "vue";
type Attrs = {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
[key: string]: any;
@ -18,3 +21,13 @@ export function omitOn(attrs: Attrs): Attrs {
return result;
}
// Copied from
// https://github.com/vuejs/core/blob/3cb4db21efa61852b0541475b4ddf57fdec4c479/packages/shared/src/general.ts#L49-L50
const isFunction = (val: unknown): val is Function => typeof val === "function";
// Copied from
// https://github.com/vuejs/core/blob/3cb4db21efa61852b0541475b4ddf57fdec4c479/packages/reactivity/src/ref.ts#L246-L248
export function toValue<T>(source: MaybeRefOrGetter<T>): T {
return isFunction(source) ? source() : unref(source);
}