{"version":3,"file":"keymap.cjs","sources":["../../../app/extensions/keymap.ts"],"sourcesContent":["import {\n  acceptCompletion,\n  closeCompletion,\n  completionStatus,\n  deleteBracketPair,\n  moveCompletionSelection,\n  startCompletion,\n} from \"@codemirror/autocomplete\"\nimport type { EditorView, KeyBinding } from \"@codemirror/view\"\nimport {\n  insertNewlineAndIndent,\n  cursorCharLeft,\n  selectCharLeft,\n  deleteLine,\n  moveLineDown,\n  moveLineUp,\n  copyLineDown,\n  copyLineUp,\n  selectLine,\n  cursorMatchingBracket,\n  indentMore,\n  indentLess,\n  cursorLineBoundaryBackward,\n  selectLineBoundaryBackward,\n  cursorDocStart,\n  selectDocStart,\n  cursorLineBoundaryForward,\n  selectLineBoundaryForward,\n  cursorDocEnd,\n  selectDocEnd,\n  cursorGroupLeft,\n  selectGroupLeft,\n  cursorPageDown,\n  cursorPageUp,\n  deleteCharBackward,\n  deleteCharForward,\n  deleteGroupBackward,\n  deleteGroupForward,\n  deleteToLineEnd,\n  deleteToLineStart,\n  selectAll,\n  selectPageDown,\n  selectPageUp,\n  cursorCharRight,\n  cursorGroupRight,\n  selectCharRight,\n  selectGroupRight,\n  cursorLineUp,\n  selectLineUp,\n  cursorLineDown,\n  selectLineDown,\n  cursorLineEnd,\n  cursorLineStart,\n  selectLineEnd,\n  selectLineStart,\n  splitLine,\n  transposeChars,\n  redo,\n  undo,\n  undoSelection,\n  toggleComment,\n  lineComment,\n  lineUncomment,\n  toggleBlockComment,\n} from \"@codemirror/commands\"\nimport {\n  closeSearchPanel,\n  gotoLine,\n  openSearchPanel,\n  replaceAll,\n  selectMatches,\n  selectNextOccurrence,\n  selectSelectionMatches,\n} from \"@codemirror/search\"\nimport { foldAll, foldCode, unfoldAll, unfoldCode } from \"@codemirror/language\"\nimport { nextDiagnostic, previousDiagnostic, openLintPanel } from \"@codemirror/lint\"\nimport { EditorSelection } from \"@codemirror/state\"\nimport { addCursorAtEachSelectionLine, addCursorDown, addCursorUp } from \"./multi-cursor\"\nimport { formatDocument, formatHtmlDocument } from \"./format\"\nimport { defaultKeymap } from \"@codemirror/commands\"\nimport { searchKeymap } from \"@codemirror/search\"\nimport { historyKeymap } from \"@codemirror/commands\"\nimport { foldKeymap } from \"@codemirror/language\"\nimport { completionKeymap } from \"@codemirror/autocomplete\"\nimport { lintKeymap } from \"@codemirror/lint\"\n\nconst SELECTED_AUTOCOMPLETE_OPTION_SELECTOR = \".cm-tooltip-autocomplete li[aria-selected]\"\nconst onAutocompleteNavigate = (dir: \"up\" | \"down\") => (view: EditorView) => {\n  if (completionStatus(view.state) !== null) {\n    moveCompletionSelection(dir === \"down\")(view)\n    document\n      .querySelector(SELECTED_AUTOCOMPLETE_OPTION_SELECTOR)\n      ?.scrollIntoView({ block: \"nearest\" })\n    return true\n  }\n  return false\n}\n\n/**\n * Insert two spaces at the current cursor position (or replacing the current selection)\n * and move the cursor to the end of the inserted spaces.\n */\nconst insertTwoSpaces: KeyBinding[\"run\"] = (view: EditorView) => {\n  const { state } = view\n\n  const transaction = state.changeByRange((range) => {\n    const insertText = \"  \"\n\n    return {\n      changes: {\n        from: range.from,\n        to: range.to,\n        insert: insertText,\n      },\n      range: EditorSelection.cursor(range.from + insertText.length),\n    }\n  })\n\n  view.dispatch(transaction)\n  return true\n}\n\n// Keymap based on VSCode\nexport const editorKeymap: KeyBinding[] = [\n  { key: \"Ctrl-Space\", run: startCompletion },\n  { key: \"Escape\", run: closeCompletion },\n  {\n    key: \"Escape\",\n    run: (view) => {\n      if (view.state.selection.ranges.length > 1) {\n        view.dispatch({\n          selection: EditorSelection.single(view.state.selection.main.head),\n        })\n        return true\n      }\n      return false\n    },\n  },\n  {\n    key: \"ArrowDown\",\n    run: onAutocompleteNavigate(\"down\"),\n  },\n  {\n    key: \"ArrowUp\",\n    run: onAutocompleteNavigate(\"up\"),\n  },\n  { key: \"PageDown\", run: moveCompletionSelection(true, \"page\") },\n  { key: \"PageUp\", run: moveCompletionSelection(false, \"page\") },\n  { key: \"Enter\", run: acceptCompletion },\n  { key: \"Tab\", run: acceptCompletion },\n\n  { key: \"Mod-f\", run: openSearchPanel, scope: \"editor search-panel\" },\n  { key: \"Escape\", run: closeSearchPanel, scope: \"editor search-panel\" },\n  { key: \"Alt-Enter\", run: selectMatches, scope: \"editor search-panel\" },\n  { key: \"Mod-Alt-Enter\", run: replaceAll, scope: \"editor search-panel\" },\n  { key: \"Ctrl-g\", run: gotoLine },\n  { key: \"Mod-d\", run: selectNextOccurrence, preventDefault: true },\n  { key: \"Shift-Mod-l\", run: selectSelectionMatches },\n  { key: \"Enter\", run: insertNewlineAndIndent, shift: insertNewlineAndIndent },\n  {\n    key: \"ArrowLeft\",\n    run: cursorCharLeft,\n    shift: selectCharLeft,\n    preventDefault: true,\n  },\n  {\n    key: \"Mod-ArrowLeft\",\n    mac: \"Alt-ArrowLeft\",\n    run: cursorGroupLeft,\n    shift: selectGroupLeft,\n  },\n  {\n    key: \"ArrowRight\",\n    run: cursorCharRight,\n    shift: selectCharRight,\n    preventDefault: true,\n  },\n  {\n    key: \"Mod-ArrowRight\",\n    mac: \"Alt-ArrowRight\",\n    run: cursorGroupRight,\n    shift: selectGroupRight,\n  },\n\n  {\n    key: \"ArrowUp\",\n    run: cursorLineUp,\n    shift: selectLineUp,\n    preventDefault: true,\n  },\n  {\n    key: \"ArrowDown\",\n    run: cursorLineDown,\n    shift: selectLineDown,\n    preventDefault: true,\n  },\n\n  {\n    key: \"Home\",\n    run: cursorLineBoundaryBackward,\n    shift: selectLineBoundaryBackward,\n  },\n  {\n    mac: \"Cmd-ArrowLeft\",\n    run: cursorLineBoundaryBackward,\n    shift: selectLineBoundaryBackward,\n  },\n  { key: \"Mod-Home\", run: cursorDocStart, shift: selectDocStart },\n  { mac: \"Cmd-ArrowUp\", run: cursorDocStart, shift: selectDocStart },\n\n  { key: \"PageUp\", run: cursorPageUp, shift: selectPageUp },\n  { mac: \"Ctrl-ArrowUp\", run: cursorPageUp, shift: selectPageUp },\n\n  { key: \"PageDown\", run: cursorPageDown, shift: selectPageDown },\n  { mac: \"Ctrl-ArrowDown\", run: cursorPageDown, shift: selectPageDown },\n\n  {\n    key: \"End\",\n    run: cursorLineBoundaryForward,\n    shift: selectLineBoundaryForward,\n  },\n  {\n    mac: \"Cmd-ArrowRight\",\n    run: cursorLineBoundaryForward,\n    shift: selectLineBoundaryForward,\n  },\n\n  {\n    key: \"Mod-Alt-ArrowUp\",\n    linux: \"Shift-Alt-ArrowUp\",\n    run: addCursorUp,\n    preventDefault: true,\n  },\n  {\n    key: \"Mod-Alt-ArrowDown\",\n    linux: \"Shift-Alt-ArrowDown\",\n    run: addCursorDown,\n    preventDefault: true,\n  },\n\n  {\n    key: \"Shift-Alt-i\",\n    run: addCursorAtEachSelectionLine,\n  },\n\n  { key: \"Mod-End\", run: cursorDocEnd, shift: selectDocEnd },\n  { mac: \"Cmd-ArrowDown\", run: cursorDocEnd, shift: selectDocEnd },\n\n  { key: \"Mod-a\", run: selectAll },\n  { key: \"Backspace\", run: deleteBracketPair },\n  { key: \"Backspace\", run: deleteCharBackward, shift: deleteCharBackward },\n  { key: \"Delete\", run: deleteCharForward },\n  { key: \"Mod-Backspace\", mac: \"Alt-Backspace\", run: deleteGroupBackward },\n  { key: \"Mod-Delete\", mac: \"Alt-Delete\", run: deleteGroupForward },\n  { mac: \"Mod-Backspace\", run: deleteToLineStart },\n  { mac: \"Mod-Delete\", run: deleteToLineEnd },\n\n  {\n    mac: \"Ctrl-b\",\n    run: cursorCharLeft,\n    shift: selectCharLeft,\n    preventDefault: true,\n  },\n  { mac: \"Ctrl-f\", run: cursorCharRight, shift: selectCharRight },\n\n  { mac: \"Ctrl-p\", run: cursorLineUp, shift: selectLineUp },\n  { mac: \"Ctrl-n\", run: cursorLineDown, shift: selectLineDown },\n\n  { mac: \"Ctrl-a\", run: cursorLineStart, shift: selectLineStart },\n  { mac: \"Ctrl-e\", run: cursorLineEnd, shift: selectLineEnd },\n\n  { mac: \"Ctrl-d\", run: deleteCharForward },\n  { mac: \"Ctrl-h\", run: deleteCharBackward },\n  { mac: \"Ctrl-k\", run: deleteToLineEnd },\n  { mac: \"Ctrl-Alt-h\", run: deleteGroupBackward },\n\n  { mac: \"Ctrl-o\", run: splitLine },\n  { mac: \"Ctrl-t\", run: transposeChars },\n\n  { mac: \"Ctrl-v\", run: cursorPageDown },\n  { mac: \"Alt-v\", run: cursorPageUp },\n\n  { key: \"Shift-Mod-k\", run: deleteLine },\n  { key: \"Alt-ArrowDown\", run: moveLineDown },\n  { key: \"Alt-ArrowUp\", run: moveLineUp },\n  { win: \"Shift-Alt-ArrowDown\", mac: \"Shift-Alt-ArrowDown\", run: copyLineDown },\n  { win: \"Shift-Alt-ArrowUp\", mac: \"Shift-Alt-ArrowUp\", run: copyLineUp },\n\n  { key: \"Mod-l\", run: selectLine, preventDefault: true },\n  { key: \"Shift-Mod-\\\\\", run: cursorMatchingBracket },\n  {\n    any(view, event) {\n      if (\n        event.key === \"Tab\" ||\n        (event.key === \"Escape\" && completionStatus(view.state) !== null)\n      ) {\n        event.stopPropagation()\n      }\n\n      return false\n    },\n  },\n  { key: \"Tab\", run: indentMore, shift: indentLess, preventDefault: true },\n\n  { key: \"Mod-[\", run: indentLess },\n  { key: \"Mod-]\", run: indentMore },\n\n  { key: \"Ctrl-Shift-[\", mac: \"Cmd-Alt-[\", run: foldCode },\n  { key: \"Ctrl-Shift-]\", mac: \"Cmd-Alt-]\", run: unfoldCode },\n  { key: \"Mod-k Mod-0\", run: foldAll },\n  { key: \"Mod-k Mod-j\", run: unfoldAll },\n\n  { key: \"Mod-k Mod-c\", run: lineComment },\n  { key: \"Mod-k Mod-u\", run: lineUncomment },\n  { key: \"Mod-/\", run: toggleComment },\n  { key: \"Shift-Alt-a\", run: toggleBlockComment },\n\n  { key: \"Mod-z\", run: undo, preventDefault: true },\n  { key: \"Mod-y\", run: redo, preventDefault: true },\n  { key: \"Mod-Shift-z\", run: redo, preventDefault: true },\n  { key: \"Mod-u\", run: undoSelection, preventDefault: true },\n\n  { key: \"Mod-Shift-m\", run: openLintPanel },\n  { key: \"F8\", run: nextDiagnostic },\n  { key: \"Shift-F8\", run: previousDiagnostic },\n\n  { key: \"Shift-Alt-f\", linux: \"Ctrl-Shift-i\", run: formatDocument },\n\n  {\n    key: \"Mod-Enter\",\n    run: (view: EditorView) => {\n      const { state } = view\n      const { from } = state.selection.main\n      const line = state.doc.lineAt(from)\n      const lineEnd = line.to\n      const lineText = line.text\n\n      // 找到当前行第一个非空白字符的位置\n      const match = lineText.match(/^(\\s*)/)\n      const indent = match ? match[1] : \"\"\n\n      // 在当前行末尾插入换行符和缩进，并将光标移动到新行的缩进位置\n      const insertText = \"\\n\" + indent\n      view.dispatch({\n        changes: {\n          from: lineEnd,\n          to: lineEnd,\n          insert: insertText,\n        },\n        selection: {\n          anchor: lineEnd + insertText.length,\n        },\n      })\n\n      return true\n    },\n    preventDefault: true,\n  },\n\n  {\n    key: \"Mod-s\",\n    run: (view: EditorView) => {\n      formatDocument(view)\n      return true\n    },\n    preventDefault: true,\n  },\n]\n\n/**\n * JS Editor 专用的键盘映射\n * 使用 formatHtmlDocument 进行 HTML 格式化\n */\nexport const jsEditorKeymap: KeyBinding[] = [\n  ...defaultKeymap,\n  ...searchKeymap,\n  ...historyKeymap,\n  ...foldKeymap,\n  ...completionKeymap,\n  ...lintKeymap,\n  // For JsEditor, Tab inserts two spaces at the current cursor position\n  { key: \"Tab\", run: insertTwoSpaces, preventDefault: true },\n  { key: \"Mod-Shift-z\", run: redo, preventDefault: true },\n  { key: \"Mod-u\", run: undoSelection, preventDefault: true },\n  { key: \"Mod-Shift-m\", run: openLintPanel },\n  { key: \"F8\", run: nextDiagnostic },\n  { key: \"Shift-F8\", run: previousDiagnostic },\n  { key: \"Shift-Alt-f\", linux: \"Ctrl-Shift-i\", run: formatHtmlDocument },\n  {\n    key: \"Mod-s\",\n    run: (view: EditorView) => {\n      formatHtmlDocument(view)\n      return true\n    },\n    preventDefault: true,\n  },\n]\n"],"names":["completionStatus","moveCompletionSelection","EditorSelection","startCompletion","closeCompletion","acceptCompletion","openSearchPanel","closeSearchPanel","selectMatches","replaceAll","gotoLine","selectNextOccurrence","selectSelectionMatches","insertNewlineAndIndent","cursorCharLeft","selectCharLeft","cursorGroupLeft","selectGroupLeft","cursorCharRight","selectCharRight","cursorGroupRight","selectGroupRight","cursorLineUp","selectLineUp","cursorLineDown","selectLineDown","cursorLineBoundaryBackward","selectLineBoundaryBackward","cursorDocStart","selectDocStart","cursorPageUp","selectPageUp","cursorPageDown","selectPageDown","cursorLineBoundaryForward","selectLineBoundaryForward","addCursorUp","addCursorDown","addCursorAtEachSelectionLine","cursorDocEnd","selectDocEnd","selectAll","deleteBracketPair","deleteCharBackward","deleteCharForward","deleteGroupBackward","deleteGroupForward","deleteToLineStart","deleteToLineEnd","cursorLineStart","selectLineStart","cursorLineEnd","selectLineEnd","splitLine","transposeChars","deleteLine","moveLineDown","moveLineUp","copyLineDown","copyLineUp","selectLine","cursorMatchingBracket","indentMore","indentLess","foldCode","unfoldCode","foldAll","unfoldAll","lineComment","lineUncomment","toggleComment","toggleBlockComment","undo","redo","undoSelection","openLintPanel","nextDiagnostic","previousDiagnostic","formatDocument","defaultKeymap","searchKeymap","historyKeymap","foldKeymap","completionKeymap","lintKeymap","formatHtmlDocument"],"mappings":"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"}