Spaces:
Paused
Paused
OpenAiChatbot / frontend /node_modules /@testing-library /user-event /dist /keyboard /plugins /functional.js
| ; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.preKeyupBehavior = exports.preKeydownBehavior = exports.postKeyupBehavior = exports.keyupBehavior = exports.keypressBehavior = exports.keydownBehavior = void 0; | |
| var _dom = require("@testing-library/dom"); | |
| var _utils = require("../../utils"); | |
| var _getEventProps = require("../getEventProps"); | |
| var _shared = require("../shared"); | |
| /** | |
| * This file should contain behavior for functional keys as described here: | |
| * https://w3c.github.io/uievents-code/#key-alphanumeric-functional | |
| */ | |
| const modifierKeys = { | |
| Alt: 'alt', | |
| Control: 'ctrl', | |
| Shift: 'shift', | |
| Meta: 'meta' | |
| }; | |
| const preKeydownBehavior = [// modifierKeys switch on the modifier BEFORE the keydown event | |
| ...Object.entries(modifierKeys).map(([key, modKey]) => ({ | |
| matches: keyDef => keyDef.key === key, | |
| handle: (keyDef, element, options, state) => { | |
| state.modifiers[modKey] = true; | |
| } | |
| })), // AltGraph produces an extra keydown for Control | |
| // The modifier does not change | |
| { | |
| matches: keyDef => keyDef.key === 'AltGraph', | |
| handle: (keyDef, element, options, state) => { | |
| var _options$keyboardMap$; | |
| const ctrlKeyDef = (_options$keyboardMap$ = options.keyboardMap.find(k => k.key === 'Control')) != null ? _options$keyboardMap$ : | |
| /* istanbul ignore next */ | |
| { | |
| key: 'Control', | |
| code: 'Control' | |
| }; | |
| _dom.fireEvent.keyDown(element, (0, _getEventProps.getKeyEventProps)(ctrlKeyDef, state)); | |
| } | |
| }]; | |
| exports.preKeydownBehavior = preKeydownBehavior; | |
| const keydownBehavior = [{ | |
| matches: keyDef => keyDef.key === 'CapsLock', | |
| handle: (keyDef, element, options, state) => { | |
| state.modifiers.caps = !state.modifiers.caps; | |
| } | |
| }, { | |
| matches: (keyDef, element) => keyDef.key === 'Backspace' && (0, _utils.isEditable)(element) && !(0, _utils.isCursorAtStart)(element), | |
| handle: (keyDef, element, options, state) => { | |
| const { | |
| newValue, | |
| newSelectionStart | |
| } = (0, _utils.calculateNewValue)('', element, state.carryValue, undefined, 'backward'); | |
| (0, _shared.fireInputEvent)(element, { | |
| newValue, | |
| newSelectionStart, | |
| eventOverrides: { | |
| inputType: 'deleteContentBackward' | |
| } | |
| }); | |
| (0, _shared.carryValue)(element, state, newValue); | |
| } | |
| }]; | |
| exports.keydownBehavior = keydownBehavior; | |
| const keypressBehavior = [{ | |
| matches: (keyDef, element) => keyDef.key === 'Enter' && (0, _utils.isElementType)(element, 'input') && ['checkbox', 'radio'].includes(element.type), | |
| handle: (keyDef, element) => { | |
| const form = element.form; | |
| if ((0, _utils.hasFormSubmit)(form)) { | |
| _dom.fireEvent.submit(form); | |
| } | |
| } | |
| }, { | |
| matches: (keyDef, element) => keyDef.key === 'Enter' && ((0, _utils.isClickableInput)(element) || // Links with href defined should handle Enter the same as a click | |
| (0, _utils.isElementType)(element, 'a') && Boolean(element.href)), | |
| handle: (keyDef, element, options, state) => { | |
| _dom.fireEvent.click(element, (0, _getEventProps.getMouseEventProps)(state)); | |
| } | |
| }, { | |
| matches: (keyDef, element) => keyDef.key === 'Enter' && (0, _utils.isElementType)(element, 'input'), | |
| handle: (keyDef, element) => { | |
| const form = element.form; | |
| if (form && (form.querySelectorAll('input').length === 1 || (0, _utils.hasFormSubmit)(form))) { | |
| _dom.fireEvent.submit(form); | |
| } | |
| } | |
| }]; | |
| exports.keypressBehavior = keypressBehavior; | |
| const preKeyupBehavior = [// modifierKeys switch off the modifier BEFORE the keyup event | |
| ...Object.entries(modifierKeys).map(([key, modKey]) => ({ | |
| matches: keyDef => keyDef.key === key, | |
| handle: (keyDef, element, options, state) => { | |
| state.modifiers[modKey] = false; | |
| } | |
| }))]; | |
| exports.preKeyupBehavior = preKeyupBehavior; | |
| const keyupBehavior = [{ | |
| matches: (keyDef, element) => keyDef.key === ' ' && (0, _utils.isClickableInput)(element), | |
| handle: (keyDef, element, options, state) => { | |
| _dom.fireEvent.click(element, (0, _getEventProps.getMouseEventProps)(state)); | |
| } | |
| }]; | |
| exports.keyupBehavior = keyupBehavior; | |
| const postKeyupBehavior = [// AltGraph produces an extra keyup for Control | |
| // The modifier does not change | |
| { | |
| matches: keyDef => keyDef.key === 'AltGraph', | |
| handle: (keyDef, element, options, state) => { | |
| var _options$keyboardMap$2; | |
| const ctrlKeyDef = (_options$keyboardMap$2 = options.keyboardMap.find(k => k.key === 'Control')) != null ? _options$keyboardMap$2 : | |
| /* istanbul ignore next */ | |
| { | |
| key: 'Control', | |
| code: 'Control' | |
| }; | |
| _dom.fireEvent.keyUp(element, (0, _getEventProps.getKeyEventProps)(ctrlKeyDef, state)); | |
| } | |
| }]; | |
| exports.postKeyupBehavior = postKeyupBehavior; |