summaryrefslogtreecommitdiffhomepage
path: root/gui/src/renderer/lib
diff options
context:
space:
mode:
Diffstat (limited to 'gui/src/renderer/lib')
-rw-r--r--gui/src/renderer/lib/utilityHooks.ts14
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;
+ }
+}