First release

This commit is contained in:
Owen Quinlan 2021-07-02 19:29:34 +10:00
commit fa6c85266e
2339 changed files with 761050 additions and 0 deletions

3
node_modules/keycode/.npmignore generated vendored Normal file
View file

@ -0,0 +1,3 @@
components
build
node_modules

5
node_modules/keycode/.travis.yml generated vendored Normal file
View file

@ -0,0 +1,5 @@
language: node_js
node_js:
- "8"
- "6"
- "4"

21
node_modules/keycode/LICENSE generated vendored Normal file
View 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
View 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
View file

@ -0,0 +1,136 @@
# keycode
Simple map of keyboard codes.
[![Build Status](https://travis-ci.org/timoxley/keycode.png?branch=master)](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
View 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
View 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
View 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
View 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
View 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
View 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
View 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

File diff suppressed because it is too large Load diff

17
node_modules/keycode/test/tests.html generated vendored Normal file
View 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>