rx-hotkeys 2.2.0 → 2.2.1
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/dist/hotkeys.d.ts.map +1 -1
- package/dist/hotkeys.js +9 -6
- package/dist/hotkeys.test.js +35 -0
- package/package.json +1 -1
package/dist/hotkeys.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hotkeys.d.ts","sourceRoot":"","sources":["../src/hotkeys.ts"],"names":[],"mappings":"AAAA,OAAO,EACuC,UAAU,EAEvD,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIxC,oBAAY,aAAa;IACrB,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;CACxB;AAED,UAAU,kBAAkB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC5D;;;;;;;;;;OAUG;IACH,IAAI,EAAE;QACF;;;;;;;;;WASG;QACH,GAAG,EAAE,WAAW,CAAC;QACjB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IACzD;;;;;;;;OAQG;IACH,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAyCD;;;;GAIG;AACH,qBAAa,OAAO;IAChB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAa;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAc;IAEhD,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,SAAS,CAAU;IAE3B;;;;;OAKG;gBACS,cAAc,GAAE,MAAM,GAAG,IAAW,EAAE,SAAS,GAAE,OAAe;IAe5E;;;;;;OAMG;IACI,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAiBnD;;;OAGG;IACI,UAAU,IAAI,MAAM,GAAG,IAAI;IAIlC;;;;OAIG;IACI,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAa1C;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAW,gBAAgB,IAAI,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,CAEvD;IAED;;;;OAIG;IACI,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIvC,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,iBAAiB;IAkBzB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACI,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"hotkeys.d.ts","sourceRoot":"","sources":["../src/hotkeys.ts"],"names":[],"mappings":"AAAA,OAAO,EACuC,UAAU,EAEvD,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIxC,oBAAY,aAAa;IACrB,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;CACxB;AAED,UAAU,kBAAkB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC5D;;;;;;;;;;OAUG;IACH,IAAI,EAAE;QACF;;;;;;;;;WASG;QACH,GAAG,EAAE,WAAW,CAAC;QACjB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IACzD;;;;;;;;OAQG;IACH,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAyCD;;;;GAIG;AACH,qBAAa,OAAO;IAChB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAa;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAc;IAEhD,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,SAAS,CAAU;IAE3B;;;;;OAKG;gBACS,cAAc,GAAE,MAAM,GAAG,IAAW,EAAE,SAAS,GAAE,OAAe;IAe5E;;;;;;OAMG;IACI,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAiBnD;;;OAGG;IACI,UAAU,IAAI,MAAM,GAAG,IAAI;IAIlC;;;;OAIG;IACI,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAa1C;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAW,gBAAgB,IAAI,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,CAEvD;IAED;;;;OAIG;IACI,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIvC,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,iBAAiB;IAkBzB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACI,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS;IAgFvE;;;;;;;;;;;;;;;;;;;OAmBG;IACI,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS;IAkHjE;;;;;;OAMG;IACI,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAYlC;;;;;;OAMG;IACI,kBAAkB,IAAI;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,aAAa,CAAA;KAAC,EAAE;IAa/G;;;;;OAKG;IACI,OAAO,IAAI,IAAI;CAOzB"}
|
package/dist/hotkeys.js
CHANGED
|
@@ -184,8 +184,9 @@ export class Hotkeys {
|
|
|
184
184
|
let keyDetailsForLog;
|
|
185
185
|
if (typeof keys === "string") {
|
|
186
186
|
// Shorthand: keys is StandardKey, implying no modifiers should be active
|
|
187
|
-
|
|
188
|
-
|
|
187
|
+
// Corrected validation: Check for actual empty string, not a string that trims to empty.
|
|
188
|
+
if (keys === "") { // StandardKey type should prevent this, but check for robustness.
|
|
189
|
+
console.warn(`${Hotkeys.LOG_PREFIX} Invalid "keys" (shorthand) for combination shortcut "${id}". Key must not be an empty string. Shortcut not added.`);
|
|
189
190
|
return undefined;
|
|
190
191
|
}
|
|
191
192
|
configuredMainKey = keys;
|
|
@@ -197,8 +198,9 @@ export class Hotkeys {
|
|
|
197
198
|
}
|
|
198
199
|
else {
|
|
199
200
|
// Object form
|
|
200
|
-
|
|
201
|
-
|
|
201
|
+
// Corrected validation for keys.key
|
|
202
|
+
if (!keys || !keys.key || typeof keys.key !== "string" || keys.key === "") { // StandardKey type should prevent empty string for key.key
|
|
203
|
+
console.warn(`${Hotkeys.LOG_PREFIX} Invalid "keys.key" for combination shortcut "${id}". Key must be a non-empty string value from Keys. Shortcut not added.`);
|
|
202
204
|
return undefined;
|
|
203
205
|
}
|
|
204
206
|
configuredMainKey = keys.key;
|
|
@@ -270,8 +272,9 @@ export class Hotkeys {
|
|
|
270
272
|
console.warn(`${Hotkeys.LOG_PREFIX} Sequence for shortcut "${id}" is empty or invalid. Shortcut not added.`);
|
|
271
273
|
return undefined;
|
|
272
274
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
+
// Corrected validation: Check for actual empty string, not a string that trims to empty.
|
|
276
|
+
if (sequence.some(key => typeof key !== "string" || key === "")) { // StandardKey type should prevent empty strings.
|
|
277
|
+
console.warn(`${Hotkeys.LOG_PREFIX} Invalid key in sequence for shortcut "${id}". All keys must be non-empty string values from Keys. Shortcut not added.`);
|
|
275
278
|
return undefined;
|
|
276
279
|
}
|
|
277
280
|
const configuredSequence = sequence;
|
package/dist/hotkeys.test.js
CHANGED
|
@@ -340,6 +340,18 @@ describe("Hotkeys Library (Node.js Test Runner)", () => {
|
|
|
340
340
|
consoleLogMock.mock.restore();
|
|
341
341
|
keyManager.setDebugMode(false);
|
|
342
342
|
});
|
|
343
|
+
it("should trigger callback for Keys.Space using shorthand", () => {
|
|
344
|
+
const config = { id: "spaceShorthand", keys: Keys.Space, callback: mockCallback };
|
|
345
|
+
keyManager.addCombination(config);
|
|
346
|
+
dispatchKeyEvent(" "); // Event key for space is " "
|
|
347
|
+
assert.strictEqual(mockCallback.calledCount, 1, "Callback for Keys.Space (shorthand) not called");
|
|
348
|
+
});
|
|
349
|
+
it("should trigger callback for Keys.Space using object form", () => {
|
|
350
|
+
const config = { id: "spaceObject", keys: { key: Keys.Space }, callback: mockCallback };
|
|
351
|
+
keyManager.addCombination(config);
|
|
352
|
+
dispatchKeyEvent(" ");
|
|
353
|
+
assert.strictEqual(mockCallback.calledCount, 1, "Callback for Keys.Space (object form) not called");
|
|
354
|
+
});
|
|
343
355
|
});
|
|
344
356
|
});
|
|
345
357
|
describe("addSequence", () => {
|
|
@@ -402,6 +414,29 @@ describe("Hotkeys Library (Node.js Test Runner)", () => {
|
|
|
402
414
|
assert.strictEqual(consoleErrorMock.mock.calls.length, 1);
|
|
403
415
|
assert.ok(consoleErrorMock.mock.calls[0].arguments[0].includes(`Error in user callback for sequence shortcut "errorSeq"`));
|
|
404
416
|
});
|
|
417
|
+
it("should trigger callback for a sequence including Keys.Space", () => {
|
|
418
|
+
const config = {
|
|
419
|
+
id: "seqWithSpace",
|
|
420
|
+
sequence: [Keys.G, Keys.Space, Keys.I],
|
|
421
|
+
callback: mockCallback
|
|
422
|
+
};
|
|
423
|
+
keyManager.addSequence(config);
|
|
424
|
+
dispatchKeyEvent(Keys.G);
|
|
425
|
+
dispatchKeyEvent(Keys.Space); // Dispatch " " for space
|
|
426
|
+
dispatchKeyEvent(Keys.I);
|
|
427
|
+
assert.strictEqual(mockCallback.calledCount, 1, "Callback for sequence with Keys.Space not called");
|
|
428
|
+
});
|
|
429
|
+
it("should trigger callback for a sequence starting or ending with Keys.Space", () => {
|
|
430
|
+
const config = {
|
|
431
|
+
id: "seqStartSpace",
|
|
432
|
+
sequence: [Keys.Space, Keys.A],
|
|
433
|
+
callback: mockCallback
|
|
434
|
+
};
|
|
435
|
+
keyManager.addSequence(config);
|
|
436
|
+
dispatchKeyEvent(Keys.Space);
|
|
437
|
+
dispatchKeyEvent(Keys.A);
|
|
438
|
+
assert.strictEqual(mockCallback.calledCount, 1, "Callback for sequence starting with Keys.Space not called");
|
|
439
|
+
});
|
|
405
440
|
describe("Sequence Contextual Triggering", () => {
|
|
406
441
|
let editorSequenceConfig;
|
|
407
442
|
beforeEach(() => {
|