UNPKG

@atlaskit/editor-core

Version:

A package contains Atlassian editor core functionality

53 lines 2.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var prosemirror_1 = require("../../prosemirror"); var analytics_1 = require("../../analytics"); var utils_1 = require("../utils"); var uuid_1 = require("../../plugins/tasks-and-decisions/uuid"); var createListRule = function (regex, name, list, item, schema) { var _a = schema.nodes, paragraph = _a.paragraph, hardBreak = _a.hardBreak; return utils_1.createInputRule(regex, function (state, match, start, end) { var tr = state.tr, $from = state.selection.$from; // Only allow creating list from top-level paragraphs if ($from.node(1).type !== paragraph) { return; } var where = $from.before($from.depth); analytics_1.analyticsService.trackEvent("atlassian.editor." + name + ".autoformatting"); var content = $from.node($from.depth).content; var shouldBreakNode = false; content.forEach(function (node, offset) { if (node.type === hardBreak && offset < start) { shouldBreakNode = true; } }); if (!shouldBreakNode) { tr .delete(where, $from.end($from.depth)) .replaceSelectionWith(list.create({ localId: uuid_1.default.generate() }, [item.create({}, content)])) .delete(start + 1, end + 1); } else { tr .split($from.pos) .setSelection(new prosemirror_1.NodeSelection(tr.doc.resolve($from.pos + 1))) .replaceSelectionWith(list.create({ localId: uuid_1.default.generate() }, [item.create({}, tr.doc.nodeAt($from.pos + 1).content)])) .delete(start, end + 1); } return tr; }); }; function inputRulePlugin(schema) { var rules = []; var _a = schema.nodes, decisionList = _a.decisionList, decisionItem = _a.decisionItem, taskList = _a.taskList, taskItem = _a.taskItem; if (decisionList && decisionItem) { rules.push(createListRule(new RegExp("(^|" + utils_1.leafNodeReplacementCharacter + ")\\<\\>\\s$"), 'decisionlist', decisionList, decisionItem, schema)); } if (taskList && taskItem) { rules.push(createListRule(new RegExp("(^|" + utils_1.leafNodeReplacementCharacter + ")\\[\\]\\s$"), 'tasklist', taskList, taskItem, schema)); } return prosemirror_1.inputRules({ rules: rules }); } exports.inputRulePlugin = inputRulePlugin; exports.default = inputRulePlugin; //# sourceMappingURL=input-rules.js.map