@opentui/keymap 0.2.2 → 0.2.4

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.
Files changed (78) hide show
  1. package/README.md +56 -32
  2. package/chunks/index-frk6sdcd.js +409 -0
  3. package/chunks/index-frk6sdcd.js.map +14 -0
  4. package/package.json +17 -7
  5. package/src/addons/index.js +511 -4870
  6. package/src/addons/index.js.map +25 -0
  7. package/src/addons/opentui/edit-buffer-bindings.d.ts +6 -2
  8. package/src/addons/opentui/index.d.ts +2 -2
  9. package/src/addons/opentui/index.js +101 -5515
  10. package/src/addons/opentui/index.js.map +12 -0
  11. package/src/addons/universal/dead-bindings.d.ts +1 -1
  12. package/src/addons/universal/default-parser.d.ts +2 -2
  13. package/src/addons/universal/ex-commands.d.ts +11 -8
  14. package/src/addons/universal/index.d.ts +2 -1
  15. package/src/addons/universal/leader.d.ts +1 -1
  16. package/src/addons/universal/metadata.d.ts +2 -2
  17. package/src/addons/universal/mod-bindings.d.ts +6 -0
  18. package/src/addons/universal/unresolved-commands.d.ts +1 -1
  19. package/src/extras/binding-sections.d.ts +16 -7
  20. package/src/extras/command-bindings.d.ts +2 -2
  21. package/src/extras/formatting.d.ts +3 -0
  22. package/src/extras/graph.d.ts +9 -0
  23. package/src/extras/graph.js +373 -0
  24. package/src/extras/graph.js.map +11 -0
  25. package/src/extras/index.js +57 -4
  26. package/src/extras/index.js.map +12 -0
  27. package/src/extras/lib/graph-snapshot.d.ts +14 -0
  28. package/src/extras/lib/graph-types.d.ts +83 -0
  29. package/src/html.d.ts +3 -3
  30. package/src/html.js +47 -4992
  31. package/src/html.js.map +10 -0
  32. package/src/index.d.ts +3 -1
  33. package/src/index.js +2688 -2807
  34. package/src/index.js.map +34 -0
  35. package/src/keymap.d.ts +17 -33
  36. package/src/lib/emitter.d.ts +1 -2
  37. package/src/lib/registry.d.ts +2 -2
  38. package/src/lib/runtime-utils.d.ts +34 -0
  39. package/src/opentui.d.ts +1 -3
  40. package/src/opentui.js +40 -4994
  41. package/src/opentui.js.map +10 -0
  42. package/src/react/index.d.ts +5 -19
  43. package/src/react/index.js +3 -0
  44. package/src/react/index.js.map +10 -0
  45. package/src/runtime-modules.d.ts +2 -0
  46. package/src/runtime-modules.js +5 -0
  47. package/src/runtime-modules.js.map +10 -0
  48. package/src/services/activation.d.ts +7 -33
  49. package/src/services/active-key-cache.d.ts +29 -0
  50. package/src/services/command-catalog.d.ts +27 -52
  51. package/src/services/command-executor.d.ts +6 -12
  52. package/src/services/compiler.d.ts +4 -12
  53. package/src/services/conditions.d.ts +4 -16
  54. package/src/services/dispatch-decisions.d.ts +21 -0
  55. package/src/services/dispatch-patterns.d.ts +5 -0
  56. package/src/services/dispatch.d.ts +6 -42
  57. package/src/services/environment.d.ts +6 -24
  58. package/src/services/extension-context.d.ts +16 -0
  59. package/src/services/layer-diagnostics.d.ts +10 -0
  60. package/src/services/layers.d.ts +15 -24
  61. package/src/services/notify.d.ts +6 -8
  62. package/src/services/pending-sequence.d.ts +4 -0
  63. package/src/services/primitives/active-layers.d.ts +2 -3
  64. package/src/services/primitives/bindings.d.ts +4 -0
  65. package/src/services/primitives/field-invariants.d.ts +16 -1
  66. package/src/services/primitives/pending-captures.d.ts +5 -0
  67. package/src/services/runtime-view.d.ts +5 -0
  68. package/src/services/runtime.d.ts +2 -7
  69. package/src/services/sequence-index.d.ts +24 -0
  70. package/src/services/state.d.ts +46 -92
  71. package/src/solid/index.d.ts +5 -19
  72. package/src/solid/index.js +3 -0
  73. package/src/solid/index.js.map +10 -0
  74. package/src/testing/index.d.ts +90 -0
  75. package/src/testing/index.js +276 -0
  76. package/src/testing/index.js.map +10 -0
  77. package/src/types.d.ts +180 -128
  78. package/src/services/primitives/binding-inputs.d.ts +0 -4
@@ -0,0 +1,276 @@
1
+ // @bun
2
+ // src/testing/index.ts
3
+ import { Keymap } from "@opentui/keymap";
4
+ import { registerDefaultKeys } from "@opentui/keymap/addons";
5
+ var DEFAULT_TEST_HOST_METADATA = Object.freeze({
6
+ platform: "unknown",
7
+ primaryModifier: "unknown",
8
+ modifiers: Object.freeze({
9
+ ctrl: "unknown",
10
+ shift: "unknown",
11
+ meta: "unknown",
12
+ super: "unknown",
13
+ hyper: "unknown"
14
+ })
15
+ });
16
+
17
+ class TestKeymapTarget {
18
+ id;
19
+ parent = null;
20
+ isDestroyed = false;
21
+ constructor(id) {
22
+ this.id = id;
23
+ }
24
+ append(child) {
25
+ child.parent = this;
26
+ return child;
27
+ }
28
+ }
29
+
30
+ class TestKeymapEvent {
31
+ name;
32
+ ctrl;
33
+ shift;
34
+ meta;
35
+ super;
36
+ hyper;
37
+ propagationStopped = false;
38
+ defaultPrevented = false;
39
+ constructor(name, modifiers) {
40
+ this.name = name;
41
+ this.ctrl = modifiers?.ctrl ?? false;
42
+ this.shift = modifiers?.shift ?? false;
43
+ this.meta = modifiers?.meta ?? false;
44
+ this.super = modifiers?.super ?? false;
45
+ this.hyper = modifiers?.hyper || undefined;
46
+ }
47
+ preventDefault() {
48
+ this.defaultPrevented = true;
49
+ }
50
+ stopPropagation() {
51
+ this.propagationStopped = true;
52
+ }
53
+ }
54
+
55
+ class TestKeymapHost {
56
+ metadata;
57
+ rootTarget;
58
+ isDestroyed = false;
59
+ focusedTarget = null;
60
+ keyPressListeners = new Set;
61
+ keyReleaseListeners = new Set;
62
+ focusListeners = new Set;
63
+ destroyListeners = new Set;
64
+ rawListeners = new Set;
65
+ targetDestroyListeners = new WeakMap;
66
+ constructor(options) {
67
+ this.metadata = normalizeTestHostMetadata(options?.metadata);
68
+ this.rootTarget = new TestKeymapTarget("root");
69
+ }
70
+ createTarget(id) {
71
+ return new TestKeymapTarget(id);
72
+ }
73
+ getFocusedTarget() {
74
+ return this.focusedTarget && !this.focusedTarget.isDestroyed ? this.focusedTarget : null;
75
+ }
76
+ getParentTarget(target) {
77
+ return target.parent;
78
+ }
79
+ isTargetDestroyed(target) {
80
+ return target.isDestroyed;
81
+ }
82
+ onKeyPress(listener) {
83
+ this.keyPressListeners.add(listener);
84
+ return () => {
85
+ this.keyPressListeners.delete(listener);
86
+ };
87
+ }
88
+ onKeyRelease(listener) {
89
+ this.keyReleaseListeners.add(listener);
90
+ return () => {
91
+ this.keyReleaseListeners.delete(listener);
92
+ };
93
+ }
94
+ onFocusChange(listener) {
95
+ this.focusListeners.add(listener);
96
+ return () => {
97
+ this.focusListeners.delete(listener);
98
+ };
99
+ }
100
+ onDestroy(listener) {
101
+ this.destroyListeners.add(listener);
102
+ return () => {
103
+ this.destroyListeners.delete(listener);
104
+ };
105
+ }
106
+ onTargetDestroy(target, listener) {
107
+ let listeners = this.targetDestroyListeners.get(target);
108
+ if (!listeners) {
109
+ listeners = new Set;
110
+ this.targetDestroyListeners.set(target, listeners);
111
+ }
112
+ listeners.add(listener);
113
+ return () => {
114
+ listeners?.delete(listener);
115
+ if (listeners && listeners.size === 0) {
116
+ this.targetDestroyListeners.delete(target);
117
+ }
118
+ };
119
+ }
120
+ onRawInput(listener) {
121
+ this.rawListeners.add(listener);
122
+ return () => {
123
+ this.rawListeners.delete(listener);
124
+ };
125
+ }
126
+ createCommandEvent() {
127
+ return new TestKeymapEvent("synthetic");
128
+ }
129
+ focus(target) {
130
+ this.focusedTarget = target;
131
+ for (const listener of this.focusListeners) {
132
+ listener(target);
133
+ }
134
+ }
135
+ press(name, modifiers) {
136
+ const event = new TestKeymapEvent(name, modifiers);
137
+ for (const listener of this.keyPressListeners) {
138
+ listener(event);
139
+ }
140
+ return event;
141
+ }
142
+ release(name, modifiers) {
143
+ const event = new TestKeymapEvent(name, modifiers);
144
+ for (const listener of this.keyReleaseListeners) {
145
+ listener(event);
146
+ }
147
+ return event;
148
+ }
149
+ raw(sequence) {
150
+ let handled = false;
151
+ for (const listener of this.rawListeners) {
152
+ handled = listener(sequence) || handled;
153
+ }
154
+ return handled;
155
+ }
156
+ destroyTarget(target) {
157
+ target.isDestroyed = true;
158
+ const listeners = this.targetDestroyListeners.get(target);
159
+ if (!listeners) {
160
+ return;
161
+ }
162
+ for (const listener of [...listeners]) {
163
+ listener();
164
+ }
165
+ }
166
+ destroy() {
167
+ if (this.isDestroyed) {
168
+ return;
169
+ }
170
+ this.isDestroyed = true;
171
+ for (const listener of [...this.destroyListeners]) {
172
+ listener();
173
+ }
174
+ }
175
+ }
176
+ function createTestHostMetadata(options) {
177
+ return normalizeTestHostMetadata(options);
178
+ }
179
+ function createTestKeymapHost(options) {
180
+ return new TestKeymapHost(options);
181
+ }
182
+ function createTestKeymap(options) {
183
+ const host = createTestKeymapHost(options);
184
+ const keymap = new Keymap(host);
185
+ const diagnostics = captureKeymapDiagnostics(keymap);
186
+ if (options?.defaultKeys === true) {
187
+ registerDefaultKeys(keymap);
188
+ }
189
+ return {
190
+ keymap,
191
+ host,
192
+ root: host.rootTarget,
193
+ diagnostics,
194
+ cleanup() {
195
+ host.destroy();
196
+ diagnostics.dispose();
197
+ }
198
+ };
199
+ }
200
+ function captureKeymapDiagnostics(keymap) {
201
+ const warnings = [];
202
+ const errors = [];
203
+ const warningEvents = [];
204
+ const errorEvents = [];
205
+ const offWarning = keymap.on("warning", (event) => {
206
+ warnings.push(event.message);
207
+ warningEvents.push(event);
208
+ });
209
+ const offError = keymap.on("error", (event) => {
210
+ errors.push(event.message);
211
+ errorEvents.push(event);
212
+ });
213
+ return {
214
+ warnings,
215
+ errors,
216
+ warningEvents,
217
+ errorEvents,
218
+ takeWarnings() {
219
+ const snapshot = {
220
+ warnings: [...warnings],
221
+ warningEvents: [...warningEvents]
222
+ };
223
+ warnings.length = 0;
224
+ warningEvents.length = 0;
225
+ return snapshot;
226
+ },
227
+ takeErrors() {
228
+ const snapshot = {
229
+ errors: [...errors],
230
+ errorEvents: [...errorEvents]
231
+ };
232
+ errors.length = 0;
233
+ errorEvents.length = 0;
234
+ return snapshot;
235
+ },
236
+ clear() {
237
+ warnings.length = 0;
238
+ errors.length = 0;
239
+ warningEvents.length = 0;
240
+ errorEvents.length = 0;
241
+ },
242
+ dispose() {
243
+ offWarning();
244
+ offError();
245
+ }
246
+ };
247
+ }
248
+ function normalizeTestHostMetadata(metadata) {
249
+ if (isHostMetadata(metadata)) {
250
+ return metadata;
251
+ }
252
+ return {
253
+ platform: metadata?.platform ?? DEFAULT_TEST_HOST_METADATA.platform,
254
+ primaryModifier: metadata?.primaryModifier ?? DEFAULT_TEST_HOST_METADATA.primaryModifier,
255
+ modifiers: {
256
+ ...DEFAULT_TEST_HOST_METADATA.modifiers,
257
+ ...metadata?.modifiers
258
+ }
259
+ };
260
+ }
261
+ function isHostMetadata(value) {
262
+ return !!value && !!value.modifiers && "ctrl" in value.modifiers && "shift" in value.modifiers;
263
+ }
264
+ export {
265
+ createTestKeymapHost,
266
+ createTestKeymap,
267
+ createTestHostMetadata,
268
+ captureKeymapDiagnostics,
269
+ TestKeymapTarget,
270
+ TestKeymapHost,
271
+ TestKeymapEvent,
272
+ DEFAULT_TEST_HOST_METADATA
273
+ };
274
+
275
+ //# debugId=AC56D442CF81C26564756E2164756E21
276
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/testing/index.ts"],
4
+ "sourcesContent": [
5
+ "import { Keymap } from \"@opentui/keymap\"\nimport { registerDefaultKeys } from \"@opentui/keymap/addons\"\nimport type { ErrorEvent, HostMetadata, KeymapEvent, KeymapHost, WarningEvent } from \"@opentui/keymap\"\n\nexport type TestKeyModifierOptions = Partial<Pick<KeymapEvent, \"ctrl\" | \"shift\" | \"meta\" | \"super\" | \"hyper\">>\n\nexport type TestHostMetadataOptions = Partial<Omit<HostMetadata, \"modifiers\">> & {\n modifiers?: Partial<HostMetadata[\"modifiers\"]>\n}\n\nexport interface CreateTestKeymapHostOptions {\n metadata?: HostMetadata | TestHostMetadataOptions\n}\n\nexport interface CreateTestKeymapOptions extends CreateTestKeymapHostOptions {\n defaultKeys?: boolean\n}\n\nexport interface TestDiagnosticCapture {\n readonly warnings: readonly string[]\n readonly errors: readonly string[]\n readonly warningEvents: readonly WarningEvent[]\n readonly errorEvents: readonly ErrorEvent[]\n takeWarnings(): { warnings: string[]; warningEvents: WarningEvent[] }\n takeErrors(): { errors: string[]; errorEvents: ErrorEvent[] }\n clear(): void\n dispose(): void\n}\n\nexport interface TestKeymapHarness {\n keymap: Keymap<TestKeymapTarget, TestKeymapEvent>\n host: TestKeymapHost\n root: TestKeymapTarget\n diagnostics: TestDiagnosticCapture\n cleanup(): void\n}\n\nexport const DEFAULT_TEST_HOST_METADATA: HostMetadata = Object.freeze({\n platform: \"unknown\",\n primaryModifier: \"unknown\",\n modifiers: Object.freeze({\n ctrl: \"unknown\",\n shift: \"unknown\",\n meta: \"unknown\",\n super: \"unknown\",\n hyper: \"unknown\",\n }),\n})\n\nexport class TestKeymapTarget {\n public parent: TestKeymapTarget | null = null\n public isDestroyed = false\n\n constructor(public readonly id: string) {}\n\n public append(child: TestKeymapTarget): TestKeymapTarget {\n child.parent = this\n return child\n }\n}\n\nexport class TestKeymapEvent implements KeymapEvent {\n public readonly ctrl: boolean\n public readonly shift: boolean\n public readonly meta: boolean\n public readonly super: boolean\n public readonly hyper?: boolean\n public propagationStopped = false\n public defaultPrevented = false\n\n constructor(\n public readonly name: string,\n modifiers?: TestKeyModifierOptions,\n ) {\n this.ctrl = modifiers?.ctrl ?? false\n this.shift = modifiers?.shift ?? false\n this.meta = modifiers?.meta ?? false\n this.super = modifiers?.super ?? false\n this.hyper = modifiers?.hyper || undefined\n }\n\n public preventDefault(): void {\n this.defaultPrevented = true\n }\n\n public stopPropagation(): void {\n this.propagationStopped = true\n }\n}\n\nexport class TestKeymapHost implements KeymapHost<TestKeymapTarget, TestKeymapEvent> {\n public readonly metadata: HostMetadata\n public readonly rootTarget: TestKeymapTarget\n public isDestroyed = false\n\n private focusedTarget: TestKeymapTarget | null = null\n private readonly keyPressListeners = new Set<(event: TestKeymapEvent) => void>()\n private readonly keyReleaseListeners = new Set<(event: TestKeymapEvent) => void>()\n private readonly focusListeners = new Set<(target: TestKeymapTarget | null) => void>()\n private readonly destroyListeners = new Set<() => void>()\n private readonly rawListeners = new Set<(sequence: string) => boolean>()\n private readonly targetDestroyListeners = new WeakMap<TestKeymapTarget, Set<() => void>>()\n\n constructor(options?: CreateTestKeymapHostOptions) {\n this.metadata = normalizeTestHostMetadata(options?.metadata)\n this.rootTarget = new TestKeymapTarget(\"root\")\n }\n\n public createTarget(id: string): TestKeymapTarget {\n return new TestKeymapTarget(id)\n }\n\n public getFocusedTarget(): TestKeymapTarget | null {\n return this.focusedTarget && !this.focusedTarget.isDestroyed ? this.focusedTarget : null\n }\n\n public getParentTarget(target: TestKeymapTarget): TestKeymapTarget | null {\n return target.parent\n }\n\n public isTargetDestroyed(target: TestKeymapTarget): boolean {\n return target.isDestroyed\n }\n\n public onKeyPress(listener: (event: TestKeymapEvent) => void): () => void {\n this.keyPressListeners.add(listener)\n return () => {\n this.keyPressListeners.delete(listener)\n }\n }\n\n public onKeyRelease(listener: (event: TestKeymapEvent) => void): () => void {\n this.keyReleaseListeners.add(listener)\n return () => {\n this.keyReleaseListeners.delete(listener)\n }\n }\n\n public onFocusChange(listener: (target: TestKeymapTarget | null) => void): () => void {\n this.focusListeners.add(listener)\n return () => {\n this.focusListeners.delete(listener)\n }\n }\n\n public onDestroy(listener: () => void): () => void {\n this.destroyListeners.add(listener)\n return () => {\n this.destroyListeners.delete(listener)\n }\n }\n\n public onTargetDestroy(target: TestKeymapTarget, listener: () => void): () => void {\n let listeners = this.targetDestroyListeners.get(target)\n if (!listeners) {\n listeners = new Set()\n this.targetDestroyListeners.set(target, listeners)\n }\n\n listeners.add(listener)\n return () => {\n listeners?.delete(listener)\n if (listeners && listeners.size === 0) {\n this.targetDestroyListeners.delete(target)\n }\n }\n }\n\n public onRawInput(listener: (sequence: string) => boolean): () => void {\n this.rawListeners.add(listener)\n return () => {\n this.rawListeners.delete(listener)\n }\n }\n\n public createCommandEvent(): TestKeymapEvent {\n return new TestKeymapEvent(\"synthetic\")\n }\n\n public focus(target: TestKeymapTarget | null): void {\n this.focusedTarget = target\n for (const listener of this.focusListeners) {\n listener(target)\n }\n }\n\n public press(name: string, modifiers?: TestKeyModifierOptions): TestKeymapEvent {\n const event = new TestKeymapEvent(name, modifiers)\n for (const listener of this.keyPressListeners) {\n listener(event)\n }\n\n return event\n }\n\n public release(name: string, modifiers?: TestKeyModifierOptions): TestKeymapEvent {\n const event = new TestKeymapEvent(name, modifiers)\n for (const listener of this.keyReleaseListeners) {\n listener(event)\n }\n\n return event\n }\n\n public raw(sequence: string): boolean {\n let handled = false\n for (const listener of this.rawListeners) {\n handled = listener(sequence) || handled\n }\n\n return handled\n }\n\n public destroyTarget(target: TestKeymapTarget): void {\n target.isDestroyed = true\n const listeners = this.targetDestroyListeners.get(target)\n if (!listeners) {\n return\n }\n\n for (const listener of [...listeners]) {\n listener()\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return\n }\n\n this.isDestroyed = true\n for (const listener of [...this.destroyListeners]) {\n listener()\n }\n }\n}\n\nexport function createTestHostMetadata(options?: HostMetadata | TestHostMetadataOptions): HostMetadata {\n return normalizeTestHostMetadata(options)\n}\n\nexport function createTestKeymapHost(options?: CreateTestKeymapHostOptions): TestKeymapHost {\n return new TestKeymapHost(options)\n}\n\nexport function createTestKeymap(options?: CreateTestKeymapOptions): TestKeymapHarness {\n const host = createTestKeymapHost(options)\n const keymap = new Keymap(host)\n const diagnostics = captureKeymapDiagnostics(keymap)\n\n if (options?.defaultKeys === true) {\n registerDefaultKeys(keymap)\n }\n\n return {\n keymap,\n host,\n root: host.rootTarget,\n diagnostics,\n cleanup() {\n host.destroy()\n diagnostics.dispose()\n },\n }\n}\n\nexport function captureKeymapDiagnostics(keymap: Keymap<any, any>): TestDiagnosticCapture {\n const warnings: string[] = []\n const errors: string[] = []\n const warningEvents: WarningEvent[] = []\n const errorEvents: ErrorEvent[] = []\n\n const offWarning = keymap.on(\"warning\", (event) => {\n warnings.push(event.message)\n warningEvents.push(event)\n })\n const offError = keymap.on(\"error\", (event) => {\n errors.push(event.message)\n errorEvents.push(event)\n })\n\n return {\n warnings,\n errors,\n warningEvents,\n errorEvents,\n takeWarnings() {\n const snapshot = {\n warnings: [...warnings],\n warningEvents: [...warningEvents],\n }\n warnings.length = 0\n warningEvents.length = 0\n return snapshot\n },\n takeErrors() {\n const snapshot = {\n errors: [...errors],\n errorEvents: [...errorEvents],\n }\n errors.length = 0\n errorEvents.length = 0\n return snapshot\n },\n clear() {\n warnings.length = 0\n errors.length = 0\n warningEvents.length = 0\n errorEvents.length = 0\n },\n dispose() {\n offWarning()\n offError()\n },\n }\n}\n\nfunction normalizeTestHostMetadata(metadata?: HostMetadata | TestHostMetadataOptions): HostMetadata {\n if (isHostMetadata(metadata)) {\n return metadata\n }\n\n return {\n platform: metadata?.platform ?? DEFAULT_TEST_HOST_METADATA.platform,\n primaryModifier: metadata?.primaryModifier ?? DEFAULT_TEST_HOST_METADATA.primaryModifier,\n modifiers: {\n ...DEFAULT_TEST_HOST_METADATA.modifiers,\n ...metadata?.modifiers,\n },\n }\n}\n\nfunction isHostMetadata(value: HostMetadata | TestHostMetadataOptions | undefined): value is HostMetadata {\n return !!value && !!value.modifiers && \"ctrl\" in value.modifiers && \"shift\" in value.modifiers\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "AC56D442CF81C26564756E2164756E21",
9
+ "names": []
10
+ }