1 |
|
2 |
|
3 | import config from 'core/config'
|
4 | import { hyphenate } from 'shared/util'
|
5 |
|
6 | function isKeyNotMatch<T> (expect: T | Array<T>, actual: T): boolean {
|
7 | if (Array.isArray(expect)) {
|
8 | return expect.indexOf(actual) === -1
|
9 | } else {
|
10 | return expect !== actual
|
11 | }
|
12 | }
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 | export function checkKeyCodes (
|
20 | eventKeyCode: number,
|
21 | key: string,
|
22 | builtInKeyCode?: number | Array<number>,
|
23 | eventKeyName?: string,
|
24 | builtInKeyName?: string | Array<string>
|
25 | ): ?boolean {
|
26 | const mappedKeyCode = config.keyCodes[key] || builtInKeyCode
|
27 | if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
|
28 | return isKeyNotMatch(builtInKeyName, eventKeyName)
|
29 | } else if (mappedKeyCode) {
|
30 | return isKeyNotMatch(mappedKeyCode, eventKeyCode)
|
31 | } else if (eventKeyName) {
|
32 | return hyphenate(eventKeyName) !== key
|
33 | }
|
34 | return eventKeyCode === undefined
|
35 | }
|