forked from Github/frigate
Drag to reorder/resize cameras in camera groups (#11279)
* draggable/resizable cameras in camera groups on desktop/tablets * fix edit button location on tablets * assume 1rem is 16px
This commit is contained in:
@@ -33,14 +33,15 @@ export function useOverlayState<S>(
|
||||
export function usePersistedOverlayState<S extends string>(
|
||||
key: string,
|
||||
defaultValue: S | undefined = undefined,
|
||||
): [S | undefined, (value: S | undefined, replace?: boolean) => void] {
|
||||
const [persistedValue, setPersistedValue] = usePersistence<S>(
|
||||
key,
|
||||
defaultValue,
|
||||
);
|
||||
): [
|
||||
S | undefined,
|
||||
(value: S | undefined, replace?: boolean) => void,
|
||||
() => void,
|
||||
] {
|
||||
const [persistedValue, setPersistedValue, , deletePersistedValue] =
|
||||
usePersistence<S>(key, defaultValue);
|
||||
const location = useLocation();
|
||||
const navigate = useNavigate();
|
||||
|
||||
const currentLocationState = useMemo(() => location.state, [location]);
|
||||
|
||||
const setOverlayStateValue = useCallback(
|
||||
@@ -63,6 +64,7 @@ export function usePersistedOverlayState<S extends string>(
|
||||
return [
|
||||
overlayStateValue ?? persistedValue ?? defaultValue,
|
||||
setOverlayStateValue,
|
||||
deletePersistedValue,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { useEffect, useState, useCallback } from "react";
|
||||
import { get as getData, set as setData } from "idb-keyval";
|
||||
import { get as getData, set as setData, del as delData } from "idb-keyval";
|
||||
|
||||
type usePersistenceReturn<S> = [
|
||||
value: S | undefined,
|
||||
setValue: (value: S | undefined) => void,
|
||||
loaded: boolean,
|
||||
deleteValue: () => void,
|
||||
];
|
||||
|
||||
export function usePersistence<S>(
|
||||
@@ -26,6 +27,11 @@ export function usePersistence<S>(
|
||||
[key],
|
||||
);
|
||||
|
||||
const deleteValue = useCallback(async () => {
|
||||
await delData(key);
|
||||
setInternalValue(defaultValue);
|
||||
}, [key, defaultValue]);
|
||||
|
||||
useEffect(() => {
|
||||
setLoaded(false);
|
||||
setInternalValue(defaultValue);
|
||||
@@ -41,5 +47,5 @@ export function usePersistence<S>(
|
||||
load();
|
||||
}, [key, defaultValue, setValue]);
|
||||
|
||||
return [value, setValue, loaded];
|
||||
return [value, setValue, loaded, deleteValue];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user