umbr-key-master 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -107
- package/dist/index.d.ts +19 -31
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +65 -47
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +20 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/w3ckeyAttributeValues.d.ts +1 -0
- package/dist/w3ckeyAttributeValues.d.ts.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,120 +1,60 @@
|
|
|
1
1
|
# KeyMaster
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Features
|
|
8
|
-
|
|
9
|
-
* **Multi-Key Support**: Listen to single keys or complex combinations (e.g., `Ctrl + Shift + S`).
|
|
10
|
-
* **Standard Compliant**: Supports all standard key types defined by the W3C UI Events spec:
|
|
11
|
-
* **Alphabet keys** (A-Z)
|
|
12
|
-
* **Control keys** (Enter, Escape, Backspace)
|
|
13
|
-
* **Modifier keys** (Shift, Ctrl, Alt, Meta)
|
|
14
|
-
* **Navigation keys** (Arrow keys, Home, End)
|
|
15
|
-
* **Function keys** (F1-F12)
|
|
16
|
-
* **Multimedia & Device keys**
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
* **Contextual Data**: Pass custom data or state to your callbacks automatically.
|
|
20
|
-
* **Memory Safe**: Simple `dispose()` method to clean up event listeners and prevent memory leaks.
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## Installation
|
|
3
|
+
A lightweight, type-safe TypeScript library for managing complex keyboard shortcuts and multi-key combinations in the browser.
|
|
25
4
|
|
|
26
5
|
```bash
|
|
27
|
-
npm
|
|
28
|
-
|
|
6
|
+
npm i umbr-key-master
|
|
29
7
|
```
|
|
30
8
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
9
|
+
# Example usage
|
|
10
|
+
|
|
11
|
+
```html
|
|
12
|
+
<!doctype html>
|
|
13
|
+
<html lang="en">
|
|
14
|
+
<head>
|
|
15
|
+
<meta charset="UTF-8" />
|
|
16
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
17
|
+
<title>KeyMaster Popup Test</title>
|
|
18
|
+
</head>
|
|
19
|
+
<body>
|
|
20
|
+
<h1>KeyMaster Popup Test</h1>
|
|
21
|
+
<p>Press the keys below to see popups:</p>
|
|
22
|
+
<ul>
|
|
23
|
+
<li>Escape → Alert "Escape key pressed!"</li>
|
|
24
|
+
<li>Control + q → Alert "Control + q pressed!"</li>
|
|
25
|
+
</ul>
|
|
26
|
+
|
|
27
|
+
<script type="module">
|
|
28
|
+
import { KeyMaster } from "../dist/index.js";
|
|
29
|
+
|
|
30
|
+
const km = new KeyMaster();
|
|
31
|
+
|
|
32
|
+
// ---- Single key: Escape ----
|
|
33
|
+
km.add(["Escape"], () => {
|
|
34
|
+
alert("Escape key pressed!");
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// ---- Multi-key: Control + S ----
|
|
38
|
+
km.add(["Control", "q"], () => {
|
|
39
|
+
alert("Control + q pressed!");
|
|
40
|
+
});
|
|
41
|
+
</script>
|
|
42
|
+
</body>
|
|
43
|
+
</html>
|
|
44
|
+
```
|
|
37
45
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
timestamp: Date.now(),
|
|
41
|
-
activeEditor: "main-text-area"
|
|
42
|
-
});
|
|
46
|
+
```js
|
|
47
|
+
import { KeyMaster } from "umbr-key-master";
|
|
43
48
|
|
|
44
|
-
|
|
45
|
-
const km = new KeyMaster(getContext);
|
|
49
|
+
const km = new KeyMaster();
|
|
46
50
|
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
console.log("Combination triggered!", data);
|
|
51
|
+
// ---- Single key: Escape ----
|
|
52
|
+
km.add(["Escape"], () => {
|
|
53
|
+
alert("Escape key pressed!");
|
|
51
54
|
});
|
|
52
55
|
|
|
53
|
-
//
|
|
54
|
-
km.add(["
|
|
55
|
-
|
|
56
|
+
// ---- Multi-key: Control + S ----
|
|
57
|
+
km.add(["Control", "q"], () => {
|
|
58
|
+
alert("Control + q pressed!");
|
|
56
59
|
});
|
|
57
|
-
|
|
58
|
-
// 5. Removing a callback
|
|
59
|
-
const myCallback = () => console.log("Temporary shortcut");
|
|
60
|
-
km.add(["Control", "s"], myCallback);
|
|
61
|
-
|
|
62
|
-
// Later...
|
|
63
|
-
km.remove(myCallback);
|
|
64
|
-
|
|
65
|
-
// 6. Clean up when the component or page is destroyed
|
|
66
|
-
km.dispose();
|
|
67
|
-
|
|
68
60
|
```
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
## API Reference
|
|
73
|
-
|
|
74
|
-
### `constructor(getDataFunc?: GetDataCallback)`
|
|
75
|
-
|
|
76
|
-
Initializes the listener.
|
|
77
|
-
|
|
78
|
-
* **`getDataFunc`**: (Optional) A sync or async function. The return value of this function is passed as the first argument to every triggered callback.
|
|
79
|
-
|
|
80
|
-
### `add(targetKeys: PressableKey[], callback: KeyCallback): void`
|
|
81
|
-
|
|
82
|
-
Registers a callback to a specific combination.
|
|
83
|
-
|
|
84
|
-
* **`targetKeys`**: An array of `PressableKey` strings. The order does not matter as the library sorts them internally.
|
|
85
|
-
* **`callback`**: The function to run when all keys in the array (and *only* those keys) are held down.
|
|
86
|
-
|
|
87
|
-
### `remove(callback: KeyCallback): void`
|
|
88
|
-
|
|
89
|
-
Unregisters a specific callback function from all key combinations it was assigned to.
|
|
90
|
-
|
|
91
|
-
### `dispose(): void`
|
|
92
|
-
|
|
93
|
-
Removes the `keydown` and `keyup` listeners from the `document` and clears all internal maps. Use this during component unmounting or page transitions.
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
## Supported Key Categories
|
|
98
|
-
|
|
99
|
-
The library utilizes the full W3C UI Events key set. Common categories include:
|
|
100
|
-
|
|
101
|
-
| Category | Examples |
|
|
102
|
-
| --- | --- |
|
|
103
|
-
| **Modifiers** | `Shift`, `Control`, `Alt`, `Meta` |
|
|
104
|
-
| **Navigation** | `ArrowUp`, `ArrowDown`, `Home`, `PageUp` |
|
|
105
|
-
| **Editing** | `Backspace`, `Delete`, `Enter`, `Tab` |
|
|
106
|
-
| **UI Control** | `Escape`, `ContextMenu`, `Pause` |
|
|
107
|
-
| **Functions** | `F1` through `F20` |
|
|
108
|
-
|
|
109
|
-
---
|
|
110
|
-
|
|
111
|
-
## License
|
|
112
|
-
|
|
113
|
-
MIT © Yousaf Wazir
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
# Building
|
|
117
|
-
|
|
118
|
-
- Change version up - push git change
|
|
119
|
-
- Run `npm run build`
|
|
120
|
-
- Run `npm run pubish`
|
package/dist/index.d.ts
CHANGED
|
@@ -1,49 +1,36 @@
|
|
|
1
|
-
import
|
|
2
|
-
/**
|
|
3
|
-
* Additional options for the KeyMaster instance.
|
|
4
|
-
*/
|
|
5
|
-
export type KeyMasterOptions = {
|
|
6
|
-
/**
|
|
7
|
-
* If true, key comparisons will ignore casing (e.g., 'A' and 'a' are treated as the same key).
|
|
8
|
-
* @default false
|
|
9
|
-
*/
|
|
10
|
-
caseInsensitive?: boolean;
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* A function used to retrieve custom data passed to callbacks when conditions are met.
|
|
14
|
-
*/
|
|
15
|
-
export type GetDataCallback = (() => any | Promise<any>) | null;
|
|
16
|
-
/**
|
|
17
|
-
* Union type of valid key values mapped from the W3C UI Events / DOM specification.
|
|
18
|
-
*/
|
|
19
|
-
export type PressableKey = UIEventUnicodeKey | UnicodeControlKey | GlyphModifierKey | SpecialKey | ModifierKey | WhitespaceKey | NavigationKey | EditingKey | UIKey | DeviceKey | FunctionKey;
|
|
20
|
-
/**
|
|
21
|
-
* A callback function executed when registered key combinations are triggered.
|
|
22
|
-
*/
|
|
23
|
-
export type KeyCallback = (data: any) => any | Promise<any>;
|
|
1
|
+
import type types = require("./types");
|
|
24
2
|
/**
|
|
25
3
|
* Manages keyboard shortcuts and multi-key combinations.
|
|
26
|
-
* Supports case-insensitive matching and contextual data injection.
|
|
27
4
|
*/
|
|
28
5
|
export declare class KeyMaster {
|
|
29
|
-
|
|
6
|
+
/** Holds list of keys pressed */
|
|
30
7
|
private readonly _keys;
|
|
8
|
+
/** Holds a list of callbacks to run */
|
|
31
9
|
private readonly _callbacks;
|
|
10
|
+
/** Options for `this` keymaster */
|
|
32
11
|
private _options;
|
|
33
12
|
/**
|
|
34
|
-
* @param getDataFunc - Optional helper to provide data to callbacks.
|
|
35
13
|
* @param options - Configuration options for key handling.
|
|
36
14
|
*/
|
|
37
|
-
constructor(
|
|
15
|
+
constructor(options?: types.KeyMasterOptions);
|
|
38
16
|
/**
|
|
39
17
|
* Normalizes an array of keys into a sorted string ID.
|
|
40
|
-
* Handles case normalization if caseInsensitive is enabled.
|
|
41
18
|
*/
|
|
42
19
|
private makeKey;
|
|
43
20
|
private handleKeyDown;
|
|
44
21
|
private handleKeyUp;
|
|
45
22
|
/**
|
|
46
|
-
*
|
|
23
|
+
* Clears all pressed keys when window loses focus.
|
|
24
|
+
* This prevents keys from getting "stuck" when DevTools or other windows are opened.
|
|
25
|
+
*/
|
|
26
|
+
private handleBlur;
|
|
27
|
+
/**
|
|
28
|
+
* Clears all pressed keys when document becomes hidden.
|
|
29
|
+
* This handles cases where the page loses visibility.
|
|
30
|
+
*/
|
|
31
|
+
private handleVisibilityChange;
|
|
32
|
+
/**
|
|
33
|
+
* Executes a list of callbacks.
|
|
47
34
|
*/
|
|
48
35
|
private run;
|
|
49
36
|
/**
|
|
@@ -51,13 +38,14 @@ export declare class KeyMaster {
|
|
|
51
38
|
* @param targetKeys - Array of keys (e.g., ["Control", "S"]).
|
|
52
39
|
* @param callback - Function to trigger.
|
|
53
40
|
*/
|
|
54
|
-
add(targetKeys: PressableKey[], callback: KeyCallback): void;
|
|
41
|
+
add(targetKeys: types.PressableKey[], callback: types.KeyCallback): void;
|
|
55
42
|
/**
|
|
56
43
|
* Removes a callback from all registered combinations.
|
|
57
44
|
*/
|
|
58
|
-
remove(callback: KeyCallback): void;
|
|
45
|
+
remove(callback: types.KeyCallback): void;
|
|
59
46
|
/**
|
|
60
47
|
* Cleans up event listeners and internal state.
|
|
61
48
|
*/
|
|
62
49
|
dispose(): void;
|
|
63
50
|
}
|
|
51
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,KAAK,GAAG,QAAQ,SAAS,CAAC,CAAC;AAEvC;;GAEG;AACH,qBAAa,SAAS;IACpB,iCAAiC;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAE3C,uCAAuC;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+C;IAE1E,mCAAmC;IACnC,OAAO,CAAC,QAAQ,CAAyB;IAEzC;;OAEG;gBACS,OAAO,GAAE,KAAK,CAAC,gBAAqB;IAgBhD;;OAEG;IACH,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,aAAa,CAsBnB;IAEF,OAAO,CAAC,WAAW,CAMjB;IAEF;;;OAGG;IACH,OAAO,CAAC,UAAU,CAEhB;IAEF;;;OAGG;IACH,OAAO,CAAC,sBAAsB,CAI5B;IAEF;;OAEG;YACW,GAAG;IAMjB;;;;OAIG;IACH,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI;IAUxE;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI;IAYzC;;OAEG;IACH,OAAO,IAAI,IAAI;CAWhB"}
|
package/dist/index.js
CHANGED
|
@@ -1,68 +1,84 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
/**
|
|
11
2
|
* Manages keyboard shortcuts and multi-key combinations.
|
|
12
|
-
* Supports case-insensitive matching and contextual data injection.
|
|
13
3
|
*/
|
|
14
4
|
export class KeyMaster {
|
|
5
|
+
/** Holds list of keys pressed */
|
|
6
|
+
_keys = new Set();
|
|
7
|
+
/** Holds a list of callbacks to run */
|
|
8
|
+
_callbacks = new Map();
|
|
9
|
+
/** Options for `this` keymaster */
|
|
10
|
+
_options;
|
|
15
11
|
/**
|
|
16
|
-
* @param getDataFunc - Optional helper to provide data to callbacks.
|
|
17
12
|
* @param options - Configuration options for key handling.
|
|
18
13
|
*/
|
|
19
|
-
constructor(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
this.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
: event.key;
|
|
27
|
-
this._keys.add(keyToStore);
|
|
28
|
-
const pressed = Array.from(this._keys.values());
|
|
29
|
-
const comboId = this.makeKey(pressed);
|
|
30
|
-
const callbacks = this._callbacks.get(comboId);
|
|
31
|
-
if (callbacks) {
|
|
32
|
-
this.run(callbacks);
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
this.handleKeyUp = (event) => {
|
|
36
|
-
const keyToRemove = this._options.caseInsensitive
|
|
37
|
-
? event.key.toLowerCase()
|
|
38
|
-
: event.key;
|
|
39
|
-
this._keys.delete(keyToRemove);
|
|
14
|
+
constructor(options = {}) {
|
|
15
|
+
if (typeof options !== "object") {
|
|
16
|
+
throw new TypeError("options must be a valid object");
|
|
17
|
+
}
|
|
18
|
+
this._options = {
|
|
19
|
+
caseInsensitive: false,
|
|
20
|
+
...options,
|
|
40
21
|
};
|
|
41
|
-
this._getData = getDataFunc;
|
|
42
|
-
this._options = Object.assign({ caseInsensitive: false }, options);
|
|
43
22
|
document.addEventListener("keydown", this.handleKeyDown);
|
|
44
23
|
document.addEventListener("keyup", this.handleKeyUp);
|
|
24
|
+
window.addEventListener("blur", this.handleBlur);
|
|
25
|
+
document.addEventListener("visibilitychange", this.handleVisibilityChange);
|
|
45
26
|
}
|
|
46
27
|
/**
|
|
47
28
|
* Normalizes an array of keys into a sorted string ID.
|
|
48
|
-
* Handles case normalization if caseInsensitive is enabled.
|
|
49
29
|
*/
|
|
50
30
|
makeKey(keys) {
|
|
51
|
-
|
|
52
|
-
? keys.map((k) => k.toLowerCase())
|
|
53
|
-
: keys;
|
|
54
|
-
return normalizedKeys.sort().join("_");
|
|
31
|
+
return keys.sort().join("_");
|
|
55
32
|
}
|
|
33
|
+
handleKeyDown = (event) => {
|
|
34
|
+
const keyToStore = this._options.caseInsensitive
|
|
35
|
+
? event.key.toLowerCase()
|
|
36
|
+
: event.key;
|
|
37
|
+
this._keys.add(keyToStore);
|
|
38
|
+
// Try single-key callback first, this is because when users register single keys, quick fires fail to run there logic.
|
|
39
|
+
const singleKeyCallbacks = this._callbacks.get(keyToStore);
|
|
40
|
+
if (singleKeyCallbacks) {
|
|
41
|
+
this.run(singleKeyCallbacks);
|
|
42
|
+
}
|
|
43
|
+
// Then multi-key combo
|
|
44
|
+
const pressed = Array.from(this._keys.values());
|
|
45
|
+
if (pressed.length > 1) {
|
|
46
|
+
const comboId = this.makeKey(pressed);
|
|
47
|
+
const comboCallbacks = this._callbacks.get(comboId);
|
|
48
|
+
if (comboCallbacks) {
|
|
49
|
+
this.run(comboCallbacks);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
handleKeyUp = (event) => {
|
|
54
|
+
const keyToRemove = this._options.caseInsensitive
|
|
55
|
+
? event.key.toLowerCase()
|
|
56
|
+
: event.key;
|
|
57
|
+
this._keys.delete(keyToRemove);
|
|
58
|
+
};
|
|
56
59
|
/**
|
|
57
|
-
*
|
|
60
|
+
* Clears all pressed keys when window loses focus.
|
|
61
|
+
* This prevents keys from getting "stuck" when DevTools or other windows are opened.
|
|
58
62
|
*/
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
handleBlur = () => {
|
|
64
|
+
this._keys.clear();
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Clears all pressed keys when document becomes hidden.
|
|
68
|
+
* This handles cases where the page loses visibility.
|
|
69
|
+
*/
|
|
70
|
+
handleVisibilityChange = () => {
|
|
71
|
+
if (document.hidden) {
|
|
72
|
+
this._keys.clear();
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Executes a list of callbacks.
|
|
77
|
+
*/
|
|
78
|
+
async run(callbacks) {
|
|
79
|
+
for (const callback of callbacks) {
|
|
80
|
+
await callback();
|
|
81
|
+
}
|
|
66
82
|
}
|
|
67
83
|
/**
|
|
68
84
|
* Registers a callback for a specific combination of keys.
|
|
@@ -96,6 +112,8 @@ export class KeyMaster {
|
|
|
96
112
|
dispose() {
|
|
97
113
|
document.removeEventListener("keydown", this.handleKeyDown);
|
|
98
114
|
document.removeEventListener("keyup", this.handleKeyUp);
|
|
115
|
+
window.removeEventListener("blur", this.handleBlur);
|
|
116
|
+
document.removeEventListener("visibilitychange", this.handleVisibilityChange);
|
|
99
117
|
this._callbacks.clear();
|
|
100
118
|
this._keys.clear();
|
|
101
119
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { DeviceKey, EditingKey, FunctionKey, GlyphModifierKey, ModifierKey, NavigationKey, SpecialKey, UIEventUnicodeKey, UIKey, UnicodeControlKey, WhitespaceKey } from "./w3ckeyAttributeValues";
|
|
2
|
+
/**
|
|
3
|
+
* Additional options for the KeyMaster instance.
|
|
4
|
+
*/
|
|
5
|
+
export type KeyMasterOptions = {
|
|
6
|
+
/**
|
|
7
|
+
* If true, key comparisons will ignore casing (e.g., 'A' and 'a' are treated as the same key).
|
|
8
|
+
* @default false
|
|
9
|
+
*/
|
|
10
|
+
caseInsensitive?: boolean;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* A callback function executed when registered key combinations are triggered.
|
|
14
|
+
*/
|
|
15
|
+
export type KeyCallback = () => any | Promise<any>;
|
|
16
|
+
/**
|
|
17
|
+
* Union type of valid key values mapped from the W3C UI Events / DOM specification.
|
|
18
|
+
*/
|
|
19
|
+
export type PressableKey = UIEventUnicodeKey | UnicodeControlKey | GlyphModifierKey | SpecialKey | ModifierKey | WhitespaceKey | NavigationKey | EditingKey | UIKey | DeviceKey | FunctionKey;
|
|
20
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,KAAK,EACL,iBAAiB,EACjB,aAAa,EACd,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,iBAAiB,GACjB,iBAAiB,GACjB,gBAAgB,GAChB,UAAU,GACV,WAAW,GACX,aAAa,GACb,aAAa,GACb,UAAU,GACV,KAAK,GACL,SAAS,GACT,WAAW,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"w3ckeyAttributeValues.d.ts","sourceRoot":"","sources":["../src/w3ckeyAttributeValues.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "umbr-key-master",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "A lightweight, type-safe TypeScript library for managing complex keyboard shortcuts and multi-key combinations in the browser.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|