@carbon/react
Version:
React components for the Carbon Design System
52 lines (50 loc) • 1.57 kB
JavaScript
/**
* Copyright IBM Corp. 2016, 2026
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
require("../_virtual/_rolldown/runtime.js");
let react = require("react");
//#region src/internal/useEvent.ts
/**
* Copyright IBM Corp. 2016, 2025
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
const useEvent = (elementOrRef, eventName, callback) => {
const savedCallback = (0, react.useRef)(null);
(0, react.useEffect)(() => {
savedCallback.current = callback;
}, [callback]);
(0, react.useEffect)(() => {
const element = "current" in elementOrRef ? elementOrRef.current : elementOrRef;
if (!element) return;
const handler = (event) => {
if (savedCallback.current) savedCallback.current(event);
};
element.addEventListener(eventName, handler);
return () => {
element.removeEventListener(eventName, handler);
};
}, [elementOrRef, eventName]);
};
const useWindowEvent = (eventName, callback) => {
const savedCallback = (0, react.useRef)(null);
(0, react.useEffect)(() => {
savedCallback.current = callback;
}, [callback]);
(0, react.useEffect)(() => {
const handler = (event) => {
if (savedCallback.current) savedCallback.current(event);
};
window.addEventListener(eventName, handler);
return () => {
window.removeEventListener(eventName, handler);
};
}, [eventName]);
};
//#endregion
exports.useEvent = useEvent;
exports.useWindowEvent = useWindowEvent;