@atlaskit/editor-plugin-emoji 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/cjs/commands/insert-emoji.js +47 -0
- package/dist/cjs/index.js +8 -1
- package/dist/cjs/messages.js +15 -0
- package/dist/cjs/nodeviews/emoji.js +34 -0
- package/dist/cjs/plugin.js +409 -0
- package/dist/cjs/pm-plugins/ascii-input-rules.js +235 -0
- package/dist/cjs/ui/Emoji/index.js +19 -0
- package/dist/es2019/commands/insert-emoji.js +40 -0
- package/dist/es2019/index.js +1 -1
- package/dist/es2019/messages.js +8 -0
- package/dist/es2019/nodeviews/emoji.js +29 -0
- package/dist/es2019/plugin.js +381 -0
- package/dist/es2019/pm-plugins/ascii-input-rules.js +168 -0
- package/dist/es2019/ui/Emoji/index.js +13 -0
- package/dist/esm/commands/insert-emoji.js +39 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/messages.js +8 -0
- package/dist/esm/nodeviews/emoji.js +27 -0
- package/dist/esm/plugin.js +391 -0
- package/dist/esm/pm-plugins/ascii-input-rules.js +224 -0
- package/dist/esm/ui/Emoji/index.js +12 -0
- package/dist/types/commands/insert-emoji.d.ts +4 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/messages.d.ts +7 -0
- package/dist/types/nodeviews/emoji.d.ts +7 -0
- package/dist/types/plugin.d.ts +38 -0
- package/dist/types/pm-plugins/ascii-input-rules.d.ts +10 -0
- package/dist/types/types.d.ts +3 -4
- package/dist/types/ui/Emoji/index.d.ts +4 -0
- package/dist/types-ts4.5/commands/insert-emoji.d.ts +4 -0
- package/dist/types-ts4.5/index.d.ts +1 -0
- package/dist/types-ts4.5/messages.d.ts +7 -0
- package/dist/types-ts4.5/nodeviews/emoji.d.ts +7 -0
- package/dist/types-ts4.5/plugin.d.ts +38 -0
- package/dist/types-ts4.5/pm-plugins/ascii-input-rules.d.ts +10 -0
- package/dist/types-ts4.5/types.d.ts +3 -4
- package/dist/types-ts4.5/ui/Emoji/index.d.ts +4 -0
- package/package.json +29 -23
- package/report.api.md +5 -2
- package/tmp/api-report-tmp.d.ts +5 -2
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
exports.inputRulePlugin = inputRulePlugin;
|
|
9
|
+
exports.stateKey = void 0;
|
|
10
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
11
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
12
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
16
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
18
|
+
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
19
|
+
var _prosemirrorInputRules = require("@atlaskit/prosemirror-input-rules");
|
|
20
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
21
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
22
|
+
var matcher;
|
|
23
|
+
function inputRulePlugin(schema, providerFactory, featureFlags, editorAnalyticsAPI) {
|
|
24
|
+
if (schema.nodes.emoji && providerFactory) {
|
|
25
|
+
initMatcher(providerFactory);
|
|
26
|
+
var asciiEmojiRule = (0, _prosemirrorInputRules.createRule)(AsciiEmojiMatcher.REGEX, inputRuleHandler(editorAnalyticsAPI));
|
|
27
|
+
return (0, _prosemirrorInputRules.createPlugin)('emoji', [asciiEmojiRule]);
|
|
28
|
+
}
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
function initMatcher(providerFactory) {
|
|
32
|
+
var handleProvider = function handleProvider(_name, provider) {
|
|
33
|
+
if (!provider) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
provider.then(function (emojiProvider) {
|
|
37
|
+
emojiProvider.getAsciiMap().then(function (map) {
|
|
38
|
+
matcher = new RecordingAsciiEmojiMatcher(emojiProvider, map);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
providerFactory.subscribe('emojiProvider', handleProvider);
|
|
43
|
+
}
|
|
44
|
+
var inputRuleHandler = function inputRuleHandler(editorAnalyticsAPI) {
|
|
45
|
+
return function (state, matchParts, start, end) {
|
|
46
|
+
if (!matcher) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
var match = matcher.match(matchParts);
|
|
50
|
+
if (match) {
|
|
51
|
+
var transactionCreator = new AsciiEmojiTransactionCreator(state, match, start, end, editorAnalyticsAPI);
|
|
52
|
+
return transactionCreator.create();
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
var REGEX_LEADING_CAPTURE_INDEX = 1;
|
|
58
|
+
var REGEX_EMOJI_LEADING_PARENTHESES = 2;
|
|
59
|
+
var REGEX_EMOJI_ASCII_CAPTURE_INDEX = 3;
|
|
60
|
+
var REGEX_TRAILING_CAPTURE_INDEX = 4;
|
|
61
|
+
var getLeadingString = function getLeadingString(match) {
|
|
62
|
+
var withParenthesis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
63
|
+
return match[REGEX_LEADING_CAPTURE_INDEX] + (withParenthesis ? match[REGEX_EMOJI_LEADING_PARENTHESES] : '');
|
|
64
|
+
};
|
|
65
|
+
var getLeadingStringWithoutParentheses = function getLeadingStringWithoutParentheses(match) {
|
|
66
|
+
return getLeadingString(match, false);
|
|
67
|
+
};
|
|
68
|
+
var getAscii = function getAscii(match) {
|
|
69
|
+
var withParentheses = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
70
|
+
return (withParentheses ? match[REGEX_EMOJI_LEADING_PARENTHESES] : '') + match[REGEX_EMOJI_ASCII_CAPTURE_INDEX].trim();
|
|
71
|
+
};
|
|
72
|
+
var getAsciiWithParentheses = function getAsciiWithParentheses(matchParts) {
|
|
73
|
+
return getAscii(matchParts, true);
|
|
74
|
+
};
|
|
75
|
+
var getTrailingString = function getTrailingString(match) {
|
|
76
|
+
return match[REGEX_TRAILING_CAPTURE_INDEX] || '';
|
|
77
|
+
};
|
|
78
|
+
var AsciiEmojiMatcher = /*#__PURE__*/function () {
|
|
79
|
+
function AsciiEmojiMatcher(asciiToEmojiMap) {
|
|
80
|
+
(0, _classCallCheck2.default)(this, AsciiEmojiMatcher);
|
|
81
|
+
this.asciiToEmojiMap = asciiToEmojiMap;
|
|
82
|
+
}
|
|
83
|
+
(0, _createClass2.default)(AsciiEmojiMatcher, [{
|
|
84
|
+
key: "match",
|
|
85
|
+
value: function match(matchParts) {
|
|
86
|
+
return this.getAsciiEmojiMatch(getLeadingStringWithoutParentheses(matchParts), getAsciiWithParentheses(matchParts), getTrailingString(matchParts)) || this.getAsciiEmojiMatch(getLeadingString(matchParts), getAscii(matchParts), getTrailingString(matchParts));
|
|
87
|
+
}
|
|
88
|
+
}, {
|
|
89
|
+
key: "getAsciiEmojiMatch",
|
|
90
|
+
value: function getAsciiEmojiMatch(leading, ascii, trailing) {
|
|
91
|
+
var emoji = this.asciiToEmojiMap.get(ascii);
|
|
92
|
+
return emoji ? {
|
|
93
|
+
emoji: emoji,
|
|
94
|
+
leadingString: leading,
|
|
95
|
+
trailingString: trailing
|
|
96
|
+
} : undefined;
|
|
97
|
+
}
|
|
98
|
+
}]);
|
|
99
|
+
return AsciiEmojiMatcher;
|
|
100
|
+
}();
|
|
101
|
+
/**
|
|
102
|
+
* A matcher that will record ascii matches as usages of the matched emoji.
|
|
103
|
+
*/
|
|
104
|
+
/**
|
|
105
|
+
* This regex matches 2 scenarios:
|
|
106
|
+
* 1. an emoticon starting with a colon character (e.g. :D => 😃)
|
|
107
|
+
* 2. an emoticon not starting with a colon character (e.g. 8-D => 😎)
|
|
108
|
+
*
|
|
109
|
+
* Explanation (${leafNodeReplacementCharacter} is replaced with character \ufffc)
|
|
110
|
+
*
|
|
111
|
+
* 1st Capturing Group ((?:^|[\s\ufffc])(?:\(*?))
|
|
112
|
+
* Non-capturing group (?:^|[\s\ufffc])
|
|
113
|
+
* 1st Alternative ^
|
|
114
|
+
* ^ asserts position at start of the string
|
|
115
|
+
* 2nd Alternative [\s\ufffc]
|
|
116
|
+
* matches a single character present in [\s\ufffc]
|
|
117
|
+
* Non-capturing group (?:\(*?)
|
|
118
|
+
* matches the character ( literally between zero and unlimited times, as few times as possible, expanding as needed (lazy)
|
|
119
|
+
* 2nd Capturing Group (\(?)
|
|
120
|
+
* matches a single ( if present
|
|
121
|
+
* 3rd Capturing Group ([^:\s\ufffc\(]\S{1,3}|:\S{1,3}( ))
|
|
122
|
+
* 1st Alternative [^:\s\ufffc\(]\S{1,3}
|
|
123
|
+
* matches a single character not present in [^:\s\ufffc\(] between 1 and 3 times, as many times as possible, giving back as needed (greedy)
|
|
124
|
+
* 2nd Alternative :\S{1,3}( )
|
|
125
|
+
* : matches the character : literally
|
|
126
|
+
* \S{1,3} matches any non-whitespace character between 1 and 3 times, as many times as possible, giving back as needed (greedy)
|
|
127
|
+
* 4th Capturing Group ( )
|
|
128
|
+
*
|
|
129
|
+
* See https://regex101.com/r/HRS9O2/4
|
|
130
|
+
*/
|
|
131
|
+
(0, _defineProperty2.default)(AsciiEmojiMatcher, "REGEX", new RegExp("((?:^|[\\s".concat(_prosemirrorInputRules.leafNodeReplacementCharacter, "])(?:\\(*?))(\\(?)([^:\\s").concat(_prosemirrorInputRules.leafNodeReplacementCharacter, "\\(]\\S{1,3}|:\\S{1,3}( ))$")));
|
|
132
|
+
var RecordingAsciiEmojiMatcher = /*#__PURE__*/function (_AsciiEmojiMatcher) {
|
|
133
|
+
(0, _inherits2.default)(RecordingAsciiEmojiMatcher, _AsciiEmojiMatcher);
|
|
134
|
+
var _super = _createSuper(RecordingAsciiEmojiMatcher);
|
|
135
|
+
function RecordingAsciiEmojiMatcher(emojiProvider, asciiToEmojiMap) {
|
|
136
|
+
var _this;
|
|
137
|
+
(0, _classCallCheck2.default)(this, RecordingAsciiEmojiMatcher);
|
|
138
|
+
_this = _super.call(this, asciiToEmojiMap);
|
|
139
|
+
_this.emojiProvider = emojiProvider;
|
|
140
|
+
return _this;
|
|
141
|
+
}
|
|
142
|
+
(0, _createClass2.default)(RecordingAsciiEmojiMatcher, [{
|
|
143
|
+
key: "match",
|
|
144
|
+
value: function match(matchParts) {
|
|
145
|
+
var match = (0, _get2.default)((0, _getPrototypeOf2.default)(RecordingAsciiEmojiMatcher.prototype), "match", this).call(this, matchParts);
|
|
146
|
+
if (match && this.emojiProvider.recordSelection) {
|
|
147
|
+
this.emojiProvider.recordSelection(match.emoji);
|
|
148
|
+
}
|
|
149
|
+
return match;
|
|
150
|
+
}
|
|
151
|
+
}]);
|
|
152
|
+
return RecordingAsciiEmojiMatcher;
|
|
153
|
+
}(AsciiEmojiMatcher);
|
|
154
|
+
var AsciiEmojiTransactionCreator = /*#__PURE__*/function () {
|
|
155
|
+
function AsciiEmojiTransactionCreator(state, match, start, end, editorAnalyticsAPI) {
|
|
156
|
+
(0, _classCallCheck2.default)(this, AsciiEmojiTransactionCreator);
|
|
157
|
+
this.state = state;
|
|
158
|
+
this.match = match;
|
|
159
|
+
this.start = start;
|
|
160
|
+
this.end = end;
|
|
161
|
+
this.editorAnalyticsAPI = editorAnalyticsAPI;
|
|
162
|
+
}
|
|
163
|
+
(0, _createClass2.default)(AsciiEmojiTransactionCreator, [{
|
|
164
|
+
key: "create",
|
|
165
|
+
value: function create() {
|
|
166
|
+
var _this$editorAnalytics;
|
|
167
|
+
var tr = this.state.tr.replaceWith(this.from, this.to, this.createNodes());
|
|
168
|
+
(_this$editorAnalytics = this.editorAnalyticsAPI) === null || _this$editorAnalytics === void 0 ? void 0 : _this$editorAnalytics.attachAnalyticsEvent({
|
|
169
|
+
action: _analytics.ACTION.INSERTED,
|
|
170
|
+
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
|
|
171
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.EMOJI,
|
|
172
|
+
attributes: {
|
|
173
|
+
inputMethod: _analytics.INPUT_METHOD.ASCII
|
|
174
|
+
},
|
|
175
|
+
eventType: _analytics.EVENT_TYPE.TRACK
|
|
176
|
+
})(tr);
|
|
177
|
+
return tr;
|
|
178
|
+
}
|
|
179
|
+
}, {
|
|
180
|
+
key: "from",
|
|
181
|
+
get: function get() {
|
|
182
|
+
return this.start + this.match.leadingString.length;
|
|
183
|
+
}
|
|
184
|
+
}, {
|
|
185
|
+
key: "to",
|
|
186
|
+
get: function get() {
|
|
187
|
+
return this.end;
|
|
188
|
+
}
|
|
189
|
+
}, {
|
|
190
|
+
key: "createNodes",
|
|
191
|
+
value: function createNodes() {
|
|
192
|
+
var nodes = [this.createEmojiNode()];
|
|
193
|
+
if (this.trailingTextNodeRequired()) {
|
|
194
|
+
nodes.push(this.createTrailingTextNode());
|
|
195
|
+
}
|
|
196
|
+
return nodes;
|
|
197
|
+
}
|
|
198
|
+
}, {
|
|
199
|
+
key: "createEmojiNode",
|
|
200
|
+
value: function createEmojiNode() {
|
|
201
|
+
var emojiTypeNode = this.state.schema.nodes.emoji;
|
|
202
|
+
return emojiTypeNode.create(this.getEmojiNodeAttrs());
|
|
203
|
+
}
|
|
204
|
+
}, {
|
|
205
|
+
key: "getEmojiNodeAttrs",
|
|
206
|
+
value: function getEmojiNodeAttrs() {
|
|
207
|
+
var emoji = this.match.emoji;
|
|
208
|
+
return {
|
|
209
|
+
id: emoji.id,
|
|
210
|
+
shortName: emoji.shortName,
|
|
211
|
+
text: emoji.fallback || emoji.shortName
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
}, {
|
|
215
|
+
key: "trailingTextNodeRequired",
|
|
216
|
+
value: function trailingTextNodeRequired() {
|
|
217
|
+
return this.match.trailingString.length > 0;
|
|
218
|
+
}
|
|
219
|
+
}, {
|
|
220
|
+
key: "createTrailingTextNode",
|
|
221
|
+
value: function createTrailingTextNode() {
|
|
222
|
+
return this.state.schema.text(this.match.trailingString);
|
|
223
|
+
}
|
|
224
|
+
}]);
|
|
225
|
+
return AsciiEmojiTransactionCreator;
|
|
226
|
+
}();
|
|
227
|
+
var stateKey = new _state.PluginKey('asciiEmojiPlugin');
|
|
228
|
+
exports.stateKey = stateKey;
|
|
229
|
+
var plugins = function plugins(schema, providerFactory, featureFlags, editorAnalyticsAPI) {
|
|
230
|
+
return [inputRulePlugin(schema, providerFactory, featureFlags, editorAnalyticsAPI)].filter(function (plugin) {
|
|
231
|
+
return !!plugin;
|
|
232
|
+
});
|
|
233
|
+
};
|
|
234
|
+
var _default = plugins;
|
|
235
|
+
exports.default = _default;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = EmojiNode;
|
|
8
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
9
|
+
var _react = require("@emotion/react");
|
|
10
|
+
var _emoji = require("@atlaskit/editor-common/emoji");
|
|
11
|
+
var _templateObject;
|
|
12
|
+
/** @jsx jsx */
|
|
13
|
+
// eslint-disable-next-line
|
|
14
|
+
var clickSelectWrapperStyle = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n // eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage\n user-select: all;\n"])));
|
|
15
|
+
function EmojiNode(props) {
|
|
16
|
+
return (0, _react.jsx)("span", {
|
|
17
|
+
css: clickSelectWrapperStyle
|
|
18
|
+
}, (0, _react.jsx)(_emoji.Emoji, props));
|
|
19
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
|
|
2
|
+
import { Fragment } from '@atlaskit/editor-prosemirror/model';
|
|
3
|
+
import { Selection } from '@atlaskit/editor-prosemirror/state';
|
|
4
|
+
import { safeInsert } from '@atlaskit/editor-prosemirror/utils';
|
|
5
|
+
export const insertEmoji = editorAnalyticsAPI => (emojiId, inputMethod) => {
|
|
6
|
+
return ({
|
|
7
|
+
tr
|
|
8
|
+
}) => {
|
|
9
|
+
const {
|
|
10
|
+
doc,
|
|
11
|
+
selection
|
|
12
|
+
} = tr;
|
|
13
|
+
const {
|
|
14
|
+
emoji
|
|
15
|
+
} = tr.doc.type.schema.nodes;
|
|
16
|
+
if (emoji && emojiId) {
|
|
17
|
+
const node = emoji.createChecked({
|
|
18
|
+
...emojiId,
|
|
19
|
+
text: emojiId.fallback || emojiId.shortName
|
|
20
|
+
});
|
|
21
|
+
const textNode = doc.type.schema.text(' ');
|
|
22
|
+
const fragment = Fragment.fromArray([node, textNode]);
|
|
23
|
+
const newTr = safeInsert(fragment)(tr);
|
|
24
|
+
if (inputMethod) {
|
|
25
|
+
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent({
|
|
26
|
+
action: ACTION.INSERTED,
|
|
27
|
+
actionSubject: ACTION_SUBJECT.DOCUMENT,
|
|
28
|
+
actionSubjectId: ACTION_SUBJECT_ID.EMOJI,
|
|
29
|
+
attributes: {
|
|
30
|
+
inputMethod
|
|
31
|
+
},
|
|
32
|
+
eventType: EVENT_TYPE.TRACK
|
|
33
|
+
})(newTr);
|
|
34
|
+
}
|
|
35
|
+
newTr.setSelection(Selection.near(newTr.doc.resolve(selection.$from.pos + fragment.size)));
|
|
36
|
+
return newTr;
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
};
|
|
40
|
+
};
|
package/dist/es2019/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export { emojiPlugin } from './plugin';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useIntl } from 'react-intl-next';
|
|
3
|
+
import { messages } from '../messages';
|
|
4
|
+
import Emoji from '../ui/Emoji';
|
|
5
|
+
const EmojiAssistiveTextComponent = /*#__PURE__*/React.memo(({
|
|
6
|
+
emojiShortName
|
|
7
|
+
}) => {
|
|
8
|
+
const intl = useIntl();
|
|
9
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
10
|
+
className: 'assistive'
|
|
11
|
+
}, `${intl.formatMessage(messages.emojiNodeLabel)} ${emojiShortName}`);
|
|
12
|
+
});
|
|
13
|
+
export function EmojiNodeView(props) {
|
|
14
|
+
const {
|
|
15
|
+
shortName,
|
|
16
|
+
id,
|
|
17
|
+
text
|
|
18
|
+
} = props.node.attrs;
|
|
19
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(EmojiAssistiveTextComponent, {
|
|
20
|
+
emojiShortName: shortName
|
|
21
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
22
|
+
"aria-hidden": "true"
|
|
23
|
+
}, /*#__PURE__*/React.createElement(Emoji, {
|
|
24
|
+
providers: props.providerFactory,
|
|
25
|
+
id: id,
|
|
26
|
+
shortName: shortName,
|
|
27
|
+
fallback: text
|
|
28
|
+
})));
|
|
29
|
+
}
|