53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
import { useEffect } from 'react';
|
|
|
|
import { HotkeyScope } from '@/ui/hotkey/types/HotkeyScope';
|
|
import { isSameHotkeyScope } from '@/ui/hotkey/utils/isSameHotkeyScope';
|
|
import { useRecoilScopedState } from '@/ui/recoil-scope/hooks/useRecoilScopedState';
|
|
|
|
import { customEditHotkeyScopeForFieldScopedState } from '../states/customEditHotkeyScopeForFieldScopedState';
|
|
import { FieldContext } from '../states/FieldContext';
|
|
import { parentHotkeyScopeForFieldScopedState } from '../states/parentHotkeyScopeForFieldScopedState';
|
|
|
|
export function useBindFieldHotkeyScope({
|
|
customEditHotkeyScope,
|
|
parentHotkeyScope,
|
|
}: {
|
|
customEditHotkeyScope?: HotkeyScope;
|
|
parentHotkeyScope?: HotkeyScope;
|
|
}) {
|
|
const [customEditHotkeyScopeForField, setCustomEditHotkeyScopeForField] =
|
|
useRecoilScopedState(
|
|
customEditHotkeyScopeForFieldScopedState,
|
|
FieldContext,
|
|
);
|
|
|
|
const [parentHotkeyScopeForField, setParentHotkeyScopeForField] =
|
|
useRecoilScopedState(parentHotkeyScopeForFieldScopedState, FieldContext);
|
|
|
|
useEffect(() => {
|
|
if (
|
|
customEditHotkeyScope &&
|
|
!isSameHotkeyScope(customEditHotkeyScope, customEditHotkeyScopeForField)
|
|
) {
|
|
setCustomEditHotkeyScopeForField(customEditHotkeyScope);
|
|
}
|
|
}, [
|
|
customEditHotkeyScope,
|
|
customEditHotkeyScopeForField,
|
|
setCustomEditHotkeyScopeForField,
|
|
]);
|
|
|
|
useEffect(() => {
|
|
if (
|
|
parentHotkeyScope &&
|
|
!isSameHotkeyScope(parentHotkeyScope, parentHotkeyScopeForField)
|
|
) {
|
|
setParentHotkeyScopeForField(parentHotkeyScope);
|
|
}
|
|
}, [
|
|
parentHotkeyScope,
|
|
parentHotkeyScopeForField,
|
|
setParentHotkeyScopeForField,
|
|
]);
|
|
}
|