- LOAD_TREE_PICKER_NODE: ({ id, pickerId }) => {
- const picker = state[pickerId] || createTree();
- const updatedPicker = setNodeValueWith(setPending)(id)(picker);
- return { ...state, [pickerId]: updatedPicker };
- },
- LOAD_TREE_PICKER_NODE_SUCCESS: ({ id, nodes, pickerId }) => {
- const picker = state[pickerId] || createTree();
- const [updatedPicker] = [picker]
- .map(receiveNodes(nodes)(id))
- .map(setNodeValueWith(setLoaded)(id));
- return { ...state, [pickerId]: updatedPicker };
- },
- TOGGLE_TREE_PICKER_NODE_COLLAPSE: ({ id, pickerId }) => {
- const picker = state[pickerId] || createTree();
- const updatedPicker = setNodeValueWith(toggleCollapse)(id)(picker);
- return { ...state, [pickerId]: updatedPicker };
- },
- TOGGLE_TREE_PICKER_NODE_SELECT: ({ id, pickerId }) => {
- const picker = state[pickerId] || createTree();
- const updatedPicker = mapTreeValues(toggleSelect(id))(picker);
- return { ...state, [pickerId]: updatedPicker };
- },
- default: () => state
- });
+ LOAD_TREE_PICKER_NODE: ({ id, pickerId }) =>
+ updateOrCreatePicker(state, pickerId, setNodeStatus(id)(TreeNodeStatus.PENDING)),
+
+ LOAD_TREE_PICKER_NODE_SUCCESS: ({ id, nodes, pickerId }) =>
+ updateOrCreatePicker(state, pickerId, compose(receiveNodes(nodes)(id), setNodeStatus(id)(TreeNodeStatus.LOADED))),
+
+ APPEND_TREE_PICKER_NODE_SUBTREE: ({ id, subtree, pickerId}) =>
+ updateOrCreatePicker(state, pickerId, compose(appendSubtree(id, subtree), setNodeStatus(id)(TreeNodeStatus.LOADED))),
+
+ TOGGLE_TREE_PICKER_NODE_COLLAPSE: ({ id, pickerId }) =>
+ updateOrCreatePicker(state, pickerId, toggleNodeCollapse(id)),
+
+ ACTIVATE_TREE_PICKER_NODE: ({ id, pickerId, relatedTreePickers = [] }) =>
+ pipe(
+ () => relatedTreePickers.reduce(
+ (state, relatedPickerId) => updateOrCreatePicker(state, relatedPickerId, deactivateNode),
+ state
+ ),
+ state => updateOrCreatePicker(state, pickerId, activateNode(id))
+ )(),