Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | 43x 43x 43x 43x 2x 2x 1x 7x 3x 3x 3x 3x 3x 3x 12x 43x 13x 30x 34x 34x 16x 43x 43x 8x 8x 8x 8x 3x 3x 12x 1x 8x 26x 26x 34x 15x 11x 11x 11x 7x 1x 10x 6x 6x 6x 6x 5x 6x 3x | import { getCurrentInstance, DeprecationTypes, LegacyConfig, compatUtils, ComponentInternalInstance } from '@vue/runtime-core' import { hyphenate, isArray } from '@vue/shared' const systemModifiers = ['ctrl', 'shift', 'alt', 'meta'] type KeyedEvent = KeyboardEvent | MouseEvent | TouchEvent const modifierGuards: Record< string, (e: Event, modifiers: string[]) => void | boolean > = { stop: e => e.stopPropagation(), prevent: e => e.preventDefault(), self: e => e.target !== e.currentTarget, ctrl: e => !(e as KeyedEvent).ctrlKey, shift: e => !(e as KeyedEvent).shiftKey, alt: e => !(e as KeyedEvent).altKey, meta: e => !(e as KeyedEvent).metaKey, left: e => 'button' in e && (e as MouseEvent).button !== 0, middle: e => 'button' in e && (e as MouseEvent).button !== 1, right: e => 'button' in e && (e as MouseEvent).button !== 2, exact: (e, modifiers) => systemModifiers.some(m => (e as any)[`${m}Key`] && !modifiers.includes(m)) } /** * @private */ export const withModifiers = (fn: Function, modifiers: string[]) => { return (event: Event, ...args: unknown[]) => { for (let i = 0; i < modifiers.length; i++) { const guard = modifierGuards[modifiers[i]] if (guard && guard(event, modifiers)) return } return fn(event, ...args) } } // Kept for 2.x compat. // Note: IE11 compat for `spacebar` and `del` is removed for now. const keyNames: Record<string, string | string[]> = { esc: 'escape', space: ' ', up: 'arrow-up', left: 'arrow-left', right: 'arrow-right', down: 'arrow-down', delete: 'backspace' } /** * @private */ export const withKeys = (fn: Function, modifiers: string[]) => { let globalKeyCodes: LegacyConfig['keyCodes'] let instance: ComponentInternalInstance | null = null if (__COMPAT__) { instance = getCurrentInstance() if ( compatUtils.isCompatEnabled(DeprecationTypes.CONFIG_KEY_CODES, instance) ) { if (instance) { globalKeyCodes = (instance.appContext.config as LegacyConfig).keyCodes } } if (__DEV__ && modifiers.some(m => /^\d+$/.test(m))) { compatUtils.warnDeprecation( DeprecationTypes.V_ON_KEYCODE_MODIFIER, instance ) } } return (event: KeyboardEvent) => { Iif (!('key' in event)) { return } const eventKey = hyphenate(event.key) if (modifiers.some(k => k === eventKey || keyNames[k] === eventKey)) { return fn(event) } if (__COMPAT__) { const keyCode = String(event.keyCode) if ( compatUtils.isCompatEnabled( DeprecationTypes.V_ON_KEYCODE_MODIFIER, instance ) && modifiers.some(mod => mod == keyCode) ) { return fn(event) } if (globalKeyCodes) { for (const mod of modifiers) { const codes = globalKeyCodes[mod] if (codes) { const matches = isArray(codes) ? codes.some(code => String(code) === keyCode) : String(codes) === keyCode if (matches) { return fn(event) } } } } } } } |