@edtr-io/plugin-text
Version:
128 lines (99 loc) • 3.24 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.markdownShortcuts = void 0;
var _list = require("./list");
var _blockquote = require("./blockquote");
var _headings = require("./headings");
var _paragraph = require("./paragraph");
var handleMarkdown = function handleMarkdown(chars, editor, next, name) {
if (/\d+\./.test(chars)) {
if ((0, _list.isList)(_list.orderedListNode)(editor)) {
return undefined;
}
return (0, _list.toggleList)(_list.orderedListNode)(editor);
}
switch (chars) {
case '*':
case '-':
case '+':
if ((0, _list.isList)(_list.unorderedListNode)(editor)) {
return undefined;
}
return (0, _list.toggleList)(_list.unorderedListNode)(editor);
case '>':
return (0, _blockquote.createBlockquote)(editor, name);
case '#':
return (0, _headings.createSetHeading)(1)(editor);
case '##':
return (0, _headings.createSetHeading)(2)(editor);
case '###':
return (0, _headings.createSetHeading)(3)(editor);
case '####':
return (0, _headings.createSetHeading)(4)(editor);
case '#####':
return (0, _headings.createSetHeading)(5)(editor);
case '######':
return (0, _headings.createSetHeading)(6)(editor);
default:
return undefined;
}
};
var onSpace = function onSpace(event, editor, next, name) {
var value = editor.value;
var selection = value.selection;
if (selection.isExpanded) return next();
var startBlock = value.startBlock;
var start = selection.start;
var chars = startBlock.text.slice(0, start.offset).replace(/\s*/g, '');
var handled = handleMarkdown(chars, editor, next, name);
if (!handled) {
return next();
}
event.preventDefault();
editor.moveFocusToStartOfNode(startBlock).delete();
};
var onBackspace = function onBackspace(event, editor, next) {
var value = editor.value;
var selection = value.selection;
if (selection.isExpanded) return next();
if (selection.start.offset !== 0) return next();
var startBlock = value.startBlock;
if (startBlock.type === 'paragraph') return next();
event.preventDefault();
(0, _paragraph.setParagraph)(editor);
};
var onEnter = function onEnter(event, editor, next) {
var value = editor.value;
var selection = value.selection;
var start = selection.start,
isExpanded = selection.isExpanded;
if (isExpanded) return next();
var startBlock = value.startBlock;
if (start.offset === 0 && startBlock.text.length === 0) return onBackspace(event, editor, next);
return next();
};
var markdownShortcuts = function markdownShortcuts(pluginClosure) {
return {
onKeyDown: function onKeyDown(event, editor, next) {
if (!pluginClosure.current) {
return next();
}
var e = event;
var name = pluginClosure.current.name;
switch (e.key) {
case ' ':
return onSpace(e, editor, next, name);
case 'Backspace':
return onBackspace(e, editor, next);
case 'Enter':
return onEnter(e, editor, next);
default:
return next();
}
}
};
};
exports.markdownShortcuts = markdownShortcuts;
//# sourceMappingURL=markdown.js.map