@atlaskit/editor-core
Version:
A package contains Atlassian editor core functionality
41 lines • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var prosemirror_1 = require("../../prosemirror");
var keymaps = require("../../keymaps");
var commands = require("../../commands");
var analytics_1 = require("../../analytics");
var utils_1 = require("./utils");
function keymapPlugin(schema, props) {
var list = {};
if (props.appearance !== 'message') {
keymaps.bindKeymapWithCommand(keymaps.addLink.common, analytics_1.trackAndInvoke('atlassian.editor.format.hyperlink.keyboard', commands.showLinkPanel()), list);
}
keymaps.bindKeymapWithCommand(keymaps.enter.common, mayConvertLastWordToHyperlink, list);
keymaps.bindKeymapWithCommand(keymaps.insertNewLine.common, mayConvertLastWordToHyperlink, list);
return prosemirror_1.keymap(list);
}
exports.keymapPlugin = keymapPlugin;
function mayConvertLastWordToHyperlink(state, dispatch) {
var nodeBefore = state.selection.$from.nodeBefore;
if (!nodeBefore || !nodeBefore.isText) {
return false;
}
var words = nodeBefore.text.split(' ');
var lastWord = words[words.length - 1];
var match = utils_1.getLinkMatch(lastWord);
if (match) {
var hyperlinkedText = match.raw;
var start = state.selection.$from.pos - hyperlinkedText.length;
var end = state.selection.$from.pos;
if (state.doc.rangeHasMark(start, end, state.schema.marks.link)) {
return false;
}
var url = match.url;
var markType = state.schema.mark('link', { href: url, });
analytics_1.analyticsService.trackEvent('atlassian.editor.format.hyperlink.autoformatting');
dispatch(state.tr.addMark(start, end, markType));
}
return false;
}
exports.default = keymapPlugin;
//# sourceMappingURL=keymap.js.map