slate-edit-code
Version:
A Slate plugin to handle keyboard events in code blocks.
31 lines (23 loc) • 766 B
JavaScript
;
var getIndent = require('./getIndent');
var indentLines = require('./transforms/indentLines');
/**
* User pressed Tab in an editor:
* Insert a tab after detecting it from code block content.
*/
function onTab(event, data, state) {
event.preventDefault();
event.stopPropagation();
var startBlock = state.startBlock;
var isCollapsed = state.isCollapsed;
var transform = state.transform();
var innerText = startBlock.text;
var indent = getIndent(innerText);
// Selection is collapsed, we just insert a new tab
if (isCollapsed) {
return transform.insertText(indent).focus().apply();
}
// We indent all selected lines
return indentLines(transform, indent).apply();
}
module.exports = onTab;