diff --git a/packages/vue-flow/src/composables/useKeyPress.ts b/packages/vue-flow/src/composables/useKeyPress.ts index 02d8150e..8a5ad20d 100644 --- a/packages/vue-flow/src/composables/useKeyPress.ts +++ b/packages/vue-flow/src/composables/useKeyPress.ts @@ -1,43 +1,32 @@ import type { Ref } from 'vue' -import { onKeyDown, onKeyPressed, onKeyUp } from '@vueuse/core' +import type { KeyFilter } from '@vueuse/core' import useWindow from './useWindow' -import type { KeyCode } from '~/types' -import { isInputDOMNode } from '~/utils' -export default (keyCode: Ref, onChange?: (keyPressed: boolean) => void): Ref => { +export default (keyFilter: KeyFilter, onChange?: (keyPressed: boolean) => void): Ref => { const window = useWindow() let isPressed = $ref(false) - watchEffect( - () => { - if (onChange && typeof onChange === 'function') onChange(isPressed) - }, - { flush: 'post' }, - ) + watch($$(isPressed), () => { + if (onChange && typeof onChange === 'function') onChange(isPressed) + }) - onKeyPressed( - (e) => !isInputDOMNode(e) && (e.key === keyCode.value || e.keyCode === keyCode.value), + onKeyStroke( + keyFilter, (e) => { e.preventDefault() isPressed = true }, + { eventName: 'keydown' }, ) - onKeyDown( - (e) => !isInputDOMNode(e) && (e.key === keyCode.value || e.keyCode === keyCode.value), - (e) => { - e.preventDefault() - isPressed = true - }, - ) - - onKeyUp( - (e) => !isInputDOMNode(e) && (e.key === keyCode.value || e.keyCode === keyCode.value), + onKeyStroke( + keyFilter, (e) => { e.preventDefault() isPressed = false }, + { eventName: 'keyup' }, ) if (typeof window.addEventListener !== 'undefined') { diff --git a/packages/vue-flow/src/container/SelectionPane/SelectionPane.vue b/packages/vue-flow/src/container/SelectionPane/SelectionPane.vue index 5a778b59..b17f8e79 100644 --- a/packages/vue-flow/src/container/SelectionPane/SelectionPane.vue +++ b/packages/vue-flow/src/container/SelectionPane/SelectionPane.vue @@ -1,7 +1,6 @@