UNPKG

@atlaskit/editor-core

Version:

A package contains Atlassian editor core functionality

41 lines 1.79 kB
"use strict"; 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