@shopify/polaris
Version:
Shopify’s product component library
37 lines (31 loc) • 920 B
JavaScript
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 };