UNPKG

@atlaskit/editor-plugin-type-ahead

Version:

Type-ahead plugin for @atlaskit/editor-core

41 lines (39 loc) 1.52 kB
"use strict"; 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;