@atlaskit/editor-plugin-type-ahead
Version:
Type-ahead plugin for @atlaskit/editor-core
41 lines (39 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
exports.inputRulePlugin = inputRulePlugin;
var _analytics = require("@atlaskit/editor-common/analytics");
var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
var _utils = require("@atlaskit/editor-common/utils");
var _prosemirrorInputRules = require("@atlaskit/prosemirror-input-rules");
var _openTypeaheadAtCursor = require("../pm-plugins/commands/open-typeahead-at-cursor");
function inputRulePlugin(schema, typeAheads, featureFlags) {
if (!typeAheads || typeAheads.length === 0) {
return;
}
var rules = typeAheads.reduce(function (acc, typeAhead) {
var trigger = typeAhead.customRegex || typeAhead.trigger;
if (!trigger) {
return acc;
}
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var regex = new RegExp("(^|[.!?\\s".concat(_prosemirrorInputRules.leafNodeReplacementCharacter, "])(").concat(trigger, ")$"));
acc.push((0, _utils.createRule)(regex, function (state, match) {
return (0, _openTypeaheadAtCursor.openTypeAheadAtCursor)({
triggerHandler: typeAhead,
inputMethod: _analytics.INPUT_METHOD.KEYBOARD
})({
tr: state.tr
});
}));
return acc;
}, []);
var plugin = new _safePlugin.SafePlugin((0, _prosemirrorInputRules.createPlugin)('type-ahead', rules, {
allowInsertTextOnDocument: false
}));
return plugin;
}
var _default = exports.default = inputRulePlugin;