UNPKG

@edtr-io/plugin-text

Version:
128 lines (99 loc) 3.24 kB
"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