Files
med-notes/.pnpm-store/v10/files/42/a0e5b93300fc53dc18f16f96aa1360734532415e208f8e699ebd35e0e7612b0451422e1bd55b90a6756452d5c05830df97e99b8038579a1ca4eb1353000087
2025-05-09 05:30:08 +02:00

56 lines
1.6 KiB
Plaintext

import * as React from "react";
function useStableCallback(fn) {
const fnRef = React.useRef(fn);
fnRef.current = fn;
const ref = React.useRef((...args) => fnRef.current(...args));
return ref.current;
}
const useLayoutEffect = typeof window !== "undefined" ? React.useLayoutEffect : React.useEffect;
function usePrevious(value) {
const ref = React.useRef({
value,
prev: null
});
const current = ref.current.value;
if (value !== current) {
ref.current = {
value,
prev: current
};
}
return ref.current.prev;
}
function useIntersectionObserver(ref, callback, intersectionObserverOptions = {}, options = {}) {
const isIntersectionObserverAvailable = React.useRef(
typeof IntersectionObserver === "function"
);
const observerRef = React.useRef(null);
React.useEffect(() => {
if (!ref.current || !isIntersectionObserverAvailable.current || options.disabled) {
return;
}
observerRef.current = new IntersectionObserver(([entry]) => {
callback(entry);
}, intersectionObserverOptions);
observerRef.current.observe(ref.current);
return () => {
var _a;
(_a = observerRef.current) == null ? void 0 : _a.disconnect();
};
}, [callback, intersectionObserverOptions, options.disabled, ref]);
return observerRef.current;
}
function useForwardedRef(ref) {
const innerRef = React.useRef(null);
React.useImperativeHandle(ref, () => innerRef.current, []);
return innerRef;
}
export {
useForwardedRef,
useIntersectionObserver,
useLayoutEffect,
usePrevious,
useStableCallback
};
//# sourceMappingURL=utils.js.map