UNPKG

@1771technologies/lytenyte-pro

Version:

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

25 lines (24 loc) 924 B
import { useMemo } from "react"; import { useTreeViewPaths } from "../tree-view/hooks/use-tree-view-paths.js"; export function useColumnManager({ grid, query }) { const columns = grid.state.columns.useValue(); const filteredColumns = useMemo(() => { if (!query) return columns; return columns.filter((c) => (c.name ?? c.id).toLowerCase().includes(query.toLowerCase())); }, [columns, query]); const items = useTreeViewPaths(filteredColumns, true); const branchLookup = useMemo(() => { const stack = [...items]; const lookup = {}; while (stack.length) { const item = stack.pop(); if (item.kind === "leaf") continue; lookup[item.data.idOccurrence] = item; stack.push(...item.children.values()); } return lookup; }, [items]); return { items, lookup: branchLookup }; }