UNPKG

@hitachivantara/uikit-react-core

Version:
32 lines (31 loc) 1.21 kB
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 };