feat(elements): multiselect
This commit is contained in:
@@ -7,15 +7,20 @@ import { Elements } from '../types';
|
||||
|
||||
interface HookParams {
|
||||
deleteKeyCode: number;
|
||||
multiSelectionKeyCode: number;
|
||||
onElementsRemove?: (elements: Elements) => void;
|
||||
}
|
||||
|
||||
export default ({ deleteKeyCode, onElementsRemove }: HookParams): void => {
|
||||
export default ({ deleteKeyCode, multiSelectionKeyCode, onElementsRemove }: HookParams): void => {
|
||||
const selectedElements = useStoreState((state) => state.selectedElements);
|
||||
const edges = useStoreState((state) => state.edges);
|
||||
|
||||
const unsetNodesSelection = useStoreActions((actions) => actions.unsetNodesSelection);
|
||||
const setMultiSelectionActive = useStoreActions((actions) => actions.setMultiSelectionActive);
|
||||
const resetSelectedElements = useStoreActions((actions) => actions.resetSelectedElements);
|
||||
|
||||
const deleteKeyPressed = useKeyPress(deleteKeyCode);
|
||||
const multiSelectionKeyPressed = useKeyPress(multiSelectionKeyCode);
|
||||
|
||||
useEffect(() => {
|
||||
if (onElementsRemove && deleteKeyPressed && selectedElements) {
|
||||
@@ -30,6 +35,11 @@ export default ({ deleteKeyCode, onElementsRemove }: HookParams): void => {
|
||||
|
||||
onElementsRemove(elementsToRemove);
|
||||
unsetNodesSelection();
|
||||
resetSelectedElements();
|
||||
}
|
||||
}, [deleteKeyPressed]);
|
||||
|
||||
useEffect(() => {
|
||||
setMultiSelectionActive(multiSelectionKeyPressed);
|
||||
}, [multiSelectionKeyPressed])
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user