{"version":3,"names":["parseKittyKeyboard","metaKeyCodeRe","fnKeyRe","keyName","OP","OQ","OR","OS","OA","OB","OC","OD","OE","OF","OH","f","b","p","n","Oa","Ob","Oc","Od","Oe","nonAlphanumericKeys","Object","values","shiftKeys","Set","isShiftKey","code","has","ctrlKeys","isCtrlKey","modifyOtherKeysRe","sgrMouseRe","sgrMouseContRe","sgrMousePartialRe","sgrMousePartialContRe","sizeReportRe","cursorPosReportRe","deviceAttrsRe","modeReportRe","oscResponseRe","parseKeypress","s","options","parts","Buffer","isBuffer","undefined","String","c0","charCodeAt","test","startsWith","length","key","name","ctrl","meta","shift","option","number","sequence","raw","eventType","source","useKittyKeyboard","kittyResult","modifyOtherKeysMatch","exec","modifier","parseInt","charCode","super","hyper","char","fromCharCode","charAt","toLowerCase","codePointAt","isUpperCase","segs","filter","Boolean","join","keyNameResult"],"sources":["parse-keypress.ts"],"sourcesContent":["/** biome-ignore-all lint/style/noNonNullAssertion: vendored from OpenTUI — regex match group access after confirmed match */\n/** biome-ignore-all lint/suspicious/noControlCharactersInRegex: intentional ESC/CSI pattern matching in terminal escape sequences */\n// Copied from https://github.com/enquirer/enquirer/blob/36785f3399a41cd61e9d28d1eb9c2fcd73d69b4c/lib/keypress.js\nimport { parseKittyKeyboard } from \"./parse-keypress-kitty.ts\";\n\nconst metaKeyCodeRe = /^(?:\\x1b)([a-zA-Z0-9])$/;\n\nconst fnKeyRe =\n\t/^(?:\\x1b+)(O|N|\\[|\\[\\[)(?:(\\d+)(?:;(\\d+))?([~^$])|(?:1;)?(\\d+)?([a-zA-Z]))/;\n\nconst keyName: Record<string, string> = {\n\t/* xterm/gnome ESC O letter */\n\tOP: \"f1\",\n\tOQ: \"f2\",\n\tOR: \"f3\",\n\tOS: \"f4\",\n\t/* xterm/rxvt ESC [ number ~ */\n\t\"[11~\": \"f1\",\n\t\"[12~\": \"f2\",\n\t\"[13~\": \"f3\",\n\t\"[14~\": \"f4\",\n\t/* from Cygwin and used in libuv */\n\t\"[[A\": \"f1\",\n\t\"[[B\": \"f2\",\n\t\"[[C\": \"f3\",\n\t\"[[D\": \"f4\",\n\t\"[[E\": \"f5\",\n\t/* common */\n\t\"[15~\": \"f5\",\n\t\"[17~\": \"f6\",\n\t\"[18~\": \"f7\",\n\t\"[19~\": \"f8\",\n\t\"[20~\": \"f9\",\n\t\"[21~\": \"f10\",\n\t\"[23~\": \"f11\",\n\t\"[24~\": \"f12\",\n\t\"[29~\": \"menu\",\n\t\"[57427~\": \"clear\",\n\t/* xterm ESC [ letter */\n\t\"[A\": \"up\",\n\t\"[B\": \"down\",\n\t\"[C\": \"right\",\n\t\"[D\": \"left\",\n\t\"[E\": \"clear\",\n\t\"[F\": \"end\",\n\t\"[H\": \"home\",\n\t\"[P\": \"f1\",\n\t\"[Q\": \"f2\",\n\t\"[S\": \"f4\",\n\t/* xterm/gnome ESC O letter */\n\tOA: \"up\",\n\tOB: \"down\",\n\tOC: \"right\",\n\tOD: \"left\",\n\tOE: \"clear\",\n\tOF: \"end\",\n\tOH: \"home\",\n\t/* xterm/rxvt ESC [ number ~ */\n\t\"[1~\": \"home\",\n\t\"[2~\": \"insert\",\n\t\"[3~\": \"delete\",\n\t\"[4~\": \"end\",\n\t\"[5~\": \"pageup\",\n\t\"[6~\": \"pagedown\",\n\t/* putty */\n\t\"[[5~\": \"pageup\",\n\t\"[[6~\": \"pagedown\",\n\t/* rxvt */\n\t\"[7~\": \"home\",\n\t\"[8~\": \"end\",\n\t/* rxvt keys with modifiers */\n\t\"[a\": \"up\",\n\t\"[b\": \"down\",\n\t\"[c\": \"right\",\n\t\"[d\": \"left\",\n\t\"[e\": \"clear\",\n\t/* option + arrow keys (old style) */\n\tf: \"right\",\n\tb: \"left\",\n\tp: \"up\",\n\tn: \"down\",\n\n\t\"[2$\": \"insert\",\n\t\"[3$\": \"delete\",\n\t\"[5$\": \"pageup\",\n\t\"[6$\": \"pagedown\",\n\t\"[7$\": \"home\",\n\t\"[8$\": \"end\",\n\n\tOa: \"up\",\n\tOb: \"down\",\n\tOc: \"right\",\n\tOd: \"left\",\n\tOe: \"clear\",\n\n\t\"[2^\": \"insert\",\n\t\"[3^\": \"delete\",\n\t\"[5^\": \"pageup\",\n\t\"[6^\": \"pagedown\",\n\t\"[7^\": \"home\",\n\t\"[8^\": \"end\",\n\t/* misc. */\n\t\"[Z\": \"tab\",\n};\n\nexport const nonAlphanumericKeys = [...Object.values(keyName), \"backspace\"];\n\nconst shiftKeys = new Set([\n\t\"[a\",\n\t\"[b\",\n\t\"[c\",\n\t\"[d\",\n\t\"[e\",\n\t\"[2$\",\n\t\"[3$\",\n\t\"[5$\",\n\t\"[6$\",\n\t\"[7$\",\n\t\"[8$\",\n\t\"[Z\",\n]);\nconst isShiftKey = (code: string) => shiftKeys.has(code);\n\nconst ctrlKeys = new Set([\n\t\"Oa\",\n\t\"Ob\",\n\t\"Oc\",\n\t\"Od\",\n\t\"Oe\",\n\t\"[2^\",\n\t\"[3^\",\n\t\"[5^\",\n\t\"[6^\",\n\t\"[7^\",\n\t\"[8^\",\n]);\nconst isCtrlKey = (code: string) => ctrlKeys.has(code);\n\nexport type KeyEventType = \"press\" | \"repeat\" | \"release\";\n\nexport interface ParsedKey {\n\tbaseCode?: number;\n\tcapsLock?: boolean;\n\tcode?: string;\n\tctrl: boolean;\n\teventType: KeyEventType;\n\thyper?: boolean;\n\tmeta: boolean;\n\tname: string;\n\tnumber: boolean;\n\tnumLock?: boolean;\n\toption: boolean;\n\traw: string;\n\trepeated?: boolean;\n\tsequence: string;\n\tshift: boolean;\n\tsource: \"raw\" | \"kitty\";\n\tsuper?: boolean;\n}\n\nexport type ParseKeypressOptions = {\n\tuseKittyKeyboard?: boolean;\n};\n\nconst modifyOtherKeysRe = /^\\x1b\\[27;(\\d+);(\\d+)~$/;\n\n// Mouse-event and terminal-response sequences to filter out (not key presses).\nconst sgrMouseRe = /^\\x1b\\[<\\d+;\\d+;\\d+[Mm]$/;\nconst sgrMouseContRe = /^\\[<\\d+;\\d+;\\d+[Mm]$/;\nconst sgrMousePartialRe = /^\\x1b\\[<[\\d;]*$/;\nconst sgrMousePartialContRe = /^\\[<[\\d;]*$/;\nconst sizeReportRe = /^\\x1b\\[\\d+;\\d+;\\d+t$/;\nconst cursorPosReportRe = /^\\x1b\\[\\d+;\\d+R$/;\nconst deviceAttrsRe = /^\\x1b\\[\\?[\\d;]+c$/;\nconst modeReportRe = /^\\x1b\\[\\?[\\d;]+\\$y$/;\nconst oscResponseRe = /^\\x1b\\][\\d;].*(\\x1b\\\\|\\x07)$/;\n\nexport const parseKeypress = (\n\ts: Buffer | string = \"\",\n\toptions: ParseKeypressOptions = {},\n): ParsedKey | null => {\n\tlet parts: RegExpExecArray | null = null;\n\n\tif (Buffer.isBuffer(s)) {\n\t\tif (s[0]! > 127 && s[1] === undefined) {\n\t\t\t(s[0] as unknown as number) -= 128;\n\t\t\ts = `\\x1b${String(s)}`;\n\t\t} else {\n\t\t\ts = String(s);\n\t\t}\n\t} else if (s !== undefined && typeof s !== \"string\") {\n\t\ts = String(s);\n\t} else if (!s) {\n\t\ts = \"\";\n\t}\n\n\t// Every mouse/terminal-response filter below requires s to start with ESC or\n\t// '['. Plain printable keypresses (the common case) match none of them, so\n\t// skip the whole regex gauntlet for those.\n\tconst c0 = s.charCodeAt(0);\n\tif (c0 === 0x1b || c0 === 0x5b /* [ */) {\n\t\t// Filter out mouse events (SGR and basic)\n\t\t// Complete SGR mouse: ESC[<btn;x;yM or ESC[<btn;x;ym\n\t\tif (sgrMouseRe.test(s)) {\n\t\t\treturn null;\n\t\t}\n\t\t// Complete SGR mouse continuation without leading ESC. This can occur when\n\t\t// ESC was flushed separately on timeout and the rest of the sequence arrived later.\n\t\tif (sgrMouseContRe.test(s)) {\n\t\t\treturn null;\n\t\t}\n\t\t// Incomplete/partial SGR mouse sequences (flushed by the zig parser when\n\t\t// a new ESC arrives before the sequence is complete). These start with\n\t\t// ESC[< followed by digits/semicolons but lack the terminal M/m.\n\t\tif (sgrMousePartialRe.test(s)) {\n\t\t\treturn null;\n\t\t}\n\t\t// Incomplete/partial SGR mouse continuations without ESC.\n\t\tif (sgrMousePartialContRe.test(s)) {\n\t\t\treturn null;\n\t\t}\n\t\tif (s.startsWith(\"\\x1b[M\") && s.length >= 6) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Filter out terminal response sequences (not keyboard events)\n\t\t// These are responses to terminal queries and should not be treated as key presses\n\n\t\t// Window/cell size reports: ESC[4;height;width t or ESC[8;rows;cols t\n\t\tif (sizeReportRe.test(s)) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Cursor position reports (DSR): ESC[row;col R\n\t\tif (cursorPosReportRe.test(s)) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Device Attributes (DA) responses: ESC[?...c\n\t\tif (deviceAttrsRe.test(s)) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Mode reports: ESC[?...;...$y\n\t\tif (modeReportRe.test(s)) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Focus events: ESC[I (focus in), ESC[O (focus out)\n\t\t// Note: ESC[O is also used for SS3 sequences (like arrow keys), but those have a character after O\n\t\tif (s === \"\\x1b[I\" || s === \"\\x1b[O\") {\n\t\t\treturn null;\n\t\t}\n\n\t\t// OSC (Operating System Command) responses: ESC]...ESC\\ or ESC]...BEL\n\t\tif (oscResponseRe.test(s)) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Bracketed paste mode markers: ESC[200~ (start), ESC[201~ (end)\n\t\tif (s === \"\\x1b[200~\" || s === \"\\x1b[201~\") {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tconst key: ParsedKey = {\n\t\tname: \"\",\n\t\tctrl: false,\n\t\tmeta: false,\n\t\tshift: false,\n\t\toption: false,\n\t\tnumber: false,\n\t\tsequence: s,\n\t\traw: s,\n\t\teventType: \"press\",\n\t\tsource: \"raw\",\n\t};\n\n\tkey.sequence = key.sequence || s || key.name;\n\n\t// Check for Kitty keyboard protocol if enabled\n\tif (options.useKittyKeyboard) {\n\t\tconst kittyResult = parseKittyKeyboard(s);\n\t\tif (kittyResult) {\n\t\t\treturn kittyResult;\n\t\t}\n\t}\n\n\t// Check for modifyOtherKeys sequences (CSI u protocol variant)\n\t// Format: CSI 27 ; modifier ; code ~\n\t// This is sent by terminals (xterm, iTerm2, Ghostty, etc.) with modifyOtherKeys mode enabled\n\t// to encode modified versions of keys that don't normally have modifier variants\n\t// Examples: CSI 27;2;13~ (shift+enter), CSI 27;5;13~ (ctrl+enter), CSI 27;5;27~ (ctrl+escape)\n\tconst modifyOtherKeysMatch = modifyOtherKeysRe.exec(s);\n\tif (modifyOtherKeysMatch) {\n\t\tconst modifier = parseInt(modifyOtherKeysMatch[1]!, 10) - 1;\n\t\tconst charCode = parseInt(modifyOtherKeysMatch[2]!, 10);\n\n\t\tkey.ctrl = !!(modifier & 4);\n\t\tkey.meta = !!(modifier & 2); // Alt/Option sets meta\n\t\tkey.shift = !!(modifier & 1);\n\t\tkey.option = !!(modifier & 2);\n\t\tkey.super = !!(modifier & 8);\n\t\tkey.hyper = !!(modifier & 16);\n\n\t\t// Handle common keys by their ASCII codes\n\t\tif (charCode === 13) {\n\t\t\tkey.name = \"return\";\n\t\t} else if (charCode === 27) {\n\t\t\tkey.name = \"escape\";\n\t\t} else if (charCode === 9) {\n\t\t\tkey.name = \"tab\";\n\t\t} else if (charCode === 32) {\n\t\t\tkey.name = \"space\";\n\t\t} else if (charCode === 127 || charCode === 8) {\n\t\t\tkey.name = \"backspace\";\n\t\t} else {\n\t\t\t// For other character codes, use the character itself\n\t\t\tconst char = String.fromCharCode(charCode);\n\t\t\tkey.name = char;\n\t\t\tkey.sequence = char;\n\t\t\tif (charCode >= 48 && charCode <= 57) {\n\t\t\t\tkey.number = true;\n\t\t\t}\n\t\t}\n\n\t\treturn key;\n\t}\n\n\tif (s === \"\\r\" || s === \"\\x1b\\r\") {\n\t\t// carriage return\n\t\tkey.name = \"return\";\n\t\tkey.meta = s.length === 2;\n\t} else if (s === \"\\n\" || s === \"\\x1b\\n\") {\n\t\t// linefeed\n\t\tkey.name = \"linefeed\";\n\t\tkey.meta = s.length === 2;\n\t} else if (s === \"\\t\") {\n\t\t// tab\n\t\tkey.name = \"tab\";\n\t} else if (s === \"\\b\" || s === \"\\x1b\\b\" || s === \"\\x7f\" || s === \"\\x1b\\x7f\") {\n\t\t// backspace or ctrl+h\n\t\t// On OSX, \\x7f is also backspace\n\t\tkey.name = \"backspace\";\n\t\tkey.meta = s.charAt(0) === \"\\x1b\";\n\t} else if (s === \"\\x1b\" || s === \"\\x1b\\x1b\") {\n\t\t// escape key\n\t\tkey.name = \"escape\";\n\t\tkey.meta = s.length === 2;\n\t} else if (s === \" \" || s === \"\\x1b \") {\n\t\tkey.name = \"space\";\n\t\tkey.meta = s.length === 2;\n\t} else if (s === \"\\x00\") {\n\t\t// ctrl+space\n\t\tkey.name = \"space\";\n\t\tkey.ctrl = true;\n\t} else if (s.length === 1 && s <= \"\\x1a\") {\n\t\t// ctrl+letter\n\t\tkey.name = String.fromCharCode(s.charCodeAt(0) + \"a\".charCodeAt(0) - 1);\n\t\tkey.ctrl = true;\n\t} else if (s.length === 1 && s >= \"0\" && s <= \"9\") {\n\t\t// number - keep the actual number character for vim commands\n\t\tkey.name = s;\n\t\tkey.number = true;\n\t} else if (s.length === 1 && s >= \"a\" && s <= \"z\") {\n\t\t// lowercase letter\n\t\tkey.name = s;\n\t} else if (s.length === 1 && s >= \"A\" && s <= \"Z\") {\n\t\t// shift+letter\n\t\tkey.name = s.toLowerCase();\n\t\tkey.shift = true;\n\t} else if (s.length === 1 || (s.length === 2 && s.codePointAt(0)! > 0xffff)) {\n\t\t// Single character (including emoji/surrogate pairs above BMP)\n\t\tkey.name = s;\n\t} else if (metaKeyCodeRe.test(s)) {\n\t\t// meta+character key\n\t\tparts = metaKeyCodeRe.exec(s);\n\t\tkey.meta = true;\n\t\tconst char = parts![1]!;\n\t\tconst isUpperCase = /^[A-Z]$/.test(char);\n\n\t\t// Check if uppercase F or B map to arrow keys (old terminal style)\n\t\tif (char === \"F\") {\n\t\t\tkey.name = \"right\";\n\t\t} else if (char === \"B\") {\n\t\t\tkey.name = \"left\";\n\t\t} else if (isUpperCase) {\n\t\t\tkey.shift = true;\n\t\t\tkey.name = char;\n\t\t} else {\n\t\t\tkey.name = char;\n\t\t}\n\t} else if (s.length === 2 && s[0] === \"\\x1b\" && s[1]! <= \"\\x1a\") {\n\t\t// meta+ctrl+letter (ESC + control character)\n\t\tkey.meta = true;\n\t\tkey.ctrl = true;\n\t\tkey.name = String.fromCharCode(s.charCodeAt(1) + \"a\".charCodeAt(0) - 1);\n\t} else if (fnKeyRe.test(s)) {\n\t\tparts = fnKeyRe.exec(s)!;\n\t\tconst segs = [...s];\n\n\t\tif (segs[0] === \"\\u001b\" && segs[1] === \"\\u001b\") {\n\t\t\tkey.option = true;\n\t\t\tkey.meta = true;\n\t\t}\n\n\t\t// ansi escape sequence\n\t\t// reassemble the key code leaving out leading \\x1b's,\n\t\t// the modifier key bitflag and any meaningless \"1;\" sequence\n\t\tconst code = [parts[1], parts[2], parts[4], parts[6]]\n\t\t\t.filter(Boolean)\n\t\t\t.join(\"\");\n\n\t\tconst modifier = parseInt(parts[3] || parts[5] || \"1\", 10) - 1;\n\n\t\t// Parse the key modifier\n\t\t// Terminal modifier bits: 1=Shift, 2=Alt/Option, 4=Ctrl, 8=Super, 16=Hyper\n\t\t// Note: meta flag is set for Alt/Option (bit 2)\n\t\tkey.ctrl = key.ctrl || !!(modifier & 4);\n\t\tkey.meta = key.meta || !!(modifier & 2);\n\t\tkey.shift = key.shift || !!(modifier & 1);\n\t\tkey.option = key.option || !!(modifier & 2);\n\t\tkey.super = !!(modifier & 8);\n\t\tkey.hyper = !!(modifier & 16);\n\t\tkey.code = code;\n\n\t\tconst keyNameResult = keyName[code];\n\t\tif (keyNameResult) {\n\t\t\tkey.name = keyNameResult;\n\t\t\tkey.shift = isShiftKey(code) || key.shift;\n\t\t\tkey.ctrl = isCtrlKey(code) || key.ctrl;\n\t\t} else {\n\t\t\t// If we matched the regex but didn't find a valid key name,\n\t\t\t// reset the key to default state (unknown sequence)\n\t\t\tkey.name = \"\";\n\t\t\tkey.code = undefined;\n\t\t}\n\t} else if (s === \"\\x1b[3~\") {\n\t\t// delete key\n\t\tkey.name = \"delete\";\n\t\tkey.meta = false;\n\t\tkey.code = \"[3~\";\n\t}\n\n\treturn key;\n};\n"],"mappings":"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","ignoreList":[]}