(
e: KeyboardEvent,
previewEl: HTMLElement,
state: ReturnType<typeof useStore.getState>,
panel: 'editor' | 'hoverpreview' = 'editor'
)
| 1551 | } |
| 1552 | |
| 1553 | function handlePreviewKey( |
| 1554 | e: KeyboardEvent, |
| 1555 | previewEl: HTMLElement, |
| 1556 | state: ReturnType<typeof useStore.getState>, |
| 1557 | panel: 'editor' | 'hoverpreview' = 'editor' |
| 1558 | ): void { |
| 1559 | const key = e.key |
| 1560 | const overrides = state.keymapOverrides |
| 1561 | const navKeys = new Set([ |
| 1562 | 'ArrowDown', |
| 1563 | 'ArrowUp', |
| 1564 | 'PageDown', |
| 1565 | 'PageUp', |
| 1566 | 'Home', |
| 1567 | 'End' |
| 1568 | ]) |
| 1569 | const wantsHalfPageDown = matchesSequenceToken(e, overrides, 'nav.halfPageDown') |
| 1570 | const wantsHalfPageUp = matchesSequenceToken(e, overrides, 'nav.halfPageUp') |
| 1571 | const wantsContextMenu = |
| 1572 | (matchesSequenceToken(e, overrides, 'nav.contextMenu') || |
| 1573 | wantsNativeContextMenuKey(e)) && |
| 1574 | !!getActiveTabContextMenuTarget(state) |
| 1575 | |
| 1576 | if ( |
| 1577 | navKeys.has(key) || |
| 1578 | wantsHalfPageDown || |
| 1579 | wantsHalfPageUp || |
| 1580 | matchesSequenceToken(e, overrides, 'nav.moveDown') || |
| 1581 | matchesSequenceToken(e, overrides, 'nav.moveUp') || |
| 1582 | matchesSequenceToken(e, overrides, 'nav.jumpBottom') || |
| 1583 | sequenceTokenFromEvent(e) === getSequenceTokens(overrides, 'nav.jumpTop')[0] || |
| 1584 | matchesSequenceToken(e, overrides, 'nav.filter') || |
| 1585 | wantsContextMenu |
| 1586 | ) { |
| 1587 | e.preventDefault() |
| 1588 | e.stopImmediatePropagation() |
| 1589 | } else { |
| 1590 | return |
| 1591 | } |
| 1592 | |
| 1593 | if (state.focusedPanel !== panel) state.setFocusedPanel(panel) |
| 1594 | |
| 1595 | if (matchesSequenceToken(e, overrides, 'nav.moveDown') || key === 'ArrowDown') { |
| 1596 | scrollPreviewBy(previewEl, getPreviewLineStep(previewEl)) |
| 1597 | return |
| 1598 | } |
| 1599 | if (matchesSequenceToken(e, overrides, 'nav.moveUp') || key === 'ArrowUp') { |
| 1600 | scrollPreviewBy(previewEl, -getPreviewLineStep(previewEl)) |
| 1601 | return |
| 1602 | } |
| 1603 | if (key === 'PageDown' || wantsHalfPageDown) { |
| 1604 | scrollPreviewBy(previewEl, getPreviewPageStep(previewEl)) |
| 1605 | return |
| 1606 | } |
| 1607 | if (key === 'PageUp' || wantsHalfPageUp) { |
| 1608 | scrollPreviewBy(previewEl, -getPreviewPageStep(previewEl)) |
| 1609 | return |
| 1610 | } |
no test coverage detected