UNPKG

slate-edit-code

Version:

A Slate plugin to handle keyboard events in code blocks.

42 lines (32 loc) 991 B
'use strict'; var getLines = require('../getLines'); /** * Indent all lines in selection * @param {Transform} transform * @param {String} indent * @return {Transform} */ function indentLines(transform, indent) { var state = transform.state; var startBlock = state.startBlock; var endBlock = state.endBlock; var startOffset = state.startOffset; var endOffset = state.endOffset; var selection = state.selection; var innerText = startBlock.text; var lines = getLines(innerText); if (startBlock != endBlock) { endOffset = innerText.length; } var offset = 0; innerText = lines.map(function (line) { var result = line; if (offset >= startOffset && offset < endOffset) { result = indent + line; } offset += line.length; return result; }).join('\n'); return transform.insertTextAtRange(selection.moveToRangeOf(startBlock), innerText); } module.exports = indentLines;