UNPKG

@atlaskit/editor-plugin-emoji

Version:

Emoji plugin for @atlaskit/editor-core

53 lines (52 loc) 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.insertEmoji = exports.createEmojiFragment = void 0; var _analytics = require("@atlaskit/editor-common/analytics"); var _utils = require("@atlaskit/editor-common/utils"); var _model = require("@atlaskit/editor-prosemirror/model"); var _state = require("@atlaskit/editor-prosemirror/state"); var _utils2 = require("@atlaskit/editor-prosemirror/utils"); var createEmojiFragment = exports.createEmojiFragment = function createEmojiFragment(doc, pos, emoji) { var _emoji$id = emoji.id, id = _emoji$id === void 0 ? '' : _emoji$id, fallback = emoji.fallback, shortName = emoji.shortName; var annotationMarksForPos = (0, _utils.getAnnotationMarksForPos)(pos); var emojiNode = doc.type.schema.nodes.emoji.createChecked({ shortName: shortName, id: id, text: fallback || shortName }, null, annotationMarksForPos); var space = doc.type.schema.text(' ', annotationMarksForPos); return _model.Fragment.fromArray([emojiNode, space]); }; var insertEmoji = exports.insertEmoji = function insertEmoji(editorAnalyticsAPI) { return function (emojiId, inputMethod) { return function (_ref) { var tr = _ref.tr; var doc = tr.doc, selection = tr.selection; var emoji = tr.doc.type.schema.nodes.emoji; if (emoji && emojiId) { var fragment = createEmojiFragment(doc, selection.$head, emojiId); var newTr = (0, _utils2.safeInsert)(fragment)(tr); if (inputMethod) { editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({ action: _analytics.ACTION.INSERTED, actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT, actionSubjectId: _analytics.ACTION_SUBJECT_ID.EMOJI, attributes: { inputMethod: inputMethod }, eventType: _analytics.EVENT_TYPE.TRACK })(newTr); } newTr.setSelection(_state.Selection.near(newTr.doc.resolve(selection.$from.pos + fragment.size))); return newTr; } return null; }; }; };