UNPKG

@shopify/polaris

Version:

Shopify’s product component library

37 lines (31 loc) 920 B
import { Key } from '../../types.js'; import { useState, useEffect } from 'react'; var KONAMI_CODE = [Key.UpArrow, Key.UpArrow, Key.DownArrow, Key.DownArrow, Key.LeftArrow, Key.RightArrow, Key.LeftArrow, Key.RightArrow, Key.KeyB, Key.KeyA]; function KonamiCode({ handler }) { var keyEvent = 'keydown'; var [position, setPosition] = useState(0); var handleKeyEvent = event => { var key = event.keyCode; var requiredKey = KONAMI_CODE[position]; if (key === requiredKey) { if (position === KONAMI_CODE.length - 1) { handler(event); setPosition(0); } else { setPosition(position + 1); } } else { setPosition(0); } }; useEffect(() => { document.addEventListener(keyEvent, handleKeyEvent); return () => { document.removeEventListener(keyEvent, handleKeyEvent); }; }); return null; } export { KONAMI_CODE, KonamiCode };