Skip to content

Commit

Permalink
feat: add preserve indent plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
petersolopov committed Jun 18, 2020
1 parent 595478a commit 5181bb9
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions src/plugins/preserveIndent.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import isKey from "./isKey.js";

const preserveIndent = () => (textareaProps, event) => {
const { value, selectionStart, selectionEnd } = textareaProps;

if (!isKey("enter", event)) {
return;
}

if (event.type !== "keydown") {
return;
}

const currentLineNumber =
value.substring(0, selectionStart).split("\n").length - 1;

const lines = value.split("\n");
const currentLine = lines[currentLineNumber];
const matches = /^\s+/.exec(currentLine);

if (!matches) {
return;
}

event.preventDefault();
const indent = matches[0];
const newLine = "\n";

const inserted = newLine + indent;

const newValue =
value.substring(0, selectionStart) +
inserted +
value.substring(selectionEnd);

return {
value: newValue,
selectionStart: selectionStart + inserted.length,
selectionEnd: selectionStart + inserted.length,
};
};

export default preserveIndent;

0 comments on commit 5181bb9

Please sign in to comment.