@clerk/shared
Version:
Internal package utils used by the Clerk SDKs
36 lines (34 loc) • 812 B
JavaScript
let react = require("react");
//#region src/react/stripe-react/utils.ts
const usePrevious = (value) => {
const ref = (0, react.useRef)(value);
(0, react.useEffect)(() => {
ref.current = value;
}, [value]);
return ref.current;
};
const useAttachEvent = (element, event, cb) => {
const cbDefined = !!cb;
const cbRef = (0, react.useRef)(cb);
(0, react.useEffect)(() => {
cbRef.current = cb;
}, [cb]);
(0, react.useEffect)(() => {
if (!cbDefined || !element) return () => {};
const decoratedCb = (...args) => {
if (cbRef.current) cbRef.current(...args);
};
element.on(event, decoratedCb);
return () => {
element.off(event, decoratedCb);
};
}, [
cbDefined,
event,
element,
cbRef
]);
};
//#endregion
exports.useAttachEvent = useAttachEvent;
exports.usePrevious = usePrevious;