@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
37 lines (36 loc) • 1.04 kB
JavaScript
import * as React from "react";
import { EventManager } from "../utils/EventManager.js";
import { populateInstance } from "./utils.js";
const isSyntheticEvent = (event) => {
return event.isPropagationStopped !== void 0;
};
const useTreeViewInstanceEvents = ({ instance }) => {
const [eventManager] = React.useState(() => new EventManager());
const publishEvent = React.useCallback(
(...args) => {
const [name, params, event = {}] = args;
event.defaultMuiPrevented = false;
if (isSyntheticEvent(event) && event.isPropagationStopped()) {
return;
}
eventManager.emit(name, params, event);
},
[]
);
const subscribeEvent = React.useCallback(
(event, handler) => {
eventManager.on(event, handler);
return () => {
eventManager.removeListener(event, handler);
};
},
[]
);
populateInstance(instance, {
$$publishEvent: publishEvent,
$$subscribeEvent: subscribeEvent
});
};
export {
useTreeViewInstanceEvents
};