Files
mtdb_movie/common/resources/client/player/hooks/use-player-store.tsx
maher 703f50a09d
Some checks failed
Build / run (push) Has been cancelled
first commit
2025-10-29 11:42:25 +01:00

30 lines
917 B
TypeScript
Executable File

import {StoreApi} from 'zustand';
import {useContext} from 'react';
import {PlayerStoreContext} from '@common/player/player-context';
import {PlayerState} from '@common/player/state/player-state';
import {FullscreenSlice} from '@common/player/state/fullscreen/fullscreen-slice';
import {PipSlice} from '@common/player/state/pip/pip-slice';
import {useStoreWithEqualityFn} from 'zustand/traditional';
type ExtractState<S> = S extends {
getState: () => infer T;
}
? T
: never;
type UsePlayerStore = {
(): ExtractState<StoreApi<PlayerState>>;
<U>(
selector: (
state: ExtractState<StoreApi<PlayerState & FullscreenSlice & PipSlice>>
) => U,
equalityFn?: (a: U, b: U) => boolean
): U;
};
// @ts-ignore
export const usePlayerStore: UsePlayerStore = (selector, equalityFn) => {
const store = useContext(PlayerStoreContext);
return useStoreWithEqualityFn(store, selector, equalityFn);
};