Double click to cycle size

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
This commit is contained in:
Šimon Brandner 2023-06-29 18:33:06 +02:00
parent 4a90eb341f
commit 52ed76a02f
No known key found for this signature in database
GPG Key ID: BB126BDA1FFBF42B

View File

@ -257,6 +257,11 @@ export function NewVideoGrid<T>({
); );
}; };
const [lastTappedTileId, setLastTappedTileId] = useState<string | undefined>(
undefined
);
const [lastTapTime, setLastTapTime] = useState<number>(0);
// Callback for useDrag. We could call useDrag here, but the default // Callback for useDrag. We could call useDrag here, but the default
// pattern of spreading {...bind()} across the children to bind the gesture // pattern of spreading {...bind()} across the children to bind the gesture
// ends up breaking memoization and ruining this component's performance. // ends up breaking memoization and ruining this component's performance.
@ -272,7 +277,14 @@ export function NewVideoGrid<T>({
}: Parameters<Handler<"drag", EventTypes["drag"]>>[0] }: Parameters<Handler<"drag", EventTypes["drag"]>>[0]
) => { ) => {
if (tap) { if (tap) {
toggleFocus?.(items.find((i) => i.id === tileId)!); const now = Date.now();
if (tileId === lastTappedTileId && now - lastTapTime < 500) {
toggleFocus?.(items.find((i) => i.id === tileId)!);
}
setLastTappedTileId(tileId);
setLastTapTime(now);
} else { } else {
const tileController = springRef.current.find( const tileController = springRef.current.find(
(c) => (c.item as Tile<T>).item.id === tileId (c) => (c.item as Tile<T>).item.id === tileId