toggleItemSelection: Callback<T>;
}
-const flatTree = (itemsIdMap: Map<string, any>, depth: number, items?: any): [] => {
+const flatTree = <T>(itemsIdMap: Map<string, TreeItem<T>>, depth: number, items?: TreeItem<T>[]): TreeItem<T>[] => {
return items ? items
- .map((item: any) => addToItemsIdMap(item, itemsIdMap))
- .reduce((prev: Array<any>, next: any) => {
+ .map((item: TreeItem<T>) => addToItemsIdMap(item, itemsIdMap))
+ .reduce((acc: Array<TreeItem<T>>, next: TreeItem<T>) => {
const { items } = next;
- prev.push({ ...next, depth });
- prev.push(...(next.open ? flatTree(itemsIdMap, depth + 1, items) : []));
- return prev;
- }, []) : [];
+ acc.push({ ...next, depth });
+ acc.push(...(next.open ? flatTree(itemsIdMap, depth + 1, items) : []));
+ return acc;
+ }, [] as TreeItem<T>[]) : [];
};
-const addToItemsIdMap = <T>(item: TreeItem<T>, itemsIdMap: Map<string, TreeItem<T>>) => {
+const addToItemsIdMap = <T>(item: TreeItem<T>, itemsIdMap: Map<string, TreeItem<T>>): TreeItem<T> => {
itemsIdMap[item.id] = item;
return item;
};
const mapStateToProps =
<T>(state: RootState, props: TreePickerProps<T>): Pick<TreeProps<T>, 'items' | 'disableRipple' | 'itemsMap'> => {
const itemsIdMap: Map<string, TreeItem<T>> = new Map();
- const tree = state.treePicker[props.pickerId] || createTree();
+ const tree: Tree<T> = state.treePicker[props.pickerId] || createTree<T>();
return {
disableRipple: true,
items: getNodeChildrenIds('')(tree)
};
};
-const mapDispatchToProps = (_: Dispatch, props: TreePickerProps<any>): Pick<TreeProps<any>, 'onContextMenu' | 'toggleItemOpen' | 'toggleItemActive' | 'toggleItemSelection'> => ({
+const mapDispatchToProps = <T>(_: Dispatch, props: TreePickerProps<T>): Pick<TreeProps<T>, 'onContextMenu' | 'toggleItemOpen' | 'toggleItemActive' | 'toggleItemSelection'> => ({
onContextMenu: (event, item) => props.onContextMenu(event, item, props.pickerId),
toggleItemActive: (event, item) => props.toggleItemActive(event, item, props.pickerId),
toggleItemOpen: (event, item) => props.toggleItemOpen(event, item, props.pickerId),