First release
This commit is contained in:
commit
fa6c85266e
2339 changed files with 761050 additions and 0 deletions
3
node_modules/keycode/.npmignore
generated
vendored
Normal file
3
node_modules/keycode/.npmignore
generated
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
components
|
||||
build
|
||||
node_modules
|
5
node_modules/keycode/.travis.yml
generated
vendored
Normal file
5
node_modules/keycode/.travis.yml
generated
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
language: node_js
|
||||
node_js:
|
||||
- "8"
|
||||
- "6"
|
||||
- "4"
|
21
node_modules/keycode/LICENSE
generated
vendored
Normal file
21
node_modules/keycode/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Tim Oxley
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
11
node_modules/keycode/Makefile
generated
vendored
Normal file
11
node_modules/keycode/Makefile
generated
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
|
||||
build: components index.js
|
||||
@component build --dev
|
||||
|
||||
components:
|
||||
@component install --dev
|
||||
|
||||
clean:
|
||||
rm -fr build components template.js
|
||||
|
||||
.PHONY: clean
|
136
node_modules/keycode/Readme.md
generated
vendored
Normal file
136
node_modules/keycode/Readme.md
generated
vendored
Normal file
|
@ -0,0 +1,136 @@
|
|||
# keycode
|
||||
|
||||
Simple map of keyboard codes.
|
||||
|
||||
[](https://travis-ci.org/timoxley/keycode)
|
||||
|
||||
## Installation
|
||||
|
||||
#### npm
|
||||
|
||||
```sh
|
||||
$ npm install keycode
|
||||
```
|
||||
|
||||
#### component
|
||||
```sh
|
||||
$ component install timoxley/keycode
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
```js
|
||||
var keycode = require('keycode');
|
||||
document.addEventListener('keydown', function(e) {
|
||||
console.log("You pressed", keycode(e))
|
||||
})
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
`keycode` tries to make an intelligent guess as to what
|
||||
you're trying to discover based on the type of argument
|
||||
you supply.
|
||||
|
||||
### keycode(keycode:Event)
|
||||
|
||||
Returns the name of the key associated with this event.
|
||||
|
||||
```js
|
||||
document.body.addEventListener('keyup', function(e) {
|
||||
console.log(keycode(e)) // prints name of key
|
||||
})
|
||||
```
|
||||
|
||||
[Due to the keypress event being weird](https://github.com/timoxley/keycode/wiki/wtf%3F-keydown,-keyup-vs-keypress),`keycode `currently does not support the `keypress` event, but this should not be an issue as `keydown` and `keyup` work perfectly fine.
|
||||
|
||||
### keycode(keycode:Number)
|
||||
|
||||
Returns the lowercase name of a given numeric keycode.
|
||||
|
||||
```js
|
||||
keycode(13) // => 'enter'
|
||||
```
|
||||
|
||||
### keycode(name:String)
|
||||
|
||||
Returns the numeric keycode for given key name.
|
||||
|
||||
```js
|
||||
keycode('Enter') // => 13
|
||||
|
||||
// keycode is not case sensitive
|
||||
keycode('eNtEr') // => 13
|
||||
```
|
||||
|
||||
### Name Aliases
|
||||
|
||||
Common aliases are also supplied:
|
||||
|
||||
```js
|
||||
> for (var alias in keycode.aliases) { console.log(alias, keycode(keycode(alias))) }
|
||||
ctl ctrl
|
||||
pause pause/break
|
||||
break pause/break
|
||||
caps caps lock
|
||||
escape esc
|
||||
pgup page up
|
||||
pgdn page down
|
||||
ins insert
|
||||
del delete
|
||||
spc space
|
||||
```
|
||||
|
||||
## keycode.isEventKey(event: Event, nameOrCode: String | Number)
|
||||
|
||||
Tests if an keyboard event against a given name or keycode.
|
||||
Will return `true` if the event matches the given name or keycode, `false` otherwise.
|
||||
|
||||
```js
|
||||
// assume event is an keydown event with key 'enter'
|
||||
keycode.isEventKey(event, 'enter') // => true
|
||||
keycode.isEventKey(event, 'down') // => false
|
||||
|
||||
keycode.isEventKey(event, 13) // => true
|
||||
keycode.isEventKey(event, 40) // => false
|
||||
```
|
||||
|
||||
|
||||
## Maps
|
||||
|
||||
Key code/name maps are available directly as `keycode.codes` and `keycode.names` respectively.
|
||||
|
||||
```js
|
||||
keycode.names[13] // => 'enter'
|
||||
keycode.codes['Enter'] // => 13
|
||||
```
|
||||
|
||||
## Credit
|
||||
|
||||
```
|
||||
project : keycode
|
||||
repo age : 3 years, 8 months
|
||||
active : 29 days
|
||||
commits : 66
|
||||
files : 13
|
||||
authors :
|
||||
49 Tim Oxley 74.3%
|
||||
4 jkroso 6.1%
|
||||
3 Amir Abu Shareb 4.5%
|
||||
1 Greg Reimer 1.5%
|
||||
1 Kenan Yildirim 1.5%
|
||||
1 Abel Toledano 1.5%
|
||||
1 Sam 1.5%
|
||||
1 TJ Holowaychuk 1.5%
|
||||
1 Yoshua Wuyts 1.5%
|
||||
1 Nathan Zadoks 1.5%
|
||||
1 Brenton Simpson 1.5%
|
||||
1 Brian Noguchi 1.5%
|
||||
1 Gilad Peleg 1.5%
|
||||
```
|
||||
|
||||
Original key mappings lifted from http://jsfiddle.net/vWx8V/ via http://stackoverflow.com/questions/5603195/full-list-of-javascript-keycodes
|
||||
|
||||
## License
|
||||
|
||||
[MIT](http://opensource.org/licenses/mit-license.php)
|
24
node_modules/keycode/component.json
generated
vendored
Normal file
24
node_modules/keycode/component.json
generated
vendored
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"name": "keycode",
|
||||
"repo": "timoxley/keycode",
|
||||
"description": "Map of keyboard codes",
|
||||
"version": "2.2.0",
|
||||
"development": {
|
||||
"timoxley/assert": "*"
|
||||
},
|
||||
"scripts": [
|
||||
"index.js"
|
||||
],
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"keyboard",
|
||||
"keycode",
|
||||
"keyboardevent",
|
||||
"ascii",
|
||||
"keydown",
|
||||
"keyup",
|
||||
"metakey",
|
||||
"keyname",
|
||||
"keypress"
|
||||
]
|
||||
}
|
13
node_modules/keycode/examples/index.html
generated
vendored
Normal file
13
node_modules/keycode/examples/index.html
generated
vendored
Normal file
|
@ -0,0 +1,13 @@
|
|||
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap.no-responsive.no-icons.min.css" rel="stylesheet">
|
||||
<div id="keyname">Press any key.</div>
|
||||
<script src="../build/build.js"></script>
|
||||
<script>
|
||||
var keycode = require('keycode')
|
||||
window.keycode = keycode
|
||||
console.log("The keyCode for 'Enter' is %d.", keycode('Enter'))
|
||||
window.addEventListener('keydown', keydown);
|
||||
function keydown(e) {
|
||||
document.getElementById('keyname').innerHTML = (e.which ||
|
||||
e.keyCode) + ': ' + keycode(e.which || e.keyCode);
|
||||
}
|
||||
</script>
|
145
node_modules/keycode/index.d.ts
generated
vendored
Normal file
145
node_modules/keycode/index.d.ts
generated
vendored
Normal file
|
@ -0,0 +1,145 @@
|
|||
export = keycode;
|
||||
export as namespace keycode;
|
||||
|
||||
declare const keycode: Keycode;
|
||||
|
||||
declare interface CodesMap {
|
||||
'backspace': number;
|
||||
'tab': number;
|
||||
'enter': number;
|
||||
'shift': number;
|
||||
'ctrl': number;
|
||||
'alt': number;
|
||||
'pause/break': number;
|
||||
'caps lock': number;
|
||||
'esc': number;
|
||||
'space': number;
|
||||
'page up': number;
|
||||
'page down': number;
|
||||
'end': number;
|
||||
'home': number;
|
||||
'left': number;
|
||||
'up': number;
|
||||
'right': number;
|
||||
'down': number;
|
||||
'insert': number;
|
||||
'delete': number;
|
||||
'command': number;
|
||||
'left command': number;
|
||||
'right command': number;
|
||||
'numpad *': number;
|
||||
'numpad +': number;
|
||||
'numpad -': number;
|
||||
'numpad .': number;
|
||||
'numpad /': number;
|
||||
'num lock': number;
|
||||
'scroll lock': number;
|
||||
'my computer': number;
|
||||
'my calculator': number;
|
||||
';': number;
|
||||
'=': number;
|
||||
',': number;
|
||||
'-': number;
|
||||
'.': number;
|
||||
'/': number;
|
||||
'`': number;
|
||||
'[': number;
|
||||
'\\': number;
|
||||
']': number;
|
||||
"'": number;
|
||||
'a': number;
|
||||
'b': number;
|
||||
'c': number;
|
||||
'd': number;
|
||||
'e': number;
|
||||
'f': number;
|
||||
'g': number;
|
||||
'h': number;
|
||||
'i': number;
|
||||
'j': number;
|
||||
'k': number;
|
||||
'l': number;
|
||||
'm': number;
|
||||
'n': number;
|
||||
'o': number;
|
||||
'p': number;
|
||||
'q': number;
|
||||
'r': number;
|
||||
's': number;
|
||||
't': number;
|
||||
'u': number;
|
||||
'v': number;
|
||||
'w': number;
|
||||
'x': number;
|
||||
'y': number;
|
||||
'z': number;
|
||||
'0': number;
|
||||
'1': number;
|
||||
'2': number;
|
||||
'3': number;
|
||||
'4': number;
|
||||
'5': number;
|
||||
'6': number;
|
||||
'7': number;
|
||||
'8': number;
|
||||
'9': number;
|
||||
'f1': number;
|
||||
'f2': number;
|
||||
'f3': number;
|
||||
'f4': number;
|
||||
'f5': number;
|
||||
'f6': number;
|
||||
'f7': number;
|
||||
'f8': number;
|
||||
'f9': number;
|
||||
'f10': number;
|
||||
'f11': number;
|
||||
'f12': number;
|
||||
'numpad 0': number;
|
||||
'numpad 1': number;
|
||||
'numpad 2': number;
|
||||
'numpad 3': number;
|
||||
'numpad 4': number;
|
||||
'numpad 5': number;
|
||||
'numpad 6': number;
|
||||
'numpad 7': number;
|
||||
'numpad 8': number;
|
||||
'numpad 9': number;
|
||||
}
|
||||
|
||||
declare interface AliasesMap {
|
||||
'windows': number;
|
||||
'⇧': number;
|
||||
'⌥': number;
|
||||
'⌃': number;
|
||||
'⌘': number;
|
||||
'ctl': number;
|
||||
'control': number;
|
||||
'option': number;
|
||||
'pause': number;
|
||||
'break': number;
|
||||
'caps': number;
|
||||
'return': number;
|
||||
'escape': number;
|
||||
'spc': number;
|
||||
'spacebar': number;
|
||||
'pgup': number;
|
||||
'pgdn': number;
|
||||
'ins': number;
|
||||
'del': number;
|
||||
'cmd': number;
|
||||
}
|
||||
|
||||
declare interface InverseCodesMap {
|
||||
[key: number]: string;
|
||||
}
|
||||
|
||||
declare interface Keycode {
|
||||
(event: Event): string;
|
||||
(keycode: number): string;
|
||||
(name: string): number;
|
||||
codes: CodesMap;
|
||||
aliases: AliasesMap;
|
||||
names: InverseCodesMap;
|
||||
isEventKey: (event: Event, nameOrCode: number | string) => boolean;
|
||||
}
|
175
node_modules/keycode/index.js
generated
vendored
Normal file
175
node_modules/keycode/index.js
generated
vendored
Normal file
|
@ -0,0 +1,175 @@
|
|||
// Source: http://jsfiddle.net/vWx8V/
|
||||
// http://stackoverflow.com/questions/5603195/full-list-of-javascript-keycodes
|
||||
|
||||
/**
|
||||
* Conenience method returns corresponding value for given keyName or keyCode.
|
||||
*
|
||||
* @param {Mixed} keyCode {Number} or keyName {String}
|
||||
* @return {Mixed}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
function keyCode(searchInput) {
|
||||
// Keyboard Events
|
||||
if (searchInput && 'object' === typeof searchInput) {
|
||||
var hasKeyCode = searchInput.which || searchInput.keyCode || searchInput.charCode
|
||||
if (hasKeyCode) searchInput = hasKeyCode
|
||||
}
|
||||
|
||||
// Numbers
|
||||
if ('number' === typeof searchInput) return names[searchInput]
|
||||
|
||||
// Everything else (cast to string)
|
||||
var search = String(searchInput)
|
||||
|
||||
// check codes
|
||||
var foundNamedKey = codes[search.toLowerCase()]
|
||||
if (foundNamedKey) return foundNamedKey
|
||||
|
||||
// check aliases
|
||||
var foundNamedKey = aliases[search.toLowerCase()]
|
||||
if (foundNamedKey) return foundNamedKey
|
||||
|
||||
// weird character?
|
||||
if (search.length === 1) return search.charCodeAt(0)
|
||||
|
||||
return undefined
|
||||
}
|
||||
|
||||
/**
|
||||
* Compares a keyboard event with a given keyCode or keyName.
|
||||
*
|
||||
* @param {Event} event Keyboard event that should be tested
|
||||
* @param {Mixed} keyCode {Number} or keyName {String}
|
||||
* @return {Boolean}
|
||||
* @api public
|
||||
*/
|
||||
keyCode.isEventKey = function isEventKey(event, nameOrCode) {
|
||||
if (event && 'object' === typeof event) {
|
||||
var keyCode = event.which || event.keyCode || event.charCode
|
||||
if (keyCode === null || keyCode === undefined) { return false; }
|
||||
if (typeof nameOrCode === 'string') {
|
||||
// check codes
|
||||
var foundNamedKey = codes[nameOrCode.toLowerCase()]
|
||||
if (foundNamedKey) { return foundNamedKey === keyCode; }
|
||||
|
||||
// check aliases
|
||||
var foundNamedKey = aliases[nameOrCode.toLowerCase()]
|
||||
if (foundNamedKey) { return foundNamedKey === keyCode; }
|
||||
} else if (typeof nameOrCode === 'number') {
|
||||
return nameOrCode === keyCode;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
exports = module.exports = keyCode;
|
||||
|
||||
/**
|
||||
* Get by name
|
||||
*
|
||||
* exports.code['enter'] // => 13
|
||||
*/
|
||||
|
||||
var codes = exports.code = exports.codes = {
|
||||
'backspace': 8,
|
||||
'tab': 9,
|
||||
'enter': 13,
|
||||
'shift': 16,
|
||||
'ctrl': 17,
|
||||
'alt': 18,
|
||||
'pause/break': 19,
|
||||
'caps lock': 20,
|
||||
'esc': 27,
|
||||
'space': 32,
|
||||
'page up': 33,
|
||||
'page down': 34,
|
||||
'end': 35,
|
||||
'home': 36,
|
||||
'left': 37,
|
||||
'up': 38,
|
||||
'right': 39,
|
||||
'down': 40,
|
||||
'insert': 45,
|
||||
'delete': 46,
|
||||
'command': 91,
|
||||
'left command': 91,
|
||||
'right command': 93,
|
||||
'numpad *': 106,
|
||||
'numpad +': 107,
|
||||
'numpad -': 109,
|
||||
'numpad .': 110,
|
||||
'numpad /': 111,
|
||||
'num lock': 144,
|
||||
'scroll lock': 145,
|
||||
'my computer': 182,
|
||||
'my calculator': 183,
|
||||
';': 186,
|
||||
'=': 187,
|
||||
',': 188,
|
||||
'-': 189,
|
||||
'.': 190,
|
||||
'/': 191,
|
||||
'`': 192,
|
||||
'[': 219,
|
||||
'\\': 220,
|
||||
']': 221,
|
||||
"'": 222
|
||||
}
|
||||
|
||||
// Helper aliases
|
||||
|
||||
var aliases = exports.aliases = {
|
||||
'windows': 91,
|
||||
'⇧': 16,
|
||||
'⌥': 18,
|
||||
'⌃': 17,
|
||||
'⌘': 91,
|
||||
'ctl': 17,
|
||||
'control': 17,
|
||||
'option': 18,
|
||||
'pause': 19,
|
||||
'break': 19,
|
||||
'caps': 20,
|
||||
'return': 13,
|
||||
'escape': 27,
|
||||
'spc': 32,
|
||||
'spacebar': 32,
|
||||
'pgup': 33,
|
||||
'pgdn': 34,
|
||||
'ins': 45,
|
||||
'del': 46,
|
||||
'cmd': 91
|
||||
}
|
||||
|
||||
/*!
|
||||
* Programatically add the following
|
||||
*/
|
||||
|
||||
// lower case chars
|
||||
for (i = 97; i < 123; i++) codes[String.fromCharCode(i)] = i - 32
|
||||
|
||||
// numbers
|
||||
for (var i = 48; i < 58; i++) codes[i - 48] = i
|
||||
|
||||
// function keys
|
||||
for (i = 1; i < 13; i++) codes['f'+i] = i + 111
|
||||
|
||||
// numpad keys
|
||||
for (i = 0; i < 10; i++) codes['numpad '+i] = i + 96
|
||||
|
||||
/**
|
||||
* Get by code
|
||||
*
|
||||
* exports.name[13] // => 'Enter'
|
||||
*/
|
||||
|
||||
var names = exports.names = exports.title = {} // title for backward compat
|
||||
|
||||
// Create reverse mapping
|
||||
for (i in codes) names[codes[i]] = i
|
||||
|
||||
// Add aliases
|
||||
for (var alias in aliases) {
|
||||
codes[alias] = aliases[alias]
|
||||
}
|
67
node_modules/keycode/package.json
generated
vendored
Normal file
67
node_modules/keycode/package.json
generated
vendored
Normal file
|
@ -0,0 +1,67 @@
|
|||
{
|
||||
"_from": "keycode@^2.2.0",
|
||||
"_id": "keycode@2.2.0",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ=",
|
||||
"_location": "/keycode",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "keycode@^2.2.0",
|
||||
"name": "keycode",
|
||||
"escapedName": "keycode",
|
||||
"rawSpec": "^2.2.0",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "^2.2.0"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/video.js"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.0.tgz",
|
||||
"_shasum": "3d0af56dc7b8b8e5cba8d0a97f107204eec22b04",
|
||||
"_spec": "keycode@^2.2.0",
|
||||
"_where": "F:\\Documents\\websites\\BMM\\node_modules\\video.js",
|
||||
"author": {
|
||||
"name": "Tim Oxley",
|
||||
"email": "secoif@gmail.com"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/timoxley/keycode/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"dependencies": {},
|
||||
"deprecated": false,
|
||||
"description": "Convert between keyboard keycodes and keynames and vice versa.",
|
||||
"devDependencies": {
|
||||
"mocha": "^3.0.2"
|
||||
},
|
||||
"directories": {
|
||||
"example": "examples",
|
||||
"test": "test"
|
||||
},
|
||||
"homepage": "https://github.com/timoxley/keycode",
|
||||
"keywords": [
|
||||
"keyboard",
|
||||
"keycode",
|
||||
"keyboardevent",
|
||||
"ascii",
|
||||
"keydown",
|
||||
"keyup",
|
||||
"metakey",
|
||||
"keyname",
|
||||
"keypress"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "index.js",
|
||||
"name": "keycode",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/timoxley/keycode.git"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "mocha test/keycode.js"
|
||||
},
|
||||
"typings": "./keycode.d.ts",
|
||||
"version": "2.2.0"
|
||||
}
|
134
node_modules/keycode/test/keycode.js
generated
vendored
Normal file
134
node_modules/keycode/test/keycode.js
generated
vendored
Normal file
|
@ -0,0 +1,134 @@
|
|||
"use strict"
|
||||
|
||||
// check if is component
|
||||
if (require.modules) {
|
||||
var keycode = require('keycode')
|
||||
var assert = require('timoxley-assert')
|
||||
} else {
|
||||
var keycode = require('../')
|
||||
var assert = require('assert')
|
||||
}
|
||||
|
||||
it('can return a charcode from a letter', function() {
|
||||
assert.strictEqual(keycode('0'), 48);
|
||||
assert.strictEqual(keycode('B'), 66);
|
||||
assert.strictEqual(keycode('f1'), 112);
|
||||
assert.strictEqual(keycode('9'), 57);
|
||||
assert.strictEqual(keycode('numpad 0'), 96);
|
||||
})
|
||||
|
||||
|
||||
it('can use aliases from a letter', function() {
|
||||
assert.strictEqual(keycode('ctl'), keycode('ctrl'));
|
||||
})
|
||||
|
||||
it('does not use alias name when mapping back from a number', function() {
|
||||
for (var key in keycode.aliases) {
|
||||
assert.notStrictEqual(keycode(keycode(key)), key);
|
||||
}
|
||||
})
|
||||
|
||||
it('is case insensitive', function() {
|
||||
assert.strictEqual(keycode('a'), 65);
|
||||
assert.strictEqual(keycode('A'), 65);
|
||||
assert.strictEqual(keycode('enter'), 13);
|
||||
assert.strictEqual(keycode('ENTER'), 13);
|
||||
assert.strictEqual(keycode('enTeR'), 13);
|
||||
assert.strictEqual(keycode('Spacebar'), 32);
|
||||
})
|
||||
|
||||
it('returns char code for strange chars', function() {
|
||||
// TODO: not sure if this is sensible behaviour
|
||||
assert.strictEqual(keycode('∆'), 8710);
|
||||
assert.strictEqual(keycode('漢'), 28450);
|
||||
})
|
||||
|
||||
it('returns undefined for unknown strings', function() {
|
||||
assert.strictEqual(keycode('ants'), undefined);
|
||||
assert.strictEqual(keycode('Bagels'), undefined);
|
||||
assert.strictEqual(keycode(''), undefined);
|
||||
assert.strictEqual(keycode('JKHG KJG LSDF'), undefined);
|
||||
})
|
||||
|
||||
it('returns undefined for unknown numbers', function() {
|
||||
assert.strictEqual(keycode(-1), undefined);
|
||||
assert.strictEqual(keycode(Infinity), undefined);
|
||||
assert.strictEqual(keycode(0.3), undefined);
|
||||
assert.strictEqual(keycode(9999999), undefined);
|
||||
})
|
||||
|
||||
it('returns code for objects implementing toString function', function() {
|
||||
var obj = {}
|
||||
obj.toString = function() {
|
||||
return 'a'
|
||||
}
|
||||
assert.strictEqual(keycode(obj), 65);
|
||||
})
|
||||
|
||||
it('returns char for objects with a keyCode property', function() {
|
||||
var obj = { keyCode: 65 }
|
||||
assert.strictEqual(keycode(obj), 'a');
|
||||
})
|
||||
|
||||
it('returns undefined for any other passed in type', function() {
|
||||
assert.strictEqual(keycode({}), undefined);
|
||||
assert.strictEqual(keycode([]), undefined);
|
||||
assert.strictEqual(keycode([1,2]), undefined);
|
||||
assert.strictEqual(keycode(null), undefined);
|
||||
assert.strictEqual(keycode(undefined), undefined);
|
||||
assert.strictEqual(keycode(/.*/), undefined);
|
||||
assert.strictEqual(keycode(), undefined);
|
||||
})
|
||||
|
||||
it('is commutative', function() {
|
||||
for (var key in keycode.code) {
|
||||
assert.strictEqual(keycode(key), keycode(keycode(keycode(key))))
|
||||
}
|
||||
})
|
||||
|
||||
it('exposes keycode/name maps', function() {
|
||||
for (var code in keycode.codes) {
|
||||
assert.strictEqual(keycode(code), keycode(keycode.names[keycode.codes[code]]))
|
||||
}
|
||||
})
|
||||
|
||||
it('should return shift, ctrl, and alt for 16, 17, and 18', function() {
|
||||
assert.strictEqual(keycode(16), 'shift')
|
||||
assert.strictEqual(keycode(17), 'ctrl')
|
||||
assert.strictEqual(keycode(18), 'alt')
|
||||
})
|
||||
|
||||
describe('isEventKey', function() {
|
||||
|
||||
it('should allow to compare events to their names', function() {
|
||||
var event = { which: 13, keyCode: 13, charCode: 13 };
|
||||
assert.strictEqual(keycode.isEventKey(event, 'enter'), true);
|
||||
assert.strictEqual(keycode.isEventKey(event, 'down'), false);
|
||||
});
|
||||
|
||||
it('should allow to compare events to their names (case insensitive)', function() {
|
||||
var event = { which: 13, keyCode: 13, charCode: 13 };
|
||||
assert.strictEqual(keycode.isEventKey(event, 'eNtER'), true);
|
||||
assert.strictEqual(keycode.isEventKey(event, 'dOWN'), false);
|
||||
});
|
||||
|
||||
it('should return false if a ', function() {
|
||||
var event = { which: 13, keyCode: 13, charCode: 13 };
|
||||
assert.strictEqual(keycode.isEventKey(event, 'eNtER'), true);
|
||||
assert.strictEqual(keycode.isEventKey(event, 'dOWN'), false);
|
||||
});
|
||||
|
||||
it('should allow to compare events to their keyCodes)', function() {
|
||||
var event = { which: 13, keyCode: 13, charCode: 13 };
|
||||
assert.strictEqual(keycode.isEventKey(event, 13), true);
|
||||
assert.strictEqual(keycode.isEventKey(event, 14), false);
|
||||
});
|
||||
|
||||
it('should not break when invalid key codes are entered, instead false should be returned', function() {
|
||||
var event = { which: -1, keyCode: -1, charCode: -1 };
|
||||
assert.strictEqual(keycode.isEventKey(event, 'enter'), false);
|
||||
assert.strictEqual(keycode.isEventKey(event, 'down'), false);
|
||||
});
|
||||
|
||||
});
|
||||
|
203
node_modules/keycode/test/mocha.css
generated
vendored
Normal file
203
node_modules/keycode/test/mocha.css
generated
vendored
Normal file
|
@ -0,0 +1,203 @@
|
|||
@charset "UTF-8";
|
||||
body {
|
||||
font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
padding: 60px 50px;
|
||||
}
|
||||
|
||||
#mocha ul, #mocha li {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#mocha ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
#mocha h1, #mocha h2 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#mocha h1 {
|
||||
margin-top: 15px;
|
||||
font-size: 1em;
|
||||
font-weight: 200;
|
||||
}
|
||||
|
||||
#mocha h1 a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
#mocha h1 a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#mocha .suite .suite h1 {
|
||||
margin-top: 0;
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#mocha h2 {
|
||||
font-size: 12px;
|
||||
font-weight: normal;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#mocha .suite {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
#mocha .test {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
#mocha .test:hover h2::after {
|
||||
position: relative;
|
||||
top: 0;
|
||||
right: -10px;
|
||||
content: '(view source)';
|
||||
font-size: 12px;
|
||||
font-family: arial;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
#mocha .test.pending:hover h2::after {
|
||||
content: '(pending)';
|
||||
font-family: arial;
|
||||
}
|
||||
|
||||
#mocha .test.pass.medium .duration {
|
||||
background: #C09853;
|
||||
}
|
||||
|
||||
#mocha .test.pass.slow .duration {
|
||||
background: #B94A48;
|
||||
}
|
||||
|
||||
#mocha .test.pass::before {
|
||||
content: '✓';
|
||||
font-size: 12px;
|
||||
display: block;
|
||||
float: left;
|
||||
margin-right: 5px;
|
||||
color: #00d6b2;
|
||||
}
|
||||
|
||||
#mocha .test.pass .duration {
|
||||
font-size: 9px;
|
||||
margin-left: 5px;
|
||||
padding: 2px 5px;
|
||||
color: white;
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
|
||||
-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
|
||||
box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-ms-border-radius: 5px;
|
||||
-o-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
#mocha .test.pass.fast .duration {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#mocha .test.pending {
|
||||
color: #0b97c4;
|
||||
}
|
||||
|
||||
#mocha .test.pending::before {
|
||||
content: '◦';
|
||||
color: #0b97c4;
|
||||
}
|
||||
|
||||
#mocha .test.fail {
|
||||
color: #c00;
|
||||
}
|
||||
|
||||
#mocha .test.fail pre {
|
||||
color: black;
|
||||
}
|
||||
|
||||
#mocha .test.fail::before {
|
||||
content: '✖';
|
||||
font-size: 12px;
|
||||
display: block;
|
||||
float: left;
|
||||
margin-right: 5px;
|
||||
color: #c00;
|
||||
}
|
||||
|
||||
#mocha .test pre.error {
|
||||
color: #c00;
|
||||
}
|
||||
|
||||
#mocha .test pre {
|
||||
display: inline-block;
|
||||
font: 12px/1.5 monaco, monospace;
|
||||
margin: 5px;
|
||||
padding: 15px;
|
||||
border: 1px solid #eee;
|
||||
border-bottom-color: #ddd;
|
||||
-webkit-border-radius: 3px;
|
||||
-webkit-box-shadow: 0 1px 3px #eee;
|
||||
}
|
||||
|
||||
#report.pass .test.fail {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#report.fail .test.pass {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#error {
|
||||
color: #c00;
|
||||
font-size: 1.5 em;
|
||||
font-weight: 100;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
|
||||
#stats {
|
||||
position: fixed;
|
||||
top: 15px;
|
||||
right: 10px;
|
||||
font-size: 12px;
|
||||
margin: 0;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
#stats .progress {
|
||||
float: right;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
#stats em {
|
||||
color: black;
|
||||
}
|
||||
|
||||
#stats a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
#stats a:hover {
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
#stats li {
|
||||
display: inline-block;
|
||||
margin: 0 5px;
|
||||
list-style: none;
|
||||
padding-top: 11px;
|
||||
}
|
||||
|
||||
code .comment { color: #ddd }
|
||||
code .init { color: #2F6FAD }
|
||||
code .string { color: #5890AD }
|
||||
code .keyword { color: #8A6343 }
|
||||
code .number { color: #2F6FAD }
|
4906
node_modules/keycode/test/mocha.js
generated
vendored
Normal file
4906
node_modules/keycode/test/mocha.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
17
node_modules/keycode/test/tests.html
generated
vendored
Normal file
17
node_modules/keycode/test/tests.html
generated
vendored
Normal file
|
@ -0,0 +1,17 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Mocha</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="mocha.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="mocha"></div>
|
||||
<script src="mocha.js"></script>
|
||||
<script src="../build/build.js"></script>
|
||||
<script>mocha.setup('bdd')</script>
|
||||
<script src="keycode.js"></script>
|
||||
<script>
|
||||
mocha.run();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Add table
Add a link
Reference in a new issue