diff options
Diffstat (limited to 'gui/src/renderer/lib')
| -rw-r--r-- | gui/src/renderer/lib/utilityHooks.ts | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/gui/src/renderer/lib/utilityHooks.ts b/gui/src/renderer/lib/utilityHooks.ts index cbb5575f9b..4156c546ea 100644 --- a/gui/src/renderer/lib/utilityHooks.ts +++ b/gui/src/renderer/lib/utilityHooks.ts @@ -1,4 +1,4 @@ -import { useCallback, useEffect, useRef } from 'react'; +import React, { useCallback, useEffect, useRef } from 'react'; export function useMounted() { const mountedRef = useRef(false); @@ -13,3 +13,15 @@ export function useMounted() { return isMounted; } + +export function useCombinedRefs<T>(...refs: (React.Ref<T> | undefined)[]): React.RefCallback<T> { + return useCallback((element: T | null) => refs.forEach((ref) => assignToRef(element, ref)), []); +} + +function assignToRef<T>(element: T | null, ref?: React.Ref<T>) { + if (typeof ref === 'function') { + ref(element); + } else if (ref && element) { + (ref as React.MutableRefObject<T>).current = element; + } +} |
