Skip to content

Commit

Permalink
Update utils.ts
Browse files Browse the repository at this point in the history
  • Loading branch information
dgreene1 authored Jun 5, 2023
1 parent 256806f commit aafaa32
Showing 1 changed file with 13 additions and 8 deletions.
21 changes: 13 additions & 8 deletions src/TreeView/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -284,24 +284,29 @@ export const getAccessibleRange = ({
return range;
};

interface ITreeNode {
/**
* This is to help consumers to understand that we do not currently support metadata that is a nested object. If this is needed, make an issue in Github
*/
export type IFlatMetadata = Record<string, string | number | undefined | null>;

interface ITreeNode<M extends IFlatMetadata> {
id?: NodeId;
name: string;
children?: ITreeNode[];
metadata?: any;
children?: ITreeNode<M>[];
metadata?: M;
}

export const flattenTree = function(tree: ITreeNode): INode[] {
export const flattenTree = <M extends IFlatMetadata>(tree: ITreeNode<M>): INode<M>[] => {
let internalCount = 0;
const flattenedTree: INode[] = [];
const flattenedTree: INode<M>[] = [];

const flattenTreeHelper = function(tree: ITreeNode, parent: NodeId | null) {
const node: INode = {
const flattenTreeHelper = (tree: ITreeNode<M>, parent: NodeId | null) => {
const node: INode<M> = {
id: tree.id || internalCount,
name: tree.name,
children: [],
parent,
...tree.metadata && { metadata: {...tree.metadata }}
metadata: tree.metadata ? { ...tree.metadata} : undefined
};

if (flattenedTree.find((x) => x.id === node.id)) {
Expand Down

0 comments on commit aafaa32

Please sign in to comment.