react-input-emoji 5.7.1 → 5.8.1
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/README.md +1 -0
- package/dist/index.es.js +263 -19
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +263 -19
- package/dist/index.js.map +1 -1
- package/dist/src/hooks/use-expose.d.ts +3 -1
- package/dist/src/hooks/use-sanitize.d.ts +2 -1
- package/dist/src/index.d.ts +2 -1
- package/package.json +5 -4
package/README.md
CHANGED
@@ -80,6 +80,7 @@ export default function Example() {
|
|
80
80
|
| `onResize` | function | - | A callback function that is invoked when the width or height of the input element changes. It receives the current size value as its argument. |
|
81
81
|
| `placeholder` | string | "Type a message" | Specifies the placeholder text to be displayed when the input is empty. |
|
82
82
|
| `placeholderColor` | string | "#C4C4C4" | Specifies the color of the placeholder text. Accepts any valid CSS color value. |
|
83
|
+
| `shouldConvertEmojiToImage` | boolean | false | When set to true, emojis in the input value will be converted to images. |
|
83
84
|
| `shouldReturn` | boolean | - | When set to true, allows the user to create a new line using the `Shift + Enter` or `Ctrl + Enter` keyboard shortcuts. |
|
84
85
|
| `theme` | string | - | Specifies the theme for the emoji picker popup. Available values: "light", "dark", "auto". |
|
85
86
|
| `value` | string | "" | The current value of the input element. |
|
package/dist/index.es.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import React, { useRef, useCallback, useImperativeHandle, useEffect, forwardRef, useMemo, useState, memo } from 'react';
|
2
|
+
import { renderToString } from 'react-dom/server';
|
2
3
|
import ReactDOM from 'react-dom';
|
3
4
|
|
4
5
|
function styleInject(css, ref) {
|
@@ -780,7 +781,213 @@ function addLineBreak() {
|
|
780
781
|
}
|
781
782
|
}
|
782
783
|
|
784
|
+
// Inspiration: https://github.com/facebook/react/issues/3386
|
785
|
+
|
786
|
+
function replace(string, regexpOrSubstr, newValueOrFn, globalOffset) {
|
787
|
+
if (typeof string !== 'string') throw new Error('First param must be a string');
|
788
|
+
if (typeof regexpOrSubstr !== 'string' && !(regexpOrSubstr instanceof RegExp)) throw new Error('Second param must be a string pattern or a regular expression');
|
789
|
+
var fn = typeof regexpOrSubstr === 'string' ? replaceUsingString : replaceUsingRegexp;
|
790
|
+
return fn(string, regexpOrSubstr, newValueOrFn, globalOffset);
|
791
|
+
}
|
792
|
+
function replaceUsingString(string, patternString, newValueOrFn, globalOffset) {
|
793
|
+
var index = string.indexOf(patternString);
|
794
|
+
if (index >= 0) {
|
795
|
+
var arr = [];
|
796
|
+
var endIndex = index + patternString.length;
|
797
|
+
if (index > 0) {
|
798
|
+
arr.push(string.substring(0, index));
|
799
|
+
}
|
800
|
+
arr.push(typeof newValueOrFn === 'function' ? newValueOrFn(string.substring(index, endIndex), index + globalOffset, string) : newValueOrFn);
|
801
|
+
if (endIndex < string.length) {
|
802
|
+
arr.push(string.substring(endIndex));
|
803
|
+
}
|
804
|
+
return arr;
|
805
|
+
} else {
|
806
|
+
return [string];
|
807
|
+
}
|
808
|
+
}
|
809
|
+
function replaceUsingRegexp(string, regexp, newValueOrFn, globalOffset) {
|
810
|
+
var output = [];
|
811
|
+
var replacerIsFn = typeof newValueOrFn === 'function';
|
812
|
+
var storedLastIndex = regexp.lastIndex;
|
813
|
+
regexp.lastIndex = 0;
|
814
|
+
var result;
|
815
|
+
var lastIndex = 0;
|
816
|
+
while (result = regexp.exec(string)) {
|
817
|
+
var index = result.index;
|
818
|
+
if (result[0] === '') {
|
819
|
+
// When the regexp is an empty string
|
820
|
+
// we still want to advance our cursor to the next item.
|
821
|
+
// This is the behavior of String.replace.
|
822
|
+
regexp.lastIndex++;
|
823
|
+
}
|
824
|
+
if (index !== lastIndex) {
|
825
|
+
output.push(string.substring(lastIndex, index));
|
826
|
+
}
|
827
|
+
var match = result[0];
|
828
|
+
lastIndex = index + match.length;
|
829
|
+
var out = replacerIsFn ? newValueOrFn.apply(this, result.concat(index + globalOffset, result.input)) : newValueOrFn;
|
830
|
+
output.push(out);
|
831
|
+
if (!regexp.global) {
|
832
|
+
break;
|
833
|
+
}
|
834
|
+
}
|
835
|
+
if (lastIndex < string.length) {
|
836
|
+
output.push(string.substring(lastIndex));
|
837
|
+
}
|
838
|
+
regexp.lastIndex = storedLastIndex;
|
839
|
+
return output;
|
840
|
+
}
|
841
|
+
var stringReplaceToArray = function stringReplaceToArray(stringOrArray, regexpOrSubstr, newSubStrOrFn) {
|
842
|
+
if (typeof stringOrArray === 'string') {
|
843
|
+
return replace(stringOrArray, regexpOrSubstr, newSubStrOrFn, 0);
|
844
|
+
} else if (!Array.isArray(stringOrArray) || !stringOrArray[0]) {
|
845
|
+
throw new TypeError('First argument must be an array or non-empty string');
|
846
|
+
} else {
|
847
|
+
var len = stringOrArray.length;
|
848
|
+
var output = [];
|
849
|
+
var globalOffset = 0;
|
850
|
+
for (var i = 0; i < len; ++i) {
|
851
|
+
var arrayItem = stringOrArray[i];
|
852
|
+
if (typeof arrayItem === 'string') {
|
853
|
+
output.push.apply(output, replace(arrayItem, regexpOrSubstr, newSubStrOrFn, globalOffset));
|
854
|
+
globalOffset += arrayItem.length;
|
855
|
+
} else {
|
856
|
+
output.push(arrayItem);
|
857
|
+
}
|
858
|
+
}
|
859
|
+
return output;
|
860
|
+
}
|
861
|
+
};
|
862
|
+
|
863
|
+
// This is based off of https://github.com/twitter/twemoji/blob/gh-pages/2/twemoji.js
|
864
|
+
//
|
865
|
+
// Ideally we'd use twemoji instead of replicating its logic.
|
866
|
+
// The reason we can't is that we need to run our own replace.
|
867
|
+
//
|
868
|
+
// We could use it for most things (by essentially running twemoji.parse for each
|
869
|
+
// regex match, and reading the code from the callback), but the one thing we'd always need
|
870
|
+
// to copy and paste into this file is the regex since we need it to run the replace.
|
871
|
+
//
|
872
|
+
// Another option is to fork twemoji and expose a method in it that could help us, then
|
873
|
+
// ask them to pull it in.
|
874
|
+
//
|
875
|
+
|
876
|
+
// RegExp based on emoji's official Unicode standards
|
877
|
+
// http://www.unicode.org/Public/UNIDATA/EmojiSources.txt
|
878
|
+
var re = /(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd\udec3-\udec5\udef0-\udef6]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udedd-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7c\ude80-\ude86\ude90-\udeac\udeb0-\udeba\udec0-\udec2\uded0-\uded9\udee0-\udee7]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g;
|
879
|
+
function toCodePoint(unicodeSurrogates, sep) {
|
880
|
+
var r = [],
|
881
|
+
c = 0,
|
882
|
+
p = 0,
|
883
|
+
i = 0;
|
884
|
+
while (i < unicodeSurrogates.length) {
|
885
|
+
c = unicodeSurrogates.charCodeAt(i++);
|
886
|
+
if (p) {
|
887
|
+
r.push((0x10000 + (p - 0xD800 << 10) + (c - 0xDC00)).toString(16));
|
888
|
+
p = 0;
|
889
|
+
} else if (0xD800 <= c && c <= 0xDBFF) {
|
890
|
+
p = c;
|
891
|
+
} else {
|
892
|
+
r.push(c.toString(16));
|
893
|
+
}
|
894
|
+
}
|
895
|
+
return r.join(sep || '-');
|
896
|
+
}
|
897
|
+
|
898
|
+
// avoid runtime RegExp creation for not so smart,
|
899
|
+
// not JIT based, and old browsers / engines
|
900
|
+
var UFE0Fg = /\uFE0F/g;
|
901
|
+
|
902
|
+
// avoid using a string literal like '\u200D' here because minifiers expand it inline
|
903
|
+
var U200D = String.fromCharCode(0x200D);
|
904
|
+
|
905
|
+
/**
|
906
|
+
* Used to both remove the possible variant
|
907
|
+
* and to convert utf16 into code points.
|
908
|
+
* If there is a zero-width-joiner (U+200D), leave the variants in.
|
909
|
+
* @param string the raw text of the emoji match
|
910
|
+
*/
|
911
|
+
function grabTheRightIcon(rawText) {
|
912
|
+
// if variant is present as \uFE0F
|
913
|
+
return toCodePoint(rawText.indexOf(U200D) < 0 ? rawText.replace(UFE0Fg, '') : rawText);
|
914
|
+
}
|
915
|
+
var replaceEmoji$1 = function replaceEmoji(string, render) {
|
916
|
+
// Note: the latest regex added an empty matching group, so we ignore it.
|
917
|
+
return stringReplaceToArray(string, re, function emojiReplacer(match, _, offset) {
|
918
|
+
var icon = grabTheRightIcon(match);
|
919
|
+
return render(icon, match, offset);
|
920
|
+
});
|
921
|
+
};
|
922
|
+
|
923
|
+
var createElement = React.createElement;
|
924
|
+
var pageProtocol = typeof location === 'undefined' ? '' : location.protocol === 'https:' ? 'https:' : 'http:';
|
925
|
+
var emojiStyle = {
|
926
|
+
height: '1em',
|
927
|
+
width: '1em',
|
928
|
+
margin: '0 .05em 0 .1em',
|
929
|
+
verticalAlign: '-0.1em'
|
930
|
+
};
|
931
|
+
|
932
|
+
// Accept protocol with or without a colon
|
933
|
+
function normalizeProtocol(protocol) {
|
934
|
+
if (protocol && protocol.length > 0 && protocol.charAt(protocol.length - 1) !== ':') {
|
935
|
+
return protocol + ':';
|
936
|
+
}
|
937
|
+
return protocol;
|
938
|
+
}
|
939
|
+
var makeTwemojiRenderer$1 = function makeTwemojiRenderer(options) {
|
940
|
+
options = merge({
|
941
|
+
protocol: pageProtocol,
|
942
|
+
baseUrl: '//cdnjs.cloudflare.com/ajax/libs/twemoji/14.0.2/',
|
943
|
+
size: '72x72',
|
944
|
+
ext: '.png',
|
945
|
+
props: null
|
946
|
+
}, options);
|
947
|
+
return function renderTwemoji(icon, match, offset) {
|
948
|
+
var src = '';
|
949
|
+
if (options.baseUrl.indexOf('http') !== 0) {
|
950
|
+
src += normalizeProtocol(options.protocol);
|
951
|
+
}
|
952
|
+
src += options.baseUrl + options.size + '/' + icon + options.ext;
|
953
|
+
return createElement('img', merge({
|
954
|
+
key: offset,
|
955
|
+
alt: match,
|
956
|
+
draggable: false,
|
957
|
+
src: src,
|
958
|
+
style: emojiStyle
|
959
|
+
}, options.props));
|
960
|
+
};
|
961
|
+
};
|
962
|
+
function merge() {
|
963
|
+
var out = {},
|
964
|
+
len = arguments.length;
|
965
|
+
for (var i = 0; i < len; ++i) {
|
966
|
+
var source = arguments[i];
|
967
|
+
if (source) {
|
968
|
+
for (var key in source) {
|
969
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
970
|
+
out[key] = source[key];
|
971
|
+
}
|
972
|
+
}
|
973
|
+
}
|
974
|
+
}
|
975
|
+
return out;
|
976
|
+
}
|
977
|
+
|
978
|
+
var replaceEmoji = replaceEmoji$1;
|
979
|
+
|
980
|
+
var makeTwemojiRenderer = makeTwemojiRenderer$1;
|
981
|
+
|
982
|
+
var reactEasyEmoji = function reactEasyEmoji(element, optionsOrFn) {
|
983
|
+
var render = typeof optionsOrFn === 'function' ? optionsOrFn : makeTwemojiRenderer(optionsOrFn);
|
984
|
+
return replaceEmoji(element, render);
|
985
|
+
};
|
986
|
+
|
987
|
+
var emoji = reactEasyEmoji;
|
988
|
+
|
783
989
|
// @ts-check
|
990
|
+
var EMOJI_REGEX = new RegExp(/(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?)*/g);
|
784
991
|
|
785
992
|
/**
|
786
993
|
* @typedef {import('../types/types').SanitizeFn} SanitizeFn
|
@@ -789,8 +996,9 @@ function addLineBreak() {
|
|
789
996
|
// eslint-disable-next-line valid-jsdoc
|
790
997
|
/**
|
791
998
|
* @param {boolean} shouldReturn
|
999
|
+
* @param {boolean} shouldConvertEmojiToImage
|
792
1000
|
*/
|
793
|
-
function useSanitize(shouldReturn) {
|
1001
|
+
function useSanitize(shouldReturn, shouldConvertEmojiToImage) {
|
794
1002
|
/** @type {React.MutableRefObject<SanitizeFn[]>} */
|
795
1003
|
var sanitizeFnsRef = useRef([]);
|
796
1004
|
var sanitizedTextRef = useRef("");
|
@@ -806,9 +1014,12 @@ function useSanitize(shouldReturn) {
|
|
806
1014
|
return fn(acc);
|
807
1015
|
}, html);
|
808
1016
|
result = replaceAllHtmlToString(result, shouldReturn);
|
1017
|
+
if (shouldConvertEmojiToImage) {
|
1018
|
+
result = convertEmojiToImage(result);
|
1019
|
+
}
|
809
1020
|
sanitizedTextRef.current = result;
|
810
1021
|
return result;
|
811
|
-
}, []);
|
1022
|
+
}, [shouldReturn, shouldConvertEmojiToImage]);
|
812
1023
|
return {
|
813
1024
|
addSanitizeFn: addSanitizeFn,
|
814
1025
|
sanitize: sanitize,
|
@@ -837,6 +1048,28 @@ function replaceAllHtmlToString(html, shouldReturn) {
|
|
837
1048
|
return text;
|
838
1049
|
}
|
839
1050
|
|
1051
|
+
/**
|
1052
|
+
*
|
1053
|
+
* @param {string} text
|
1054
|
+
* @return {string}
|
1055
|
+
*/
|
1056
|
+
function convertEmojiToImage(text) {
|
1057
|
+
text = handleEmoji(text);
|
1058
|
+
text = renderToString(emoji(text));
|
1059
|
+
text = text.replace(new RegExp('<span class="message-emoji">', 'g'), '<span class="message-emoji">');
|
1060
|
+
text = text.replace(new RegExp('</span>', 'g'), '</span>');
|
1061
|
+
return text;
|
1062
|
+
}
|
1063
|
+
|
1064
|
+
/**
|
1065
|
+
*
|
1066
|
+
* @param {string} text
|
1067
|
+
* @return {string}
|
1068
|
+
*/
|
1069
|
+
function handleEmoji(text) {
|
1070
|
+
return text.replace(EMOJI_REGEX, '<span class="message-emoji">$&</span>');
|
1071
|
+
}
|
1072
|
+
|
840
1073
|
// @ts-check
|
841
1074
|
|
842
1075
|
/**
|
@@ -845,6 +1078,7 @@ function replaceAllHtmlToString(html, shouldReturn) {
|
|
845
1078
|
* @property {React.MutableRefObject<import('../text-input').Ref | null>} textInputRef
|
846
1079
|
* @property {(value: string) => void} setValue
|
847
1080
|
* @property {() => void} emitChange
|
1081
|
+
* @property {boolean=} shouldConvertEmojiToImage
|
848
1082
|
*/
|
849
1083
|
|
850
1084
|
/**
|
@@ -855,8 +1089,9 @@ function useExpose(_ref) {
|
|
855
1089
|
var ref = _ref.ref,
|
856
1090
|
textInputRef = _ref.textInputRef,
|
857
1091
|
setValue = _ref.setValue,
|
858
|
-
emitChange = _ref.emitChange
|
859
|
-
|
1092
|
+
emitChange = _ref.emitChange,
|
1093
|
+
shouldConvertEmojiToImage = _ref.shouldConvertEmojiToImage;
|
1094
|
+
var _useSanitize = useSanitize(false, shouldConvertEmojiToImage),
|
860
1095
|
sanitize = _useSanitize.sanitize,
|
861
1096
|
sanitizedTextRef = _useSanitize.sanitizedTextRef;
|
862
1097
|
useImperativeHandle(ref, function () {
|
@@ -1496,6 +1731,9 @@ var $f72b75cf796873c7$export$2e2bcd8739ae039 = {
|
|
1496
1731
|
};
|
1497
1732
|
const $c84d045dcc34faf5$var$CACHE = new Map();
|
1498
1733
|
const $c84d045dcc34faf5$var$VERSIONS = [{
|
1734
|
+
v: 15,
|
1735
|
+
emoji: "\uD83E\uDEE8"
|
1736
|
+
}, {
|
1499
1737
|
v: 14,
|
1500
1738
|
emoji: "\uD83E\uDEE0"
|
1501
1739
|
}, {
|
@@ -1675,8 +1913,8 @@ var $b247ea80b67298d5$export$2e2bcd8739ae039 = {
|
|
1675
1913
|
value: 24
|
1676
1914
|
},
|
1677
1915
|
emojiVersion: {
|
1678
|
-
value:
|
1679
|
-
choices: [1, 2, 3, 4, 5, 11, 12, 12.1, 13, 13.1, 14]
|
1916
|
+
value: 15,
|
1917
|
+
choices: [1, 2, 3, 4, 5, 11, 12, 12.1, 13, 13.1, 14, 15]
|
1680
1918
|
},
|
1681
1919
|
exceptEmojis: {
|
1682
1920
|
value: []
|
@@ -1687,7 +1925,7 @@ var $b247ea80b67298d5$export$2e2bcd8739ae039 = {
|
|
1687
1925
|
},
|
1688
1926
|
locale: {
|
1689
1927
|
value: "en",
|
1690
|
-
choices: ["en", "ar", "be", "cs", "de", "es", "fa", "fi", "fr", "hi", "it", "ja", "
|
1928
|
+
choices: ["en", "ar", "be", "cs", "de", "es", "fa", "fi", "fr", "hi", "it", "ja", "ko", "nl", "pl", "pt", "ru", "sa", "tr", "uk", "vi", "zh"]
|
1691
1929
|
},
|
1692
1930
|
maxFrequentRows: {
|
1693
1931
|
value: 4
|
@@ -2206,8 +2444,8 @@ function $254755d3f438722f$export$2e2bcd8739ae039(props) {
|
|
2206
2444
|
emoji || (emoji = ($c4d155af13ad4d4b$export$2e2bcd8739ae039).get(id || props.native));
|
2207
2445
|
if (!emoji) return props.fallback;
|
2208
2446
|
const emojiSkin = emoji.skins[skin - 1] || emoji.skins[0];
|
2209
|
-
const imageSrc = emojiSkin.src || (props.set != "native" && !props.spritesheet ? typeof props.getImageURL === "function" ? props.getImageURL(props.set, emojiSkin.unified) : `https://cdn.jsdelivr.net/npm/emoji-datasource-${props.set}@
|
2210
|
-
const spritesheetSrc = typeof props.getSpritesheetURL === "function" ? props.getSpritesheetURL(props.set) : `https://cdn.jsdelivr.net/npm/emoji-datasource-${props.set}@
|
2447
|
+
const imageSrc = emojiSkin.src || (props.set != "native" && !props.spritesheet ? typeof props.getImageURL === "function" ? props.getImageURL(props.set, emojiSkin.unified) : `https://cdn.jsdelivr.net/npm/emoji-datasource-${props.set}@15.0.1/img/${props.set}/64/${emojiSkin.unified}.png` : undefined);
|
2448
|
+
const spritesheetSrc = typeof props.getSpritesheetURL === "function" ? props.getSpritesheetURL(props.set) : `https://cdn.jsdelivr.net/npm/emoji-datasource-${props.set}@15.0.1/img/${props.set}/sheets-256/64.png`;
|
2211
2449
|
return /*#__PURE__*/($bd9dd35321b03dd4$export$34b9dba7ce09269b)("span", {
|
2212
2450
|
class: "emoji-mart-emoji",
|
2213
2451
|
"data-emoji-set": props.set,
|
@@ -2730,6 +2968,7 @@ class $89bd6bb200cc8fef$export$2e2bcd8739ae039 extends ($fb96b826c0c5f37a$export
|
|
2730
2968
|
}
|
2731
2969
|
unregister() {
|
2732
2970
|
document.removeEventListener("click", this.handleClickOutside);
|
2971
|
+
this.darkMedia?.removeEventListener("change", this.darkMediaCallback);
|
2733
2972
|
this.unobserve();
|
2734
2973
|
}
|
2735
2974
|
observe() {
|
@@ -2787,12 +3026,7 @@ class $89bd6bb200cc8fef$export$2e2bcd8739ae039 extends ($fb96b826c0c5f37a$export
|
|
2787
3026
|
if (!this.darkMedia) {
|
2788
3027
|
this.darkMedia = matchMedia("(prefers-color-scheme: dark)");
|
2789
3028
|
if (this.darkMedia.media.match(/^not/)) return "light";
|
2790
|
-
this.darkMedia.
|
2791
|
-
if (this.props.theme != "auto") return;
|
2792
|
-
this.setState({
|
2793
|
-
theme: this.darkMedia.matches ? "dark" : "light"
|
2794
|
-
});
|
2795
|
-
});
|
3029
|
+
this.darkMedia.addEventListener("change", this.darkMediaCallback);
|
2796
3030
|
}
|
2797
3031
|
return this.darkMedia.matches ? "dark" : "light";
|
2798
3032
|
}
|
@@ -3397,6 +3631,12 @@ class $89bd6bb200cc8fef$export$2e2bcd8739ae039 extends ($fb96b826c0c5f37a$export
|
|
3397
3631
|
}
|
3398
3632
|
constructor(props) {
|
3399
3633
|
super();
|
3634
|
+
($c770c458706daa72$export$2e2bcd8739ae039)(this, "darkMediaCallback", () => {
|
3635
|
+
if (this.props.theme != "auto") return;
|
3636
|
+
this.setState({
|
3637
|
+
theme: this.darkMedia.matches ? "dark" : "light"
|
3638
|
+
});
|
3639
|
+
});
|
3400
3640
|
($c770c458706daa72$export$2e2bcd8739ae039)(this, "handleClickOutside", e => {
|
3401
3641
|
const {
|
3402
3642
|
element: element
|
@@ -4516,7 +4756,7 @@ function usePollute() {
|
|
4516
4756
|
* @property {() => void=} onClick
|
4517
4757
|
* @property {() => void=} onFocus
|
4518
4758
|
* @property {() => void=} onBlur
|
4519
|
-
* @property {boolean
|
4759
|
+
* @property {boolean} shouldReturn
|
4520
4760
|
* @property {number=} maxLength
|
4521
4761
|
* @property {boolean=} keepOpened
|
4522
4762
|
* @property {(event: KeyboardEvent) => void=} onKeyDown
|
@@ -4534,6 +4774,7 @@ function usePollute() {
|
|
4534
4774
|
* @property {(text: string) => Promise<MetionUser[]>=} searchMention
|
4535
4775
|
* @property {HTMLDivElement=} buttonElement
|
4536
4776
|
* @property {React.MutableRefObject=} buttonRef
|
4777
|
+
* @property {boolean} shouldConvertEmojiToImage
|
4537
4778
|
*/
|
4538
4779
|
|
4539
4780
|
/**
|
@@ -4545,7 +4786,6 @@ function usePollute() {
|
|
4545
4786
|
function InputEmoji(props, ref) {
|
4546
4787
|
var onChange = props.onChange,
|
4547
4788
|
onEnter = props.onEnter,
|
4548
|
-
shouldReturn = props.shouldReturn,
|
4549
4789
|
onResize = props.onResize,
|
4550
4790
|
onClick = props.onClick,
|
4551
4791
|
onFocus = props.onFocus,
|
@@ -4565,6 +4805,8 @@ function InputEmoji(props, ref) {
|
|
4565
4805
|
searchMention = props.searchMention,
|
4566
4806
|
buttonElement = props.buttonElement,
|
4567
4807
|
buttonRef = props.buttonRef,
|
4808
|
+
shouldReturn = props.shouldReturn,
|
4809
|
+
shouldConvertEmojiToImage = props.shouldConvertEmojiToImage,
|
4568
4810
|
borderRadius = props.borderRadius,
|
4569
4811
|
borderColor = props.borderColor,
|
4570
4812
|
fontSize = props.fontSize,
|
@@ -4578,7 +4820,7 @@ function InputEmoji(props, ref) {
|
|
4578
4820
|
var _useEventListeners = useEventListeners(),
|
4579
4821
|
addEventListener = _useEventListeners.addEventListener,
|
4580
4822
|
listeners = _useEventListeners.listeners;
|
4581
|
-
var _useSanitize = useSanitize(
|
4823
|
+
var _useSanitize = useSanitize(shouldReturn, shouldConvertEmojiToImage),
|
4582
4824
|
addSanitizeFn = _useSanitize.addSanitizeFn,
|
4583
4825
|
sanitize = _useSanitize.sanitize,
|
4584
4826
|
sanitizedTextRef = _useSanitize.sanitizedTextRef;
|
@@ -4604,7 +4846,8 @@ function InputEmoji(props, ref) {
|
|
4604
4846
|
ref: ref,
|
4605
4847
|
setValue: setValue,
|
4606
4848
|
textInputRef: textInputRef,
|
4607
|
-
emitChange: emitChange
|
4849
|
+
emitChange: emitChange,
|
4850
|
+
shouldConvertEmojiToImage: shouldConvertEmojiToImage
|
4608
4851
|
});
|
4609
4852
|
useEffect(function () {
|
4610
4853
|
if (sanitizedTextRef.current !== value) {
|
@@ -4774,6 +5017,7 @@ InputEmojiWithRef.defaultProps = {
|
|
4774
5017
|
background: "white",
|
4775
5018
|
tabIndex: 0,
|
4776
5019
|
shouldReturn: false,
|
5020
|
+
shouldConvertEmojiToImage: false,
|
4777
5021
|
customEmojis: [],
|
4778
5022
|
language: undefined
|
4779
5023
|
};
|