// modules are defined as an array // [ module function, map of requires ] // // map of requires is short require name -> numeric require // // anything defined in a previous bundle is accessed via the // orig method which is the require for previous bundles // eslint-disable-next-line no-global-assign parcelRequire = (function (modules, cache, entry, globalName) { // Save the require from previous bundle to this closure if any var previousRequire = typeof parcelRequire === 'function' && parcelRequire; var nodeRequire = typeof require === 'function' && require; function newRequire(name, jumped) { if (!cache[name]) { if (!modules[name]) { // if we cannot find the module within our internal map or // cache jump to the current global require ie. the last bundle // that was added to the page. var currentRequire = typeof parcelRequire === 'function' && parcelRequire; if (!jumped && currentRequire) { return currentRequire(name, true); } // If there are other bundles on this page the require from the // previous one is saved to 'previousRequire'. Repeat this as // many times as there are bundles until the module is found or // we exhaust the require chain. if (previousRequire) { return previousRequire(name, true); } // Try the node require function if it exists. if (nodeRequire && typeof name === 'string') { return nodeRequire(name); } var err = new Error('Cannot find module \'' + name + '\''); err.code = 'MODULE_NOT_FOUND'; throw err; } localRequire.resolve = resolve; localRequire.cache = {}; var module = cache[name] = new newRequire.Module(name); modules[name][0].call(module.exports, localRequire, module, module.exports, this); } return cache[name].exports; function localRequire(x){ return newRequire(localRequire.resolve(x)); } function resolve(x){ return modules[name][1][x] || x; } } function Module(moduleName) { this.id = moduleName; this.bundle = newRequire; this.exports = {}; } newRequire.isParcelRequire = true; newRequire.Module = Module; newRequire.modules = modules; newRequire.cache = cache; newRequire.parent = previousRequire; newRequire.register = function (id, exports) { modules[id] = [function (require, module) { module.exports = exports; }, {}]; }; for (var i = 0; i < entry.length; i++) { newRequire(entry[i]); } if (entry.length) { // Expose entry point to Node, AMD or browser globals // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js var mainExports = newRequire(entry[entry.length - 1]); // CommonJS if (typeof exports === "object" && typeof module !== "undefined") { module.exports = mainExports; // RequireJS } else if (typeof define === "function" && define.amd) { define(function () { return mainExports; }); // \`\`\` ### Used in React [react-hotkeys](https://github.com/jaywcjlove/react-hotkeys) is the React component that listen to keydown and keyup keyboard events, defining and dispatching keyboard shortcuts. \`\`\`shell $ npm install react-hot-keys --save \`\`\` Detailed use method please see its documentation [react-hotkeys](https://github.com/jaywcjlove/react-hotkeys). \`\`\`jsx import React, { Component } from 'react'; import Hotkeys from 'react-hot-keys'; export default class HotkeysDemo extends Component { constructor(props) { super(props); this.state = { output: 'Hello, I am a component that listens to keydown and keyup of a', } } onKeyUp(keyNm, e, handle) { this.setState({output: keyNm}) } onKeyDown(keyName, e, handle) { this.setState({output: keyNm}) } render() { return (
{this.state.output}
) } } \`\`\` ## Browser Support Hotkeys.js has been tested and should work in. \`\`\`shell Internet Explorer 6+ Safari Firefox Chrome \`\`\` ## Supported Keys HotKeys understands the following modifiers: \`⇧\`, \`shift\`, \`option\`, \`⌥\`, \`alt\`, \`ctrl\`, \`control\`, \`command\`, and \`⌘\`. The following special keys can be used for shortcuts: backspace, tab, clear, enter, return, esc, escape, space, up, down, left, right, home, end, pageup, pagedown, del, delete and f1 through f19. \`⌘\` Command() \`⌃\` Control \`⌥\` Option(alt) \`⇧\` Shift \`⇪\` Caps Lock(Capital) ~~\`fn\` Does not support fn~~ \`↩︎\` return/Enter space ## Defining Shortcuts One global method is exposed, key which defines shortcuts when called directly. \`\`\` hotkeys([keys:], [option:[string|object|function]], [callback:]) \`\`\` \`\`\`js hotkeys('f5', function(event, handler) { // Prevent the default refresh event under WINDOWS system event.preventDefault(); alert('you pressed F5!'); }); // Returning false stops the event and prevents default browser events // Mac OS system defines \`command + r\` as a refresh shortcut hotkeys('ctrl+r, command+r', function() { alert('stopped reload!'); return false; }); hotkeys('a', function(event,handler){ //event.srcElement: input //event.target: input if(event.target === "input"){ alert('you pressed a!') } alert('you pressed a!') }); hotkeys('ctrl+a,ctrl+b,r,f', function(event,handler) { switch(handler.key){ case "ctrl+a":alert('you pressed ctrl+a!');break; case "ctrl+b":alert('you pressed ctrl+b!');break; case "r":alert('you pressed r!');break; case "f":alert('you pressed f!');break; } }); hotkeys('*','wcj', function(e){ console.log('do something',e); }); \`\`\` #### option - \`scope\` - \`element\` \`\`\`js hotkeys('o, enter', { scope: 'wcj', element: document.getElementById('warpper'), }, function(){ console.log('do something else'); }); \`\`\` ## API REFERENCE Asterisk "*" Modifier key judgments \`\`\`js hotkeys('*', function(e){ if(hotkeys.shift) console.log('shift is pressed!'); if(hotkeys.ctrl) console.log('ctrl is pressed!'); if(hotkeys.alt) console.log('alt is pressed!'); if(hotkeys.option) console.log('option is pressed!'); if(hotkeys.control) console.log('control is pressed!'); if(hotkeys.cmd) console.log('cmd is pressed!'); if(hotkeys.command) console.log('command is pressed!'); }); \`\`\` ### setScope Use the \`hotkeys.setScope\` method to set scope. \`\`\`js // define shortcuts with a scope hotkeys('ctrl+o, ctrl+alt+enter', 'issues', function(){ console.log('do something'); }); hotkeys('o, enter', 'files', function(){ console.log('do something else'); }); // set the scope (only 'all' and 'issues' shortcuts will be honored) hotkeys.setScope('issues'); // default scope is 'all' \`\`\` ### getScope Use the \`hotkeys.getScope\` method to get scope. \`\`\`js hotkeys.getScope(); \`\`\` ### deleteScope Use the \`hotkeys.deleteScope\` method to delete set scope. \`\`\`js hotkeys.deleteScope('issues'); \`\`\` ### unbind Similar to defining shortcuts, they can be unbound using \`hotkeys.unbind\`. \`\`\`js // unbind 'a' handler hotkeys.unbind('a'); // unbind a hotkeys only for a single scope // when no scope is specified it defaults to the current scope (hotkeys.getScope()) hotkeys.unbind('o, enter', 'issues'); hotkeys.unbind('o, enter', 'files'); \`\`\` Unbind events through functions. \`\`\`js function example(){} hotkeys('a', example); hotkeys.unbind('a', example); hotkeys('a', 'issues', example); hotkeys.unbind('a', 'issues', example); \`\`\` ### isPressed Other key queries. For example, \`hotkeys.isPressed(77)\` is true if the \`M\` key is currently pressed. \`\`\`js hotkeys('a', function(){ console.log(hotkeys.isPressed("a")); //=> true console.log(hotkeys.isPressed("A")); //=> true console.log(hotkeys.isPressed(65)); //=> true }); \`\`\` ### getPressedKeyCodes returns an array of key codes currently pressed. \`\`\`js hotkeys('command+ctrl+shift+a,f', function(){ console.log(hotkeys.getPressedKeyCodes()); //=> [17, 65] or [70] }) \`\`\` ### filter \`INPUT\` \`SELECT\` \`TEXTAREA\` default does not handle. \`Hotkeys.filter\` to return to the \`true\` shortcut keys set to play a role, \`flase\` shortcut keys set up failure. \`\`\`js hotkeys.filter = function(event){ return true; } //How to add the filter to edit labels.
//"contentEditable" Older browsers that do not support drops hotkeys.filter = function(event) { var tagName = (event.target || event.srcElement).tagName; return !(tagName.isContentEditable || tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA'); } hotkeys.filter = function(event){ var tagName = (event.target || event.srcElement).tagName; hotkeys.setScope(/^(INPUT|TEXTAREA|SELECT)$/.test(tagName) ? 'input' : 'other'); return true; } \`\`\` ### noConflict Relinquish HotKeys’s control of the \`hotkeys\` variable. \`\`\`js var k = hotkeys.noConflict(); k('a', function() { console.log("do something") }); hotkeys() // -->Uncaught TypeError: hotkeys is not a function(anonymous function) // @ VM2170:2InjectedScript._evaluateOn // @ VM2165:883InjectedScript._evaluateAndWrap // @ VM2165:816InjectedScript.evaluate @ VM2165:682 \`\`\` ## Development To develop, Install dependencies, Get the code: \`\`\`shell $ git https://github.com/jaywcjlove/hotkeys.git $ cd hotkeys # Into the directory $ npm install # or yarn install \`\`\` To develop, run the self-reloading build: \`\`\`shell $ npm run watch \`\`\` Run Document Website Environment. \`\`\`shell $ npm run doc:dev \`\`\` To contribute, please fork Hotkeys.js, add your patch and tests for it (in the \`test/\` folder) and submit a pull request. \`\`\`shell $ npm run test $ npm run test:watch # Development model \`\`\` ## License [MIT © Kenny Wong](./LICENSE) ` },{}],"../dist/hotkeys.common.js":[function(require,module,exports) { /*! * hotkeys-js v3.4.2 * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies. * * Copyright (c) 2019 kenny wong * http://jaywcjlove.github.io/hotkeys * * Licensed under the MIT license. */ 'use strict'; var isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false; // 绑定事件 function addEvent(object, event, method) { if (object.addEventListener) { object.addEventListener(event, method, false); } else if (object.attachEvent) { object.attachEvent('on' + event, function () { method(window.event); }); } } // 修饰键转换成对应的键码 function getMods(modifier, key) { var mods = key.slice(0, key.length - 1); for (var i = 0; i < mods.length; i++) { mods[i] = modifier[mods[i].toLowerCase()]; } return mods; } // 处理传的key字符串转换成数组 function getKeys(key) { if (!key) key = ''; key = key.replace(/\s/g, ''); // 匹配任何空白字符,包括空格、制表符、换页符等等 var keys = key.split(','); // 同时设置多个快捷键,以','分割 var index = keys.lastIndexOf(''); // 快捷键可能包含',',需特殊处理 for (; index >= 0;) { keys[index - 1] += ','; keys.splice(index, 1); index = keys.lastIndexOf(''); } return keys; } // 比较修饰键的数组 function compareArray(a1, a2) { var arr1 = a1.length >= a2.length ? a1 : a2; var arr2 = a1.length >= a2.length ? a2 : a1; var isIndex = true; for (var i = 0; i < arr1.length; i++) { if (arr2.indexOf(arr1[i]) === -1) isIndex = false; } return isIndex; } var _keyMap = { // 特殊键 backspace: 8, tab: 9, clear: 12, enter: 13, return: 13, esc: 27, escape: 27, space: 32, left: 37, up: 38, right: 39, down: 40, del: 46, delete: 46, ins: 45, insert: 45, home: 36, end: 35, pageup: 33, pagedown: 34, capslock: 20, '⇪': 20, ',': 188, '.': 190, '/': 191, '`': 192, '-': isff ? 173 : 189, '=': isff ? 61 : 187, ';': isff ? 59 : 186, '\'': 222, '[': 219, ']': 221, '\\': 220 }; var _modifier = { // 修饰键 '⇧': 16, shift: 16, '⌥': 18, alt: 18, option: 18, '⌃': 17, ctrl: 17, control: 17, '⌘': isff ? 224 : 91, cmd: isff ? 224 : 91, command: isff ? 224 : 91 }; var _downKeys = []; // 记录摁下的绑定键 var modifierMap = { 16: 'shiftKey', 18: 'altKey', 17: 'ctrlKey' }; var _mods = { 16: false, 18: false, 17: false }; var _handlers = {}; // F1~F12 特殊键 for (var k = 1; k < 20; k++) { _keyMap['f' + k] = 111 + k; } // 兼容Firefox处理 modifierMap[isff ? 224 : 91] = 'metaKey'; _mods[isff ? 224 : 91] = false; var _scope = 'all'; // 默认热键范围 var isBindElement = false; // 是否绑定节点 // 返回键码 var code = function code(x) { return _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0); }; // 设置获取当前范围(默认为'所有') function setScope(scope) { _scope = scope || 'all'; } // 获取当前范围 function getScope() { return _scope || 'all'; } // 获取摁下绑定键的键值 function getPressedKeyCodes() { return _downKeys.slice(0); } // 表单控件控件判断 返回 Boolean function filter(event) { var target = event.target || event.srcElement; var tagName = target.tagName; // 忽略这些情况下快捷键无效 return !(tagName === 'INPUT' || tagName === 'SELECT' || tagName === 'TEXTAREA' || target.isContentEditable); } // 判断摁下的键是否为某个键,返回true或者false function isPressed(keyCode) { if (typeof keyCode === 'string') { keyCode = code(keyCode); // 转换成键码 } return _downKeys.indexOf(keyCode) !== -1; } // 循环删除handlers中的所有 scope(范围) function deleteScope(scope, newScope) { var handlers = void 0; var i = void 0; // 没有指定scope,获取scope if (!scope) scope = getScope(); for (var key in _handlers) { if (Object.prototype.hasOwnProperty.call(_handlers, key)) { handlers = _handlers[key]; for (i = 0; i < handlers.length;) { if (handlers[i].scope === scope) handlers.splice(i, 1);else i++; } } } // 如果scope被删除,将scope重置为all if (getScope() === scope) setScope(newScope || 'all'); } // 清除修饰键 function clearModifier(event) { var key = event.keyCode || event.which || event.charCode; var i = _downKeys.indexOf(key); // 从列表中清除按压过的键 if (i >= 0) _downKeys.splice(i, 1); // 修饰键 shiftKey altKey ctrlKey (command||metaKey) 清除 if (key === 93 || key === 224) key = 91; if (key in _mods) { _mods[key] = false; // 将修饰键重置为false for (var k in _modifier) { if (_modifier[k] === key) hotkeys[k] = false; } } } // 解除绑定某个范围的快捷键 function unbind(key, scope, method) { var multipleKeys = getKeys(key); var keys = void 0; var mods = []; var obj = void 0; // 通过函数判断,是否解除绑定 // https://github.com/jaywcjlove/hotkeys/issues/44 if (typeof scope === 'function') { method = scope; scope = 'all'; } for (var i = 0; i < multipleKeys.length; i++) { // 将组合快捷键拆分为数组 keys = multipleKeys[i].split('+'); // 记录每个组合键中的修饰键的键码 返回数组 if (keys.length > 1) mods = getMods(_modifier, keys); // 获取除修饰键外的键值key key = keys[keys.length - 1]; key = key === '*' ? '*' : code(key); // 判断是否传入范围,没有就获取范围 if (!scope) scope = getScope(); // 如何key不在 _handlers 中返回不做处理 if (!_handlers[key]) return; // 清空 handlers 中数据, // 让触发快捷键键之后没有事件执行到达解除快捷键绑定的目的 for (var r = 0; r < _handlers[key].length; r++) { obj = _handlers[key][r]; // 通过函数判断,是否解除绑定,函数相等直接返回 if (method && obj.method !== method) return; // 判断是否在范围内并且键值相同 if (obj.scope === scope && compareArray(obj.mods, mods)) { _handlers[key][r] = {}; } } } } // 对监听对应快捷键的回调函数进行处理 function eventHandler(event, handler, scope) { var modifiersMatch = void 0; // 看它是否在当前范围 if (handler.scope === scope || handler.scope === 'all') { // 检查是否匹配修饰符(如果有返回true) modifiersMatch = handler.mods.length > 0; for (var y in _mods) { if (Object.prototype.hasOwnProperty.call(_mods, y)) { if (!_mods[y] && handler.mods.indexOf(+y) > -1 || _mods[y] && handler.mods.indexOf(+y) === -1) modifiersMatch = false; } } // 调用处理程序,如果是修饰键不做处理 if (handler.mods.length === 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91] || modifiersMatch || handler.shortcut === '*') { if (handler.method(event, handler) === false) { if (event.preventDefault) event.preventDefault();else event.returnValue = false; if (event.stopPropagation) event.stopPropagation(); if (event.cancelBubble) event.cancelBubble = true; } } } } // 处理keydown事件 function dispatch(event) { var asterisk = _handlers['*']; var key = event.keyCode || event.which || event.charCode; // 搜集绑定的键 if (_downKeys.indexOf(key) === -1) _downKeys.push(key); // Gecko(Firefox)的command键值224,在Webkit(Chrome)中保持一致 // Webkit左右command键值不一样 if (key === 93 || key === 224) key = 91; if (key in _mods) { _mods[key] = true; // 将特殊字符的key注册到 hotkeys 上 for (var k in _modifier) { if (_modifier[k] === key) hotkeys[k] = true; } if (!asterisk) return; } // 将modifierMap里面的修饰键绑定到event中 for (var e in _mods) { if (Object.prototype.hasOwnProperty.call(_mods, e)) { _mods[e] = event[modifierMap[e]]; } } // 表单控件过滤 默认表单控件不触发快捷键 if (!hotkeys.filter.call(this, event)) return; // 获取范围 默认为all var scope = getScope(); // 对任何快捷键都需要做的处理 if (asterisk) { for (var i = 0; i < asterisk.length; i++) { if (asterisk[i].scope === scope) eventHandler(event, asterisk[i], scope); } } // key 不在_handlers中返回 if (!(key in _handlers)) return; for (var _i = 0; _i < _handlers[key].length; _i++) { // 找到处理内容 eventHandler(event, _handlers[key][_i], scope); } } function hotkeys(key, option, method) { var keys = getKeys(key); // 需要处理的快捷键列表 var mods = []; var scope = 'all'; // scope默认为all,所有范围都有效 var element = document; // 快捷键事件绑定节点 var i = 0; // 对为设定范围的判断 if (method === undefined && typeof option === 'function') { method = option; } if (Object.prototype.toString.call(option) === '[object Object]') { if (option.scope) scope = option.scope; // eslint-disable-line if (option.element) element = option.element; // eslint-disable-line } if (typeof option === 'string') scope = option; // 对于每个快捷键进行处理 for (; i < keys.length; i++) { key = keys[i].split('+'); // 按键列表 mods = []; // 如果是组合快捷键取得组合快捷键 if (key.length > 1) mods = getMods(_modifier, key); // 将非修饰键转化为键码 key = key[key.length - 1]; key = key === '*' ? '*' : code(key); // *表示匹配所有快捷键 // 判断key是否在_handlers中,不在就赋一个空数组 if (!(key in _handlers)) _handlers[key] = []; _handlers[key].push({ scope: scope, mods: mods, shortcut: keys[i], method: method, key: keys[i] }); } // 在全局document上设置快捷键 if (typeof element !== 'undefined' && !isBindElement) { isBindElement = true; addEvent(element, 'keydown', function (e) { dispatch(e); }); addEvent(element, 'keyup', function (e) { clearModifier(e); }); } } var _api = { setScope: setScope, getScope: getScope, deleteScope: deleteScope, getPressedKeyCodes: getPressedKeyCodes, isPressed: isPressed, filter: filter, unbind: unbind }; for (var a in _api) { if (Object.prototype.hasOwnProperty.call(_api, a)) { hotkeys[a] = _api[a]; } } if (typeof window !== 'undefined') { var _hotkeys = window.hotkeys; hotkeys.noConflict = function (deep) { if (deep && window.hotkeys === hotkeys) { window.hotkeys = _hotkeys; } return hotkeys; }; window.hotkeys = hotkeys; } module.exports = hotkeys; },{}],"App.js":[function(require,module,exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _GithubCorner = _interopRequireDefault(require("./components/GithubCorner")); var _KeyBoard = _interopRequireDefault(require("./components/KeyBoard")); var _Footer = _interopRequireDefault(require("./components/Footer")); var _Markdown = _interopRequireDefault(require("./components/Markdown")); var _GithubShields = _interopRequireDefault(require("./components/GithubShields")); var _index = _interopRequireDefault(require("./styles/index.less")); var _README = _interopRequireDefault(require("../README.md")); var _hotkeys = _interopRequireDefault(require("../dist/hotkeys.common")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } var App = /*#__PURE__*/ function (_Component) { _inherits(App, _Component); function App() { var _this; _classCallCheck(this, App); _this = _possibleConstructorReturn(this, _getPrototypeOf(App).call(this)); _this.state = { keyCode: [], keyStr: [] }; _this.onKeyUpEvent = _this.onKeyUpEvent.bind(_assertThisInitialized(_assertThisInitialized(_this))); return _this; } _createClass(App, [{ key: "componentDidMount", value: function componentDidMount() { var _this2 = this; document.addEventListener('keyup', this.onKeyUpEvent); function pkeys(keys, key) { if (keys.indexOf(key) === -1) keys.push(key); return keys; } function pkeysStr(keysStr, key) { if (keysStr.indexOf(key) === -1) keysStr.push(key); return keysStr; } (0, _hotkeys.default)('*', function (evn) { evn.preventDefault(); var keys = []; var keyStr = []; if (_hotkeys.default.shift) { pkeys(keys, 16); pkeysStr(keyStr, 'shift'); } if (_hotkeys.default.ctrl) { pkeys(keys, 17); pkeysStr(keyStr, 'ctrl'); } if (_hotkeys.default.alt) { pkeys(keys, 18); pkeysStr(keyStr, 'alt'); } if (_hotkeys.default.control) { pkeys(keys, 17); pkeysStr(keyStr, 'control'); } if (_hotkeys.default.command) { pkeys(keys, 91); pkeysStr(keyStr, 'command'); } keyStr.push(evn.keyCode); if (keys.indexOf(evn.keyCode) === -1) keys.push(evn.keyCode); _this2.setState({ keyCode: keys, keyStr: keyStr }); }); return false; } }, { key: "componentWillUnmount", value: function componentWillUnmount() { document.removeEventListener('keyup', this.onKeyUpEvent); } }, { key: "onKeyUpEvent", value: function onKeyUpEvent() { this.setState({ keyCode: [], keyStr: [] }); } }, { key: "onKeyBoardMouseDown", value: function onKeyBoardMouseDown(item) { if (item.keycode > -1) { this.setState({ keyStr: [item.keycode] }); } } }, { key: "onKeyBoardMouseUp", value: function onKeyBoardMouseUp() { this.setState({ keyStr: [] }); } }, { key: "openVersionWebsite", value: function openVersionWebsite(e) { if (e.target && e.target.value) { window.location.href = e.target.value; } } }, { key: "render", value: function render() { var keyStr = this.state.keyStr; var DocumentStrSource = _README.default; if (DocumentStrSource) DocumentStrSource = _README.default.replace(/([\s\S]*)/, ''); return _react.default.createElement("div", null, _react.default.createElement("select", { className: _index.default.version, onChange: this.openVersionWebsite.bind(this) }, _react.default.createElement("option", { value: "https://jaywcjlove.github.io/hotkeys" }, "v3.0.0"), _react.default.createElement("option", { value: "https://unpkg.com/hotkeys-js@2.0.10/doc/index.html" }, "v2.0.10")), keyStr.length > -1 && _react.default.createElement("div", { className: _index.default.keyCodeInfo }, keyStr.map(function (item) { return _react.default.createElement("span", { key: "".concat(item) }, item); })), _react.default.createElement(_GithubCorner.default, { url: "https://github.com/jaywcjlove/hotkeys" }), _react.default.createElement("div", { className: _index.default.header }, _react.default.createElement("div", { className: _index.default.title }, "HotKeys.js"), _react.default.createElement("div", { className: _index.default.github }, _react.default.createElement("a", { href: "https://www.npmjs.com/package/hotkeys-js" }, _react.default.createElement("button", null, "On NPM")), _react.default.createElement("a", { href: "https://github.com/jaywcjlove/hotkeys/" }, _react.default.createElement("button", null, "Fork on Github")), _react.default.createElement("a", { href: "https://github.com/jaywcjlove/hotkeys/" }, _react.default.createElement("button", null, "Doc on Github"))), _react.default.createElement("div", { className: _index.default.info }, "A robust Javascript library for capturing keyboard input and key combinations entered. It has no dependencies. Try to press your keyboard, The following button will highlight.")), _react.default.createElement(_KeyBoard.default, { onMouseDown: this.onKeyBoardMouseDown.bind(this), onMouseUp: this.onKeyBoardMouseUp.bind(this), keyCode: this.state.keyCode }), _react.default.createElement(_Markdown.default, { source: DocumentStrSource }), _react.default.createElement(_GithubShields.default, { source: [{ href: 'https://github.com/jaywcjlove/hotkeys/stargazers', img: 'https://img.shields.io/github/stars/jaywcjlove/hotkeys.svg?style=social' }, { href: 'https://github.com/jaywcjlove/hotkeys/network', img: 'https://img.shields.io/github/forks/jaywcjlove/hotkeys.svg?style=social' }, { href: 'https://github.com/jaywcjlove/hotkeys/watchers', img: 'https://img.shields.io/github/watchers/jaywcjlove/hotkeys.svg?style=social&label=Watch' }, { href: 'https://github.com/jaywcjlove/followers', img: 'https://img.shields.io/github/followers/jaywcjlove.svg?style=social' }] }), _react.default.createElement(_Footer.default, { name: "Kenny Wong", href: "http://jaywcjlove.github.io", year: "2015-present" })); } }]); return App; }(_react.Component); exports.default = App; },{"react":"../node_modules/react/index.js","./components/GithubCorner":"components/GithubCorner.js","./components/KeyBoard":"components/KeyBoard.js","./components/Footer":"components/Footer.js","./components/Markdown":"components/Markdown/index.js","./components/GithubShields":"components/GithubShields.js","./styles/index.less":"styles/index.less","../README.md":"../README.md","../dist/hotkeys.common":"../dist/hotkeys.common.js"}],"styles/reset.less":[function(require,module,exports) { var reloadCSS = require('_css_loader'); module.hot.dispose(reloadCSS); module.hot.accept(reloadCSS); module.exports = {}; },{"./../assets/bg.jpg":[["bg.8616d336.jpg","assets/bg.jpg"],"assets/bg.jpg"],"_css_loader":"../node_modules/parcel-bundler/src/builtins/css-loader.js"}],"index.js":[function(require,module,exports) { "use strict"; var _react = _interopRequireDefault(require("react")); var _reactDom = _interopRequireDefault(require("react-dom")); var _App = _interopRequireDefault(require("./App")); require("./styles/reset.less"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _reactDom.default.render(_react.default.createElement(_App.default, null), document.getElementById('root')); },{"react":"../node_modules/react/index.js","react-dom":"../node_modules/react-dom/index.js","./App":"App.js","./styles/reset.less":"styles/reset.less"}],"../node_modules/parcel-bundler/src/builtins/hmr-runtime.js":[function(require,module,exports) { var global = arguments[3]; var OVERLAY_ID = '__parcel__error__overlay__'; var OldModule = module.bundle.Module; function Module(moduleName) { OldModule.call(this, moduleName); this.hot = { data: module.bundle.hotData, _acceptCallbacks: [], _disposeCallbacks: [], accept: function (fn) { this._acceptCallbacks.push(fn || function () {}); }, dispose: function (fn) { this._disposeCallbacks.push(fn); } }; module.bundle.hotData = null; } module.bundle.Module = Module; var parent = module.bundle.parent; if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') { var hostname = "" || location.hostname; var protocol = location.protocol === 'https:' ? 'wss' : 'ws'; var ws = new WebSocket(protocol + '://' + hostname + ':' + "52728" + '/'); ws.onmessage = function (event) { var data = JSON.parse(event.data); if (data.type === 'update') { console.clear(); data.assets.forEach(function (asset) { hmrApply(global.parcelRequire, asset); }); data.assets.forEach(function (asset) { if (!asset.isNew) { hmrAccept(global.parcelRequire, asset.id); } }); } if (data.type === 'reload') { ws.close(); ws.onclose = function () { location.reload(); }; } if (data.type === 'error-resolved') { console.log('[parcel] ✨ Error resolved'); removeErrorOverlay(); } if (data.type === 'error') { console.error('[parcel] 🚨 ' + data.error.message + '\n' + data.error.stack); removeErrorOverlay(); var overlay = createErrorOverlay(data); document.body.appendChild(overlay); } }; } function removeErrorOverlay() { var overlay = document.getElementById(OVERLAY_ID); if (overlay) { overlay.remove(); } } function createErrorOverlay(data) { var overlay = document.createElement('div'); overlay.id = OVERLAY_ID; // html encode message and stack trace var message = document.createElement('div'); var stackTrace = document.createElement('pre'); message.innerText = data.error.message; stackTrace.innerText = data.error.stack; overlay.innerHTML = '
' + 'ERROR' + '🚨' + '
' + message.innerHTML + '
' + '
' + stackTrace.innerHTML + '
' + '
'; return overlay; } function getParents(bundle, id) { var modules = bundle.modules; if (!modules) { return []; } var parents = []; var k, d, dep; for (k in modules) { for (d in modules[k][1]) { dep = modules[k][1][d]; if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) { parents.push(k); } } } if (bundle.parent) { parents = parents.concat(getParents(bundle.parent, id)); } return parents; } function hmrApply(bundle, asset) { var modules = bundle.modules; if (!modules) { return; } if (modules[asset.id] || !bundle.parent) { var fn = new Function('require', 'module', 'exports', asset.generated.js); asset.isNew = !modules[asset.id]; modules[asset.id] = [fn, asset.deps]; } else if (bundle.parent) { hmrApply(bundle.parent, asset); } } function hmrAccept(bundle, id) { var modules = bundle.modules; if (!modules) { return; } if (!modules[id] && bundle.parent) { return hmrAccept(bundle.parent, id); } var cached = bundle.cache[id]; bundle.hotData = {}; if (cached) { cached.hot.data = bundle.hotData; } if (cached && cached.hot && cached.hot._disposeCallbacks.length) { cached.hot._disposeCallbacks.forEach(function (cb) { cb(bundle.hotData); }); } delete bundle.cache[id]; bundle(id); cached = bundle.cache[id]; if (cached && cached.hot && cached.hot._acceptCallbacks.length) { cached.hot._acceptCallbacks.forEach(function (cb) { cb(); }); return true; } return getParents(global.parcelRequire, id).some(function (id) { return hmrAccept(global.parcelRequire, id); }); } },{}]},{},["../node_modules/parcel-bundler/src/builtins/hmr-runtime.js","index.js"], null) //# sourceMappingURL=/website.e31bb0bc.map