12345678910111213141516171819202122232425262728293031323334 |
- /* @flow */
- import config from 'core/config'
- import { hyphenate } from 'shared/util'
- function isKeyNotMatch<T> (expect: T | Array<T>, 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<number>,
- eventKeyName?: string,
- builtInKeyName?: string | Array<string>
- ): ?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
- }
- }
|