Skip to content

Commit 24efe46

Browse files
committed
refactor: drop registrar
1 parent 252db1c commit 24efe46

File tree

1 file changed

+28
-29
lines changed
  • packages/0/src/composables/useKeydown

1 file changed

+28
-29
lines changed

packages/0/src/composables/useKeydown/index.ts

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,18 @@ const handlerMap: Map<ID, KeyHandler> = new Map()
3434

3535
function startGlobalListener () {
3636
if (typeof document === 'undefined') return
37-
38-
if (!globalListener) {
39-
globalListener = (event: KeyboardEvent) => {
40-
for (const h of handlerMap.values()) {
41-
if (h.key === event.key) {
42-
if (h.preventDefault) event.preventDefault()
43-
if (h.stopPropagation) event.stopPropagation()
44-
h.handler(event)
45-
}
37+
if (globalListener) return
38+
39+
globalListener = (event: KeyboardEvent) => {
40+
for (const h of handlerMap.values()) {
41+
if (h.key === event.key) {
42+
if (h.preventDefault) event.preventDefault()
43+
if (h.stopPropagation) event.stopPropagation()
44+
h.handler(event)
4645
}
4746
}
48-
document.addEventListener('keydown', globalListener)
4947
}
48+
document.addEventListener('keydown', globalListener)
5049
}
5150

5251
function stopGlobalListener () {
@@ -74,34 +73,34 @@ export function useKeydown (handlers: KeyHandler[] | KeyHandler, options: UseKey
7473
const isListening = ref(false)
7574

7675
function startListening () {
77-
if (!isListening.value) {
78-
const ids = Array.from({ length: keyHandlers.length }, genId)
76+
if (isListening.value) return
7977

80-
for (const [index, id] of ids.entries()) {
81-
handlerMap.set(id, keyHandlers[index]!)
82-
}
78+
const ids = Array.from({ length: keyHandlers.length }, genId)
8379

84-
handlerIds.value = ids
80+
for (const [index, id] of ids.entries()) {
81+
handlerMap.set(id, keyHandlers[index]!)
82+
}
8583

86-
if (handlerMap.size > 0) {
87-
startGlobalListener()
88-
}
84+
handlerIds.value = ids
8985

90-
isListening.value = true
86+
if (handlerMap.size > 0) {
87+
startGlobalListener()
9188
}
89+
90+
isListening.value = true
9291
}
9392

9493
function stopListening () {
95-
if (isListening.value) {
96-
for (const id of handlerIds.value) {
97-
handlerMap.delete(id)
98-
}
99-
handlerIds.value = []
100-
isListening.value = false
94+
if (!isListening.value) return
10195

102-
if (handlerMap.size === 0) {
103-
stopGlobalListener()
104-
}
96+
for (const id of handlerIds.value) {
97+
handlerMap.delete(id)
98+
}
99+
handlerIds.value = []
100+
isListening.value = false
101+
102+
if (handlerMap.size === 0) {
103+
stopGlobalListener()
105104
}
106105
}
107106

0 commit comments

Comments
 (0)