259a4b8d53de78e1b7d9992ae85b4d69d5fe40ca
[arvados-workbench2.git] / src / store / workflow-tree-picker / workflow-tree-picker.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { Tree } from "~/models/tree";
6 import { TreeItemStatus } from "~/components/tree/tree";
7
8 export type TreePicker = { [key: string]: Tree<TreePickerNode> };
9
10 export interface TreePickerNode<Value = any> {
11     nodeId: string;
12     value: Value;
13     selected: boolean;
14     collapsed: boolean;
15     status: TreeItemStatus;
16 }
17
18 export const createTreePickerNode = (data: { nodeId: string, value: any }) => ({
19     ...data,
20     selected: false,
21     collapsed: true,
22     status: TreeItemStatus.INITIAL
23 });
24
25 export const getTreePicker = <Value = {}>(id: string) => (state: TreePicker): Tree<TreePickerNode<Value>> | undefined => state[id];