| 501 | ): ToRef<Exclude<ToRefValue<T, K>, undefined>> |
| 502 | /*@__NO_SIDE_EFFECTS__*/ |
| 503 | export function toRef( |
| 504 | source: Record<PropertyKey, any> | MaybeRef, |
| 505 | key?: string | number | symbol, |
| 506 | defaultValue?: unknown, |
| 507 | ): Ref { |
| 508 | if (isRef(source)) { |
| 509 | return source |
| 510 | } else if (isFunction(source)) { |
| 511 | return new GetterRefImpl(source) as any |
| 512 | } else if (isObject(source) && arguments.length > 1) { |
| 513 | return propertyToRef(source, key!, defaultValue) |
| 514 | } else { |
| 515 | return ref(source) |
| 516 | } |
| 517 | } |
| 518 | |
| 519 | function propertyToRef( |
| 520 | source: Record<PropertyKey, any>, |