@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
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/html.ts"],
4
+ "sourcesContent": [
5
+ "import { Keymap } from \"@opentui/keymap\"\nimport { registerDefaultKeys, registerEnabledFields, registerMetadataFields } from \"@opentui/keymap/addons\"\nimport type {\n EventMatchResolver,\n HostMetadata,\n HostPlatform,\n KeyStrokeInput,\n KeymapEvent,\n KeymapHost,\n} from \"@opentui/keymap\"\n\nexport interface HtmlKeymapEvent extends KeymapEvent {\n readonly originalEvent?: KeyboardEvent\n}\n\ninterface HtmlKeyboardEventLike {\n key: string\n ctrlKey: boolean\n shiftKey: boolean\n altKey: boolean\n metaKey: boolean\n preventDefault(): void\n stopPropagation(): void\n}\n\ninterface MutationObserverLike {\n observe(target: EventTarget, options?: unknown): void\n disconnect(): void\n}\n\ninterface MutationObserverCtorLike {\n new (callback: () => void): MutationObserverLike\n}\n\nconst HTML_KEY_NAME_ALIASES = new Map<string, string>([\n [\" \", \"space\"],\n [\"Spacebar\", \"space\"],\n [\"ArrowUp\", \"up\"],\n [\"ArrowDown\", \"down\"],\n [\"ArrowLeft\", \"left\"],\n [\"ArrowRight\", \"right\"],\n [\"Escape\", \"escape\"],\n [\"Esc\", \"escape\"],\n [\"Enter\", \"return\"],\n [\"Backspace\", \"backspace\"],\n [\"Delete\", \"delete\"],\n [\"Tab\", \"tab\"],\n [\"Home\", \"home\"],\n [\"End\", \"end\"],\n [\"PageUp\", \"pageup\"],\n [\"PageDown\", \"pagedown\"],\n [\"Insert\", \"insert\"],\n [\"CapsLock\", \"capslock\"],\n [\"NumLock\", \"numlock\"],\n [\"ScrollLock\", \"scrolllock\"],\n [\"ContextMenu\", \"menu\"],\n [\"Meta\", \"super\"],\n [\"OS\", \"super\"],\n [\"Alt\", \"alt\"],\n [\"Control\", \"control\"],\n [\"Shift\", \"shift\"],\n])\n\nfunction normalizeHostPlatform(value: string | undefined): HostPlatform {\n const normalized = value?.trim().toLowerCase()\n if (!normalized) {\n return \"unknown\"\n }\n\n if (normalized.includes(\"mac\") || normalized.includes(\"darwin\")) {\n return \"macos\"\n }\n\n if (normalized.includes(\"win\")) {\n return \"windows\"\n }\n\n if (normalized.includes(\"linux\") || normalized.includes(\"x11\")) {\n return \"linux\"\n }\n\n return \"unknown\"\n}\n\nfunction detectBrowserPlatform(): HostPlatform {\n const navigatorLike = globalThis.navigator as\n | (Navigator & { userAgentData?: { platform?: string }; userAgent?: string })\n | undefined\n const userAgentPlatform = navigatorLike?.userAgentData?.platform\n const platform = normalizeHostPlatform(userAgentPlatform)\n if (platform !== \"unknown\") {\n return platform\n }\n\n return normalizeHostPlatform(navigatorLike?.platform ?? navigatorLike?.userAgent)\n}\n\nfunction createHtmlHostMetadata(): HostMetadata {\n const platform = detectBrowserPlatform()\n\n return {\n platform,\n primaryModifier: platform === \"macos\" ? \"super\" : platform === \"unknown\" ? \"unknown\" : \"ctrl\",\n modifiers: {\n ctrl: \"supported\",\n shift: \"supported\",\n meta: \"supported\",\n super: \"supported\",\n hyper: \"unsupported\",\n },\n }\n}\n\nfunction isPrintableSymbol(name: string): boolean {\n return name.length === 1 && !/^[a-z0-9]$/i.test(name)\n}\n\nfunction getHtmlEventMatchInputs(event: HtmlKeymapEvent): KeyStrokeInput[] {\n const primary: KeyStrokeInput = {\n name: event.name,\n ctrl: event.ctrl,\n shift: event.shift,\n meta: event.meta,\n super: event.super ?? false,\n hyper: event.hyper || undefined,\n }\n\n if (!primary.shift || !isPrintableSymbol(primary.name)) {\n return [primary]\n }\n\n return [\n primary,\n {\n ...primary,\n shift: false,\n },\n ]\n}\n\nclass HtmlWrappedKeymapEvent implements HtmlKeymapEvent {\n public propagationStopped = false\n\n constructor(\n public readonly name: string,\n public readonly ctrl: boolean,\n public readonly shift: boolean,\n public readonly meta: boolean,\n private readonly superKey: boolean,\n public readonly originalEvent?: KeyboardEvent,\n ) {}\n\n public get super(): boolean {\n return this.superKey\n }\n\n public preventDefault(): void {\n this.originalEvent?.preventDefault()\n }\n\n public stopPropagation(): void {\n this.propagationStopped = true\n this.originalEvent?.stopPropagation()\n }\n}\n\nfunction getMutationObserverCtor(): MutationObserverCtorLike | undefined {\n return globalThis.MutationObserver as MutationObserverCtorLike | undefined\n}\n\nexport function normalizeHtmlKeyName(key: string): string {\n const aliased = HTML_KEY_NAME_ALIASES.get(key)\n if (aliased) {\n return aliased\n }\n\n if (/^F\\d{1,2}$/i.test(key)) {\n return key.toLowerCase()\n }\n\n if (key.length === 1) {\n return key.toLowerCase()\n }\n\n return key.trim().toLowerCase().replace(/\\s+/g, \"\")\n}\n\nexport function createHtmlKeymapEvent(event?: KeyboardEvent | HtmlKeyboardEventLike): HtmlKeymapEvent {\n if (!event) {\n return new HtmlWrappedKeymapEvent(\"command\", false, false, false, false)\n }\n\n const KeyboardEventCtor = globalThis.KeyboardEvent\n\n // Keymap uses `meta` for Alt/Option and `super` for the platform Meta key,\n // so browser `altKey` maps to `meta` and `metaKey` maps to `super`.\n return new HtmlWrappedKeymapEvent(\n normalizeHtmlKeyName(event.key),\n event.ctrlKey,\n event.shiftKey,\n event.altKey,\n event.metaKey,\n KeyboardEventCtor && event instanceof KeyboardEventCtor ? event : undefined,\n )\n}\n\nclass HtmlKeymapHost implements KeymapHost<HTMLElement, HtmlKeymapEvent> {\n public readonly metadata = createHtmlHostMetadata()\n public readonly rootTarget: HTMLElement\n public readonly isDestroyed = false\n\n private observer?: MutationObserverLike\n private readonly targetDestroyListeners = new Map<HTMLElement, Set<() => void>>()\n\n constructor(root: HTMLElement) {\n this.rootTarget = root\n }\n\n public getFocusedTarget(): HTMLElement | null {\n const active = this.rootTarget.ownerDocument.activeElement\n if (!active || typeof active !== \"object\") {\n return null\n }\n\n if (active === this.rootTarget || this.rootTarget.contains(active as HTMLElement)) {\n return active as HTMLElement\n }\n\n return null\n }\n\n public getParentTarget(target: HTMLElement): HTMLElement | null {\n return target.parentElement\n }\n\n public isTargetDestroyed(target: HTMLElement): boolean {\n if (target === this.rootTarget) {\n return false\n }\n\n return !target.isConnected || !this.rootTarget.contains(target)\n }\n\n public onKeyPress(listener: (event: HtmlKeymapEvent) => void): () => void {\n const onKeyDown = (event: KeyboardEvent) => {\n listener(createHtmlKeymapEvent(event))\n }\n\n this.rootTarget.addEventListener(\"keydown\", onKeyDown, { capture: true })\n return () => {\n this.rootTarget.removeEventListener(\"keydown\", onKeyDown, { capture: true })\n }\n }\n\n public onKeyRelease(listener: (event: HtmlKeymapEvent) => void): () => void {\n const onKeyUp = (event: KeyboardEvent) => {\n listener(createHtmlKeymapEvent(event))\n }\n\n this.rootTarget.addEventListener(\"keyup\", onKeyUp, { capture: true })\n return () => {\n this.rootTarget.removeEventListener(\"keyup\", onKeyUp, { capture: true })\n }\n }\n\n public onFocusChange(listener: (target: HTMLElement | null) => void): () => void {\n const notifyFocus = () => {\n queueMicrotask(() => {\n listener(this.getFocusedTarget())\n })\n }\n\n this.rootTarget.addEventListener(\"focusin\", notifyFocus, { capture: true })\n this.rootTarget.addEventListener(\"focusout\", notifyFocus, { capture: true })\n return () => {\n this.rootTarget.removeEventListener(\"focusin\", notifyFocus, { capture: true })\n this.rootTarget.removeEventListener(\"focusout\", notifyFocus, { capture: true })\n }\n }\n\n public onTargetDestroy(target: HTMLElement, 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 this.ensureObserver()\n this.flushDisconnectedTargets()\n\n return () => {\n const current = this.targetDestroyListeners.get(target)\n if (!current) {\n return\n }\n\n current.delete(listener)\n if (current.size === 0) {\n this.targetDestroyListeners.delete(target)\n }\n\n if (this.targetDestroyListeners.size === 0) {\n this.disconnectObserver()\n }\n }\n }\n\n public createCommandEvent(): HtmlKeymapEvent {\n return createHtmlKeymapEvent()\n }\n\n private ensureObserver(): void {\n if (this.observer || this.targetDestroyListeners.size === 0) {\n return\n }\n\n const MutationObserverCtor = getMutationObserverCtor()\n if (!MutationObserverCtor) {\n return\n }\n\n this.observer = new MutationObserverCtor(() => {\n this.flushDisconnectedTargets()\n })\n this.observer.observe(this.rootTarget, {\n childList: true,\n subtree: true,\n })\n }\n\n private disconnectObserver(): void {\n if (!this.observer) {\n return\n }\n\n this.observer.disconnect()\n this.observer = undefined\n }\n\n private flushDisconnectedTargets(): void {\n for (const [target, listeners] of this.targetDestroyListeners) {\n if (!this.isTargetDestroyed(target)) {\n continue\n }\n\n this.targetDestroyListeners.delete(target)\n for (const current of [...listeners]) {\n current()\n }\n }\n\n if (this.targetDestroyListeners.size === 0) {\n this.disconnectObserver()\n }\n }\n}\n\nexport function createHtmlKeymapHost(root: HTMLElement): KeymapHost<HTMLElement, HtmlKeymapEvent> {\n return new HtmlKeymapHost(root)\n}\n\nexport const htmlEventMatchResolver: EventMatchResolver<HtmlKeymapEvent> = (event, ctx) => {\n return getHtmlEventMatchInputs(event).map((candidate) => ctx.resolveKey(candidate))\n}\n\nexport function createHtmlKeymap(root: HTMLElement): Keymap<HTMLElement, HtmlKeymapEvent> {\n return new Keymap(createHtmlKeymapHost(root))\n}\n\nexport function createDefaultHtmlKeymap(root: HTMLElement): Keymap<HTMLElement, HtmlKeymapEvent> {\n const keymap = new Keymap(createHtmlKeymapHost(root))\n registerDefaultKeys(keymap)\n registerEnabledFields(keymap)\n registerMetadataFields(keymap)\n keymap.prependEventMatchResolver(htmlEventMatchResolver)\n return keymap\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "3516C87AF5CEEBB664756E2164756E21",
9
+ "names": []
10
+ }
package/src/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  export { Keymap } from "./keymap.js";
2
+ export { KEYMAP_EXTENSION_CONTEXT } from "./services/extension-context.js";
2
3
  export { stringifyKeySequence, stringifyKeyStroke } from "./services/keys.js";
3
- export type { KeyLike, KeyMatch, ActiveBinding, KeyStringifyInput, StringifyOptions, Attributes, BindingCommand, BindingParser, BindingParserContext, BindingParserResult, BindingExpander, BindingExpanderContext, BindingEvent, BindingFieldCompiler, BindingFieldContext, BindingInput, BindingInputsValidationResult, LayerBindingsTransformer, LayerBindingsTransformerContext, BindingTransformer, BindingTransformerContext, ParsedBindingInput, Bindings, ActiveKey, ActiveKeyOptions, Listener, ErrorEvent, CommandDefinition, CommandEntry, CommandFilter, CommandBindingsQuery, CommandQuery, CommandQueryValue, CommandRecord, RunCommandOptions, RunCommandResult, CommandHandler, CommandFieldCompiler, CommandFieldContext, CommandContext, CommandResolver, CommandResolverContext, CommandResult, EventData, KeyInputContext, KeymapEvent, KeymapHost, FocusLayer, FocusWithinLayer, GlobalLayer, LayerAnalysisContext, LayerBindingAnalysis, LayerAnalyzer, LayerFieldCompiler, LayerFieldContext, LayerFields, Layer, EventName, Events, InterceptName, Intercepts, KeyInterceptOptions, ParsedCommand, RawInterceptOptions, RawInputContext, ReactiveMatcher, WarningEvent, ResolvedBindingCommand, TargetMode, EventMatchResolverContext, EventMatchResolver, KeyDisambiguationContext, KeyDisambiguationDecision, KeyDeferredDisambiguationContext, KeyDeferredDisambiguationDecision, KeyDeferredDisambiguationHandler, KeyDisambiguationResolver, TargetLayer, KeyToken, ResolvedKeyToken, KeySequencePart, NormalizedKeyStroke, KeyStrokeInput, } from "./types.js";
4
+ export type { KeymapExtensionContext, KeymapExtensionProvider } from "./services/extension-context.js";
5
+ export type { KeyLike, KeyMatch, ActiveBinding, KeyStringifyInput, StringifyOptions, Attributes, BindingCommand, BindingParser, BindingParserContext, BindingParserResult, BindingExpansion, BindingExpander, BindingExpanderContext, BindingEvent, BindingFieldCompiler, BindingFieldContext, Binding, BindingsValidationResult, LayerBindingsTransformer, LayerBindingsTransformerContext, BindingTransformer, BindingTransformerContext, ParsedBinding, Bindings, ActiveKey, ActiveKeyOptions, DispatchBinding, DispatchEvent, DispatchLayer, DispatchPhase, KeyAfterInputContext, KeyAfterReason, Listener, ErrorEvent, Command, CommandEntry, CommandFilter, CommandBindingsQuery, CommandQuery, CommandQueryValue, RunCommandOptions, RunCommandResult, CommandHandler, CommandTransformer, CommandTransformerContext, CommandFieldCompiler, CommandFieldContext, CommandContext, CommandResolver, CommandResolverContext, CommandResult, EventData, KeyInputContext, KeymapEvent, KeymapHost, HostCapability, HostMetadata, HostModifier, HostPlatform, LayerAnalysisContext, LayerBindingAnalysis, LayerAnalyzer, LayerFieldCompiler, LayerFieldContext, Layer, EventName, Events, InterceptName, Intercepts, KeyInterceptOptions, ParsedCommand, RawInterceptOptions, RawInputContext, ReactiveMatcher, WarningEvent, TargetMode, EventMatchResolverContext, EventMatchResolver, KeyDisambiguationContext, KeyDisambiguationDecision, KeyDeferredDisambiguationContext, KeyDeferredDisambiguationDecision, KeyDeferredDisambiguationHandler, KeyDisambiguationResolver, KeyToken, SequencePattern, SequencePatternMatch, ResolvedSequencePattern, ResolvedKeyToken, KeySequencePart, NormalizedKeyStroke, KeyStrokeInput, } from "./types.js";