mirror of
https://github.com/spacedriveapp/spacedrive.git
synced 2026-02-20 15:43:58 -05:00
25 lines
683 B
TypeScript
25 lines
683 B
TypeScript
import { MouseEvent } from 'react';
|
|
import { useNavigate } from 'react-router';
|
|
import { useOperatingSystem, useSearchStore } from '~/hooks';
|
|
|
|
export const useMouseNavigate = () => {
|
|
const idx = history.state.idx as number;
|
|
const navigate = useNavigate();
|
|
const { isFocused } = useSearchStore();
|
|
const os = useOperatingSystem();
|
|
const realOs = useOperatingSystem(true);
|
|
|
|
const handler = (e: MouseEvent) => {
|
|
if (os === 'browser' || realOs !== 'macOS') return;
|
|
if (e.buttons === 8) {
|
|
if (idx === 0 || isFocused) return;
|
|
navigate(-1);
|
|
} else if (e.buttons === 16) {
|
|
if (idx === history.length - 1 || isFocused) return;
|
|
navigate(1);
|
|
}
|
|
};
|
|
|
|
return handler;
|
|
};
|