DefinitelyTyped/types/atom-keymap/atom-keymap-tests.ts

93 lines
3.0 KiB
TypeScript

import { Disposable } from "event-kit";
import KeymapManager = require("atom-keymap");
import * as ImportTest from "atom-keymap";
declare const element: HTMLElement;
declare let sub: Disposable;
declare const event: KeyboardEvent;
// NPM Examples ===============================================================
const keymaps = new KeymapManager();
keymaps.defaultTarget = document.body;
// Pass all the window's keydown events to the KeymapManager
document.addEventListener("keydown", (event): void => {
keymaps.handleKeyboardEvent(event);
});
// Add some keymaps. It can also be a directory of json / cson files.
keymaps.loadKeymap("/path/to/keymap-file.json");
// OR
keymaps.add("/key/for/these/keymaps", {
body: {
up: "core:move-up",
down: "core:move-down",
},
});
// When a keybinding is triggered, it will dispatch it on the node that was focused
window.addEventListener("core:move-up", (event) => console.log("up", event));
window.addEventListener("core:move-down", (event) => console.log("down", event));
// General Usage ==============================================================
const manager = new KeymapManager();
manager.add("some/unique/path", {
".workspace": {
"ctrl-x": "package:do-something",
"ctrl-y": "package:do-something-else",
},
".test": {
enter: "core:confirm",
},
});
manager.onDidMatchBinding((event): void => {
console.log(event.binding.command);
});
manager.destroy();
// Atom API Testing ===========================================================
// Class Methods
KeymapManager.buildKeydownEvent("a");
KeymapManager.buildKeydownEvent("a", { alt: true });
// Construction and Destruction
new KeymapManager({ defaultTarget: element });
manager.clear();
manager.destroy();
// Event Subscription
sub = manager.onDidMatchBinding((event): void => { event.keystrokes; });
sub = manager.onDidPartiallyMatchBindings((event): void => { event.partiallyMatchedBindings; });
sub = manager.onDidFailToMatchBinding((event): void => { event.keystrokes; });
sub = manager.onDidFailToReadFile((event): void => { event.stack; });
// Adding and Removing Bindings
sub = manager.add("a", {}, 0);
// Accessing Bindings
let bindings: AtomKeymap.KeyBinding[] = manager.getKeyBindings();
bindings = manager.findKeyBindings();
bindings = manager.findKeyBindings({ command: "a" });
bindings = manager.findKeyBindings({ keystrokes: "a" });
bindings = manager.findKeyBindings({ target: element });
bindings = manager.findKeyBindings({ command: "a", keystrokes: "b"});
bindings = manager.findKeyBindings({ command: "a", keystrokes: "b", target: element });
// Managing Keymap Files
manager.loadKeymap("Test.file");
manager.loadKeymap("Test.file", { watch: true });
manager.loadKeymap("Test.file", { watch: true, priority: 0});
// Managing Keyboard Events
manager.handleKeyboardEvent(event);
manager.keystrokeForKeyboardEvent(event);
sub = manager.addKeystrokeResolver((event): string => {
event.layoutName;
return "Test";
});
const num: number = manager.getPartialMatchTimeout();