mirror of
https://github.com/SamyRai/turash.git
synced 2025-12-26 23:01:33 +00:00
- Remove nested git repository from bugulma/frontend/.git - Add all frontend files to main repository tracking - Convert from separate frontend/backend repos to unified monorepo - Preserve all frontend code and development history as tracked files - Eliminate nested repository complexity for simpler development workflow This creates a proper monorepo structure with frontend and backend coexisting in the same repository for easier development and deployment.
36 lines
830 B
TypeScript
36 lines
830 B
TypeScript
import { useEffect, useRef, useState } from 'react';
|
|
|
|
/**
|
|
* Hook for observing element intersection with viewport for lazy loading, infinite scroll, etc.
|
|
*/
|
|
export function useIntersectionObserver(
|
|
options: IntersectionObserverInit = {}
|
|
): [React.RefObject<Element>, boolean] {
|
|
const [isIntersecting, setIsIntersecting] = useState(false);
|
|
const ref = useRef<Element>(null);
|
|
|
|
useEffect(() => {
|
|
const element = ref.current;
|
|
if (!element) return;
|
|
|
|
const observer = new IntersectionObserver(
|
|
([entry]) => {
|
|
setIsIntersecting(entry.isIntersecting);
|
|
},
|
|
{
|
|
threshold: 0.1,
|
|
rootMargin: '50px',
|
|
...options,
|
|
}
|
|
);
|
|
|
|
observer.observe(element);
|
|
|
|
return () => {
|
|
observer.unobserve(element);
|
|
};
|
|
}, [options]);
|
|
|
|
return [ref, isIntersecting];
|
|
}
|