@hitachivantara/uikit-react-core
Version:
UI Kit Core React components.
32 lines (31 loc) • 1.21 kB
JavaScript
import { populateInstance } from "./utils.js";
import { EventManager } from "../utils/EventManager.js";
import * as React from "react";
//#region src/TreeView/internals/hooks/useTreeViewInstanceEvents.ts
var isSyntheticEvent = (event) => {
return event.isPropagationStopped !== void 0;
};
/**
* Plugin responsible for the registration of the nodes defined as JSX children of the TreeView.
* When we will have both a SimpleTreeView using JSX children and a TreeView using a data prop,
* this plugin will only be used by SimpleTreeView.
*/
var useTreeViewInstanceEvents = ({ instance }) => {
const [eventManager] = React.useState(() => new EventManager());
populateInstance(instance, {
$$publishEvent: React.useCallback((...args) => {
const [name, params, event = {}] = args;
event.defaultMuiPrevented = false;
if (isSyntheticEvent(event) && event.isPropagationStopped()) return;
eventManager.emit(name, params, event);
}, [eventManager]),
$$subscribeEvent: React.useCallback((event, handler) => {
eventManager.on(event, handler);
return () => {
eventManager.removeListener(event, handler);
};
}, [eventManager])
});
};
//#endregion
export { useTreeViewInstanceEvents };