UNPKG

1.02 kBJavaScriptView Raw
1/* @flow */
2
3import config from 'core/config'
4import { hyphenate } from 'shared/util'
5
6function 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 * Runtime helper for checking keyCodes from config.
16 * exposed as Vue.prototype._k
17 * passing in eventKeyName as last argument separately for backwards compat
18 */
19export 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}