29 lines
703 B
TypeScript
29 lines
703 B
TypeScript
import { useEffect } from 'react';
|
|
import type { OnViewportChange } from '@xyflow/system';
|
|
|
|
import { useStoreApi } from './useStore';
|
|
|
|
export type UseOnViewportChangeOptions = {
|
|
onStart?: OnViewportChange;
|
|
onChange?: OnViewportChange;
|
|
onEnd?: OnViewportChange;
|
|
};
|
|
|
|
function useOnViewportChange({ onStart, onChange, onEnd }: UseOnViewportChangeOptions) {
|
|
const store = useStoreApi();
|
|
|
|
useEffect(() => {
|
|
store.setState({ onViewportChangeStart: onStart });
|
|
}, [onStart]);
|
|
|
|
useEffect(() => {
|
|
store.setState({ onViewportChange: onChange });
|
|
}, [onChange]);
|
|
|
|
useEffect(() => {
|
|
store.setState({ onViewportChangeEnd: onEnd });
|
|
}, [onEnd]);
|
|
}
|
|
|
|
export default useOnViewportChange;
|