UNPKG

@atlaskit/editor-core

Version:

A package contains Atlassian editor core functionality

41 lines 1.83 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 utils_2 = require("./utils"); function createLinkInputRule(regexp, formatUrl) { return utils_1.createInputRule(regexp, function (state, match, start, end) { var schema = state.schema; if (state.doc.rangeHasMark(start, end, schema.marks.link)) { return; } var markType = schema.mark('link', { href: match[0].url, }); analytics_1.analyticsService.trackEvent('atlassian.editor.format.hyperlink.autoformatting'); return state.tr.addMark(start, end, markType).insertText(' '); }); } exports.createLinkInputRule = createLinkInputRule; function inputRulePlugin(schema) { if (!schema.marks.link) { return; } var urlWithASpaceRule = createLinkInputRule((new utils_2.LinkMatcher()), function (match) { return match[3] ? match[1] : "http://" + match[1]; }); // [something](link) should convert to a hyperlink var markdownLinkRule = utils_1.createInputRule(/(^|[^!])\[(.*?)\]\((\S+)\)$/, function (state, match, start, end) { var schema = state.schema; var url = utils_2.normalizeUrl(match[3]); var markType = schema.mark('link', { href: url }); analytics_1.analyticsService.trackEvent('atlassian.editor.format.hyperlink.autoformatting'); return state.tr.replaceWith(start + match[1].length, end, schema.text(match[2], [markType])); }); return prosemirror_1.inputRules({ rules: [ urlWithASpaceRule, markdownLinkRule ] }); } exports.inputRulePlugin = inputRulePlugin; exports.default = inputRulePlugin; //# sourceMappingURL=input-rule.js.map