UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

92 lines (91 loc) 2.71 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const React = require("react"); const utils = require("@mui/material/utils"); const corePlugins = require("../corePlugins.cjs"); const TreeViewProvider = require("../TreeViewProvider.cjs"); const useTreeViewModels = require("./useTreeViewModels.cjs"); function _interopNamespace(e) { if (e && e.__esModule) return e; const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } }); if (e) { for (const k in e) { if (k !== "default") { const d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: () => e[k] }); } } } n.default = e; return Object.freeze(n); } const React__namespace = /* @__PURE__ */ _interopNamespace(React); const useTreeView = (inParams) => { const plugins = [...corePlugins.TREE_VIEW_CORE_PLUGINS, ...inParams.plugins]; const params = plugins.reduce((acc, plugin) => { if (plugin.getDefaultizedParams) { return plugin.getDefaultizedParams(acc); } return acc; }, inParams); const models = useTreeViewModels.useTreeViewModels( plugins, params ); const instanceRef = React__namespace.useRef( {} ); const instance = instanceRef.current; const innerRootRef = React__namespace.useRef(null); const handleRootRef = utils.useForkRef(innerRootRef, inParams.rootRef); const [state, setState] = React__namespace.useState(() => { const temp = {}; plugins.forEach((plugin) => { if (plugin.getInitialState) { Object.assign( temp, plugin.getInitialState( params ) ); } }); return temp; }); const rootPropsGetters = []; let contextValue = TreeViewProvider.DEFAULT_TREE_VIEW_CONTEXT_VALUE; const runPlugin = (plugin) => { const pluginResponse = plugin({ instance, params, state, setState, rootRef: innerRootRef, models }) || {}; if (pluginResponse.getRootProps) { rootPropsGetters.push(pluginResponse.getRootProps); } if (pluginResponse.contextValue) { contextValue = pluginResponse.contextValue; } }; plugins.forEach(runPlugin); const getRootProps = (otherHandlers = {}) => { const rootProps = { role: "tree", tabIndex: 0, ...otherHandlers, ref: handleRootRef }; rootPropsGetters.forEach((rootPropsGetter) => { Object.assign(rootProps, rootPropsGetter(otherHandlers)); }); return rootProps; }; return { getRootProps, rootRef: handleRootRef, contextValue }; }; exports.useTreeView = useTreeView;