9d3ab2d7da2fd03a34d902d2a77abbac8dd115e36bf803f21fe70522f38f2cf4ca6265207ded92536f642e18b9a559116107da7d139b6c0725a1becc6ab620 985 B

12345678910111213141516171819202122232425262728293031323334
  1. /* @flow */
  2. import config from 'core/config'
  3. import { hyphenate } from 'shared/util'
  4. function isKeyNotMatch<T> (expect: T | Array<T>, actual: T): boolean {
  5. if (Array.isArray(expect)) {
  6. return expect.indexOf(actual) === -1
  7. } else {
  8. return expect !== actual
  9. }
  10. }
  11. /**
  12. * Runtime helper for checking keyCodes from config.
  13. * exposed as Vue.prototype._k
  14. * passing in eventKeyName as last argument separately for backwards compat
  15. */
  16. export function checkKeyCodes (
  17. eventKeyCode: number,
  18. key: string,
  19. builtInKeyCode?: number | Array<number>,
  20. eventKeyName?: string,
  21. builtInKeyName?: string | Array<string>
  22. ): ?boolean {
  23. const mappedKeyCode = config.keyCodes[key] || builtInKeyCode
  24. if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
  25. return isKeyNotMatch(builtInKeyName, eventKeyName)
  26. } else if (mappedKeyCode) {
  27. return isKeyNotMatch(mappedKeyCode, eventKeyCode)
  28. } else if (eventKeyName) {
  29. return hyphenate(eventKeyName) !== key
  30. }
  31. }