UNPKG

@1771technologies/lytenyte-pro

Version:

Blazingly fast headless React data grid with 100s of features.

22 lines (21 loc) 942 B
import { useControlled, useEvent } from "@1771technologies/lytenyte-core/internal"; import { useCallback } from "react"; export function useControlledState({ onRowGroupExpansionChange, rowGroupDefaultExpansion = false, rowGroupExpansions, }) { const [expansions, setExpansions] = useControlled({ controlled: rowGroupExpansions, default: {}, }); const onExpansionsChange = useEvent((delta) => { setExpansions({ ...expansions, ...delta }); onRowGroupExpansionChange?.({ ...expansions, ...delta }); }); const expandedFn = useCallback((id, depth) => { const s = expansions[id]; if (s != null) return s; if (typeof rowGroupDefaultExpansion === "boolean") return rowGroupDefaultExpansion; return depth <= rowGroupDefaultExpansion; }, [expansions, rowGroupDefaultExpansion]); return { expansions, onExpansionsChange, expandedFn }; }