/* @flow */ import config from 'core/config' import { hyphenate } from 'shared/util' function isKeyNotMatch (expect: T | Array, actual: T): boolean { if (Array.isArray(expect)) { return expect.indexOf(actual) === -1 } else { return expect !== actual } } /** * Runtime helper for checking keyCodes from config. * exposed as Vue.prototype._k * passing in eventKeyName as last argument separately for backwards compat */ export function checkKeyCodes ( eventKeyCode: number, key: string, builtInKeyCode?: number | Array, eventKeyName?: string, builtInKeyName?: string | Array ): ?boolean { const mappedKeyCode = config.keyCodes[key] || builtInKeyCode if (builtInKeyName && eventKeyName && !config.keyCodes[key]) { return isKeyNotMatch(builtInKeyName, eventKeyName) } else if (mappedKeyCode) { return isKeyNotMatch(mappedKeyCode, eventKeyCode) } else if (eventKeyName) { return hyphenate(eventKeyName) !== key } return eventKeyCode === undefined }