@atlaskit/editor-core
Version:
A package contains Atlassian editor core functionality
41 lines • 1.83 kB
JavaScript
;
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