| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /** @jsxImportSource @opentui/solid */
- import { createDefaultOpenTuiKeymap } from "@opentui/keymap/opentui"
- import { testRender, useRenderer } from "@opentui/solid"
- import { expect, test } from "bun:test"
- import { onCleanup } from "solid-js"
- import { createTuiResolvedConfig } from "../../fixture/tui-runtime"
- import { OpencodeKeymapProvider, registerOpencodeKeymap } from "@/cli/cmd/tui/keymap"
- test("legacy page key aliases compile as page keys", async () => {
- const sequences: Record<string, string[][]> = {}
- function Harness() {
- const renderer = useRenderer()
- const keymap = createDefaultOpenTuiKeymap(renderer)
- const config = createTuiResolvedConfig({
- keybinds: {
- messages_page_up: "pgup",
- messages_page_down: "pgdown",
- },
- })
- const offKeymap = registerOpencodeKeymap(keymap, renderer, config)
- const offLayer = keymap.registerLayer({
- bindings: config.keybinds.gather("session", ["session.page.up", "session.page.down"]),
- })
- const bindings = keymap.getCommandBindings({
- visibility: "registered",
- commands: ["session.page.up", "session.page.down"],
- })
- sequences.up =
- bindings.get("session.page.up")?.map((binding) => binding.sequence.map((part) => part.stroke.name)) ?? []
- sequences.down =
- bindings.get("session.page.down")?.map((binding) => binding.sequence.map((part) => part.stroke.name)) ?? []
- onCleanup(() => {
- offLayer()
- offKeymap()
- })
- return (
- <OpencodeKeymapProvider keymap={keymap}>
- <box />
- </OpencodeKeymapProvider>
- )
- }
- const app = await testRender(() => <Harness />)
- try {
- expect(sequences).toEqual({
- up: [["pageup"]],
- down: [["pagedown"]],
- })
- } finally {
- app.renderer.destroy()
- }
- })
|