UNPKG

rsuite

Version:

A suite of react components

80 lines (79 loc) 2.05 kB
'use client'; import { createContext, useContext, useRef, useCallback } from 'react'; const defaultItemDataKeys = { labelKey: 'label', valueKey: 'value', childrenKey: 'children', virtualized: false }; const TreeContext = /*#__PURE__*/createContext({ props: defaultItemDataKeys }); export const TreeProvider = TreeContext.Provider; export const useRegisterTreeMethods = () => { const { register } = useContext(TreeContext); return register; }; export const useTreeCustomRenderer = () => { const { props: { renderTreeIcon, renderTreeNode } } = useContext(TreeContext); return { renderTreeIcon, renderTreeNode }; }; export const useItemDataKeys = () => { const { props: { labelKey, valueKey, childrenKey } = defaultItemDataKeys } = useContext(TreeContext); return { labelKey, valueKey, childrenKey }; }; export const useTreeContextProps = () => { const { props } = useContext(TreeContext); return props; }; /** * Custom hook that provides imperative handle for the Tree component. */ export const useTreeImperativeHandle = () => { const focusFirstNodeRef = useRef(null); const focusActiveNodeRef = useRef(null); const register = useCallback(({ focusTreeFirstNode, focusTreeActiveNode }) => { focusFirstNodeRef.current = focusTreeFirstNode; focusActiveNodeRef.current = focusTreeActiveNode; return () => { focusFirstNodeRef.current = null; focusActiveNodeRef.current = null; }; }, []); return { register, focusFirstNode: () => { var _focusFirstNodeRef$cu; return (_focusFirstNodeRef$cu = focusFirstNodeRef.current) === null || _focusFirstNodeRef$cu === void 0 ? void 0 : _focusFirstNodeRef$cu.call(focusFirstNodeRef); }, focusActiveNode: () => { var _focusActiveNodeRef$c; return (_focusActiveNodeRef$c = focusActiveNodeRef.current) === null || _focusActiveNodeRef$c === void 0 ? void 0 : _focusActiveNodeRef$c.call(focusActiveNodeRef); } }; };