File size: 1,667 Bytes
bf237c2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
import * as React from 'react';
import { StoreApi } from 'zustand';
type State = object;
type StateSelector<T extends State, U> = (state: T) => U;
type EqualityChecker<T> = (state: T, newState: T) => boolean;
type StateListener<T> = (state: T, previousState: T) => void;
type StoreApiWithSubscribeWithSelector<T extends State> = Omit<StoreApi<T>, 'subscribe'> & {
subscribe: {
(listener: StateListener<T>): () => void;
<StateSlice>(selector: StateSelector<T, StateSlice>, listener: StateListener<StateSlice>, options?: {
equalityFn?: EqualityChecker<StateSlice>;
fireImmediately?: boolean;
}): () => void;
};
};
type KeyboardControlsState<T extends string = string> = {
[K in T]: boolean;
};
export type KeyboardControlsEntry<T extends string = string> = {
name: T;
keys: string[];
up?: boolean;
};
export type KeyboardControlsProps = {
map: KeyboardControlsEntry[];
children: React.ReactNode;
onChange?: (name: string, pressed: boolean, state: KeyboardControlsState) => void;
domElement?: HTMLElement;
};
export declare function KeyboardControls({ map, children, onChange, domElement }: KeyboardControlsProps): React.JSX.Element;
type Selector<T extends string = string> = (state: KeyboardControlsState<T>) => boolean;
export declare function useKeyboardControls<T extends string = string>(): [
StoreApiWithSubscribeWithSelector<KeyboardControlsState<T>>['subscribe'],
StoreApiWithSubscribeWithSelector<KeyboardControlsState<T>>['getState']
];
export declare function useKeyboardControls<T extends string = string>(sel: Selector<T>): ReturnType<Selector<T>>;
export {};
|