@opentui/keymap 0.2.2 → 0.2.3

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 +4 -4
  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 +13 -0
  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
package/src/keymap.d.ts CHANGED
@@ -1,49 +1,33 @@
1
- import type { ActiveBinding, ActiveKey, ActiveKeyOptions, BindingExpander, BindingParser, BindingFieldCompiler, LayerBindingsTransformer, BindingTransformer, Events, CommandFieldCompiler, CommandBindingsQuery, CommandEntry, CommandQuery, CommandRecord, KeymapEvent, KeymapHost, LayerAnalyzer, Listener, RunCommandOptions, RunCommandResult, CommandResolver, KeyInterceptOptions, KeyInputContext, Layer, LayerFieldCompiler, KeyDisambiguationResolver, RawInterceptOptions, RawInputContext, EventMatchResolver, KeyStringifyInput, KeyToken, KeyLike, KeySequencePart, StringifyOptions } from "./types.js";
1
+ import type { ActiveBinding, ActiveKey, ActiveKeyOptions, BindingExpander, BindingParser, BindingFieldCompiler, LayerBindingsTransformer, BindingTransformer, Events, CommandFieldCompiler, CommandTransformer, CommandBindingsQuery, CommandEntry, CommandQuery, Command, KeymapEvent, KeymapHost, HostMetadata, LayerAnalyzer, Listener, RunCommandOptions, RunCommandResult, CommandResolver, KeyAfterInputContext, KeyInterceptOptions, KeyInputContext, Layer, LayerFieldCompiler, KeyDisambiguationResolver, RawInterceptOptions, RawInputContext, EventMatchResolver, KeyStringifyInput, KeyToken, SequencePattern, KeyLike, KeySequencePart, StringifyOptions } from "./types.js";
2
+ import { KEYMAP_EXTENSION_CONTEXT, type KeymapExtensionContext } from "./services/extension-context.js";
2
3
  export declare class Keymap<TTarget extends object, TEvent extends KeymapEvent = KeymapEvent> {
3
- private readonly host;
4
- private readonly state;
5
- private cleanedUp;
6
- private readonly resources;
7
- private readonly cleanupListeners;
8
- private events;
9
- private hooks;
10
- private readonly notify;
11
- private readonly activation;
12
- private readonly runtime;
13
- private readonly conditions;
14
- private readonly catalog;
15
- private readonly executor;
16
- private readonly compiler;
17
- private readonly dispatch;
18
- private readonly layers;
19
- private readonly environment;
20
- private readonly keypressListener;
21
- private readonly keyreleaseListener;
22
- private readonly rawListener;
23
- private readonly focusedTargetListener;
4
+ #private;
5
+ getPendingSequence: () => readonly KeySequencePart[];
6
+ getActiveKeys: (options?: ActiveKeyOptions) => readonly ActiveKey<TTarget, TEvent>[];
24
7
  constructor(host: KeymapHost<TTarget, TEvent>);
25
- private cleanup;
8
+ [KEYMAP_EXTENSION_CONTEXT](): KeymapExtensionContext<TTarget, TEvent>;
26
9
  setData(name: string, value: unknown): void;
27
10
  getData(name: string): unknown;
11
+ getHostMetadata(): Readonly<HostMetadata>;
28
12
  hasPendingSequence(): boolean;
29
- getPendingSequence(): readonly KeySequencePart[];
30
13
  createKeyMatcher(key: KeyLike): (input: KeyStringifyInput | null | undefined) => boolean;
31
14
  parseKeySequence(key: KeyLike): readonly KeySequencePart[];
32
15
  formatKey(key: KeyLike, options?: StringifyOptions): string;
33
16
  clearPendingSequence(): void;
34
17
  popPendingSequence(): boolean;
35
- getActiveKeys(options?: ActiveKeyOptions): readonly ActiveKey<TTarget, TEvent>[];
36
- getCommands(query?: CommandQuery<TTarget>): readonly CommandRecord[];
37
- getCommandEntries(query?: CommandQuery<TTarget>): readonly CommandEntry<TTarget, TEvent>[];
18
+ getCommands(query?: CommandQuery<TTarget, TEvent>): readonly Command<TTarget, TEvent>[];
19
+ getCommandEntries(query?: CommandQuery<TTarget, TEvent>): readonly CommandEntry<TTarget, TEvent>[];
38
20
  getCommandBindings(query: CommandBindingsQuery<TTarget>): ReadonlyMap<string, readonly ActiveBinding<TTarget, TEvent>[]>;
39
21
  acquireResource(key: symbol, setup: () => () => void): () => void;
40
- runCommand(cmd: string, options?: RunCommandOptions<TTarget, TEvent>): RunCommandResult;
41
- dispatchCommand(cmd: string, options?: RunCommandOptions<TTarget, TEvent>): RunCommandResult;
22
+ runCommand(cmd: string, options?: RunCommandOptions<TTarget, TEvent>): RunCommandResult<TTarget, TEvent>;
23
+ dispatchCommand(cmd: string, options?: RunCommandOptions<TTarget, TEvent>): RunCommandResult<TTarget, TEvent>;
42
24
  on(name: "state", fn: Listener<Events<TTarget, TEvent>["state"]>): () => void;
43
25
  on(name: "pendingSequence", fn: Listener<Events<TTarget, TEvent>["pendingSequence"]>): () => void;
26
+ on(name: "dispatch", fn: Listener<Events<TTarget, TEvent>["dispatch"]>): () => void;
44
27
  on(name: "warning", fn: Listener<Events<TTarget, TEvent>["warning"]>): () => void;
45
28
  on(name: "error", fn: Listener<Events<TTarget, TEvent>["error"]>): () => void;
46
29
  intercept(name: "key", fn: (ctx: KeyInputContext<TEvent>) => void, options?: KeyInterceptOptions): () => void;
30
+ intercept(name: "key:after", fn: (ctx: KeyAfterInputContext<TTarget, TEvent>) => void, options?: KeyInterceptOptions): () => void;
47
31
  intercept(name: "raw", fn: (ctx: RawInputContext) => void, options?: RawInterceptOptions): () => void;
48
32
  registerLayer(layer: Layer<TTarget, TEvent>): () => void;
49
33
  registerLayerFields(fields: Record<string, LayerFieldCompiler>): () => void;
@@ -53,10 +37,14 @@ export declare class Keymap<TTarget extends object, TEvent extends KeymapEvent =
53
37
  prependBindingTransformer(transformer: BindingTransformer<TTarget, TEvent>): () => void;
54
38
  appendBindingTransformer(transformer: BindingTransformer<TTarget, TEvent>): () => void;
55
39
  clearBindingTransformers(): void;
40
+ prependCommandTransformer(transformer: CommandTransformer<TTarget, TEvent>): () => void;
41
+ appendCommandTransformer(transformer: CommandTransformer<TTarget, TEvent>): () => void;
42
+ clearCommandTransformers(): void;
56
43
  prependBindingParser(parser: BindingParser): () => void;
57
44
  appendBindingParser(parser: BindingParser): () => void;
58
45
  clearBindingParsers(): void;
59
46
  registerToken(token: KeyToken): () => void;
47
+ registerSequencePattern(pattern: SequencePattern<TEvent>): () => void;
60
48
  prependBindingExpander(expander: BindingExpander): () => void;
61
49
  appendBindingExpander(expander: BindingExpander): () => void;
62
50
  clearBindingExpanders(): void;
@@ -74,8 +62,4 @@ export declare class Keymap<TTarget extends object, TEvent extends KeymapEvent =
74
62
  prependDisambiguationResolver(resolver: KeyDisambiguationResolver<TTarget, TEvent>): () => void;
75
63
  appendDisambiguationResolver(resolver: KeyDisambiguationResolver<TTarget, TEvent>): () => void;
76
64
  clearDisambiguationResolvers(): void;
77
- private handleFocusedTargetChange;
78
- private warnUnknownField;
79
- private warnUnknownToken;
80
- private releaseResource;
81
65
  }
@@ -1,8 +1,7 @@
1
1
  export type EmitterListener<TValue> = [TValue] extends [void] ? () => void : (value: TValue) => void;
2
2
  type EmitterArgs<TValue> = [TValue] extends [void] ? [] : [TValue];
3
3
  export declare class Emitter<TEvents extends Record<string, unknown>> {
4
- private readonly onError;
5
- private listeners;
4
+ #private;
6
5
  constructor(onError: (name: keyof TEvents, error: unknown) => void);
7
6
  hook<TName extends keyof TEvents>(name: TName, listener: EmitterListener<TEvents[TName]>): () => void;
8
7
  has<TName extends keyof TEvents>(name: TName): boolean;
@@ -5,7 +5,7 @@ export type PriorityRegistration<TListener, TOptions extends {
5
5
  order: number;
6
6
  }>;
7
7
  declare abstract class CopyOnWriteRegistry<TValue> {
8
- private items;
8
+ #private;
9
9
  protected getItems(): readonly TValue[];
10
10
  protected setItems(items: readonly TValue[]): void;
11
11
  protected removeItem(value: TValue): boolean;
@@ -21,7 +21,7 @@ export declare class OrderedRegistry<TValue> extends CopyOnWriteRegistry<TValue>
21
21
  export declare class PriorityRegistry<TListener, TOptions extends {
22
22
  priority: number;
23
23
  }> extends CopyOnWriteRegistry<PriorityRegistration<TListener, TOptions>> {
24
- private order;
24
+ #private;
25
25
  register(listener: TListener, options: TOptions): () => void;
26
26
  entries(): readonly PriorityRegistration<TListener, TOptions>[];
27
27
  }
@@ -0,0 +1,34 @@
1
+ export type RuntimeEmitterListener<TValue> = [TValue] extends [void] ? () => void : (value: TValue) => void;
2
+ type RuntimeEmitterArgs<TValue> = [TValue] extends [void] ? [] : [TValue];
3
+ export interface RuntimeEmitter<TEvents extends Record<string, unknown>> {
4
+ hook<TName extends keyof TEvents>(name: TName, listener: RuntimeEmitterListener<TEvents[TName]>): () => void;
5
+ has<TName extends keyof TEvents>(name: TName): boolean;
6
+ emit<TName extends keyof TEvents>(name: TName, ...args: RuntimeEmitterArgs<TEvents[TName]>): void;
7
+ }
8
+ export declare function createRuntimeEmitter<TEvents extends Record<string, unknown>>(onError: (name: keyof TEvents, error: unknown) => void): RuntimeEmitter<TEvents>;
9
+ export type RuntimePriorityRegistration<TListener, TOptions extends {
10
+ priority: number;
11
+ }> = Readonly<TOptions & {
12
+ listener: TListener;
13
+ order: number;
14
+ }>;
15
+ export interface RuntimeOrderedRegistry<TValue> {
16
+ append(value: TValue): () => void;
17
+ prepend(value: TValue): () => void;
18
+ values(): readonly TValue[];
19
+ has(): boolean;
20
+ clear(): void;
21
+ }
22
+ export interface RuntimePriorityRegistry<TListener, TOptions extends {
23
+ priority: number;
24
+ }> {
25
+ register(listener: TListener, options: TOptions): () => void;
26
+ entries(): readonly RuntimePriorityRegistration<TListener, TOptions>[];
27
+ has(): boolean;
28
+ clear(): void;
29
+ }
30
+ export declare function createRuntimeOrderedRegistry<TValue>(): RuntimeOrderedRegistry<TValue>;
31
+ export declare function createRuntimePriorityRegistry<TListener, TOptions extends {
32
+ priority: number;
33
+ }>(): RuntimePriorityRegistry<TListener, TOptions>;
34
+ export {};
package/src/opentui.d.ts CHANGED
@@ -1,7 +1,5 @@
1
1
  import { KeyEvent, type CliRenderer, type Renderable } from "@opentui/core";
2
- import { Keymap } from "./keymap.js";
3
- import type { KeymapHost } from "./types.js";
4
- export * from "./index.js";
2
+ import { Keymap, type KeymapHost } from "@opentui/keymap";
5
3
  export declare function createOpenTuiKeymapHost(renderer: CliRenderer): KeymapHost<Renderable, KeyEvent>;
6
4
  export declare function createOpenTuiKeymap(renderer: CliRenderer): Keymap<Renderable, KeyEvent>;
7
5
  export declare function createDefaultOpenTuiKeymap(renderer: CliRenderer): Keymap<Renderable, KeyEvent>;