@chayns-components/emoji-input 5.3.12-alpha.0 → 5.4.2

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.
@@ -3,10 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.HTML_NO_EMOJI_REGEX = exports.HTML_NER_REPLACE_REGEX = exports.HTML_NER_IGNORE_REGEX = exports.HTML_LC_MENTION_REGEX = exports.HTML_BOLD_REGEX = exports.HTML_A_TAG_REGEX = exports.BB_NER_REPLACE_REGEX = exports.BB_NER_IGNORE_REGEX = exports.BB_LC_MENTION_REGEX = void 0;
6
+ exports.HTML_NO_EMOJI_REGEX = exports.HTML_NER_REPLACE_REGEX = exports.HTML_NER_IGNORE_REGEX = exports.HTML_LC_MENTION_REGEX = exports.HTML_BOLD_REGEX = exports.HTML_A_TAG_REGEX = exports.BB_NER_REPLACE_REGEX = exports.BB_NER_IGNORE_REGEX = exports.BB_LC_MENTION_REGEX = exports.BB_IGNORE_EMOJI_REGEX = void 0;
7
7
  const BB_LC_MENTION_REGEX = exports.BB_LC_MENTION_REGEX = /\[lc_mention.+?id="([^"]+?)"](.+?)\[\/lc_mention]/g;
8
8
  const BB_NER_IGNORE_REGEX = exports.BB_NER_IGNORE_REGEX = /\[nerIgnore](.+?)\[\/nerIgnore]/g;
9
9
  const BB_NER_REPLACE_REGEX = exports.BB_NER_REPLACE_REGEX = /\[nerReplace\s*(?:prefix="(.*?)")?\s*type="(.*?)"\s*value="(.*?)"](.*?)\[\/nerReplace]/gi;
10
+ const BB_IGNORE_EMOJI_REGEX = exports.BB_IGNORE_EMOJI_REGEX = /\[ignoreEmoji\]([\s\S]*?)\[\/ignoreEmoji\]/g;
10
11
  const HTML_LC_MENTION_REGEX = exports.HTML_LC_MENTION_REGEX = /<lc_mention.+?id="([^"]+?)">(?:<span.*?<\/span>)*(.+?)<\/lc_mention>/g;
11
12
  const HTML_NER_IGNORE_REGEX = exports.HTML_NER_IGNORE_REGEX = /<nerIgnore>(.+?)<\/nerIgnore>/g;
12
13
  const HTML_NER_REPLACE_REGEX = exports.HTML_NER_REPLACE_REGEX = /<nerReplace\s*(?:prefix="(.*?)")?\s*type="(.*?)"\s*value="(.*?)">(.*?)<\/nerReplace>/gi;
@@ -1 +1 @@
1
- {"version":3,"file":"regex.js","names":["BB_LC_MENTION_REGEX","exports","BB_NER_IGNORE_REGEX","BB_NER_REPLACE_REGEX","HTML_LC_MENTION_REGEX","HTML_NER_IGNORE_REGEX","HTML_NER_REPLACE_REGEX","HTML_BOLD_REGEX","HTML_A_TAG_REGEX","HTML_NO_EMOJI_REGEX"],"sources":["../../../src/constants/regex.ts"],"sourcesContent":["export const BB_LC_MENTION_REGEX = /\\[lc_mention.+?id=\"([^\"]+?)\"](.+?)\\[\\/lc_mention]/g;\nexport const BB_NER_IGNORE_REGEX = /\\[nerIgnore](.+?)\\[\\/nerIgnore]/g;\nexport const BB_NER_REPLACE_REGEX =\n /\\[nerReplace\\s*(?:prefix=\"(.*?)\")?\\s*type=\"(.*?)\"\\s*value=\"(.*?)\"](.*?)\\[\\/nerReplace]/gi;\n\nexport const HTML_LC_MENTION_REGEX =\n /<lc_mention.+?id=\"([^\"]+?)\">(?:<span.*?<\\/span>)*(.+?)<\\/lc_mention>/g;\nexport const HTML_NER_IGNORE_REGEX = /<nerIgnore>(.+?)<\\/nerIgnore>/g;\nexport const HTML_NER_REPLACE_REGEX =\n /<nerReplace\\s*(?:prefix=\"(.*?)\")?\\s*type=\"(.*?)\"\\s*value=\"(.*?)\">(.*?)<\\/nerReplace>/gi;\nexport const HTML_BOLD_REGEX = /<b>(.+?)<\\/b>/g;\nexport const HTML_A_TAG_REGEX = /(?:<|&lt;)a\\b[^>]*?(?:>|&gt;)(.*?)(?:<|&lt;)\\/a(?:>|&gt;)/g;\n\nexport const HTML_NO_EMOJI_REGEX = /<span class=\"no-emoji-convert\">([\\s\\S]*?)<\\/span>/g;\n"],"mappings":";;;;;;AAAO,MAAMA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,oDAAoD;AAChF,MAAME,mBAAmB,GAAAD,OAAA,CAAAC,mBAAA,GAAG,kCAAkC;AAC9D,MAAMC,oBAAoB,GAAAF,OAAA,CAAAE,oBAAA,GAC7B,0FAA0F;AAEvF,MAAMC,qBAAqB,GAAAH,OAAA,CAAAG,qBAAA,GAC9B,uEAAuE;AACpE,MAAMC,qBAAqB,GAAAJ,OAAA,CAAAI,qBAAA,GAAG,gCAAgC;AAC9D,MAAMC,sBAAsB,GAAAL,OAAA,CAAAK,sBAAA,GAC/B,wFAAwF;AACrF,MAAMC,eAAe,GAAAN,OAAA,CAAAM,eAAA,GAAG,gBAAgB;AACxC,MAAMC,gBAAgB,GAAAP,OAAA,CAAAO,gBAAA,GAAG,4DAA4D;AAErF,MAAMC,mBAAmB,GAAAR,OAAA,CAAAQ,mBAAA,GAAG,oDAAoD","ignoreList":[]}
1
+ {"version":3,"file":"regex.js","names":["BB_LC_MENTION_REGEX","exports","BB_NER_IGNORE_REGEX","BB_NER_REPLACE_REGEX","BB_IGNORE_EMOJI_REGEX","HTML_LC_MENTION_REGEX","HTML_NER_IGNORE_REGEX","HTML_NER_REPLACE_REGEX","HTML_BOLD_REGEX","HTML_A_TAG_REGEX","HTML_NO_EMOJI_REGEX"],"sources":["../../../src/constants/regex.ts"],"sourcesContent":["export const BB_LC_MENTION_REGEX = /\\[lc_mention.+?id=\"([^\"]+?)\"](.+?)\\[\\/lc_mention]/g;\nexport const BB_NER_IGNORE_REGEX = /\\[nerIgnore](.+?)\\[\\/nerIgnore]/g;\nexport const BB_NER_REPLACE_REGEX =\n /\\[nerReplace\\s*(?:prefix=\"(.*?)\")?\\s*type=\"(.*?)\"\\s*value=\"(.*?)\"](.*?)\\[\\/nerReplace]/gi;\nexport const BB_IGNORE_EMOJI_REGEX = /\\[ignoreEmoji\\]([\\s\\S]*?)\\[\\/ignoreEmoji\\]/g;\n\nexport const HTML_LC_MENTION_REGEX =\n /<lc_mention.+?id=\"([^\"]+?)\">(?:<span.*?<\\/span>)*(.+?)<\\/lc_mention>/g;\nexport const HTML_NER_IGNORE_REGEX = /<nerIgnore>(.+?)<\\/nerIgnore>/g;\nexport const HTML_NER_REPLACE_REGEX =\n /<nerReplace\\s*(?:prefix=\"(.*?)\")?\\s*type=\"(.*?)\"\\s*value=\"(.*?)\">(.*?)<\\/nerReplace>/gi;\nexport const HTML_BOLD_REGEX = /<b>(.+?)<\\/b>/g;\nexport const HTML_A_TAG_REGEX = /(?:<|&lt;)a\\b[^>]*?(?:>|&gt;)(.*?)(?:<|&lt;)\\/a(?:>|&gt;)/g;\n\nexport const HTML_NO_EMOJI_REGEX = /<span class=\"no-emoji-convert\">([\\s\\S]*?)<\\/span>/g;\n"],"mappings":";;;;;;AAAO,MAAMA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,oDAAoD;AAChF,MAAME,mBAAmB,GAAAD,OAAA,CAAAC,mBAAA,GAAG,kCAAkC;AAC9D,MAAMC,oBAAoB,GAAAF,OAAA,CAAAE,oBAAA,GAC7B,0FAA0F;AACvF,MAAMC,qBAAqB,GAAAH,OAAA,CAAAG,qBAAA,GAAG,6CAA6C;AAE3E,MAAMC,qBAAqB,GAAAJ,OAAA,CAAAI,qBAAA,GAC9B,uEAAuE;AACpE,MAAMC,qBAAqB,GAAAL,OAAA,CAAAK,qBAAA,GAAG,gCAAgC;AAC9D,MAAMC,sBAAsB,GAAAN,OAAA,CAAAM,sBAAA,GAC/B,wFAAwF;AACrF,MAAMC,eAAe,GAAAP,OAAA,CAAAO,eAAA,GAAG,gBAAgB;AACxC,MAAMC,gBAAgB,GAAAR,OAAA,CAAAQ,gBAAA,GAAG,4DAA4D;AAErF,MAAMC,mBAAmB,GAAAT,OAAA,CAAAS,mBAAA,GAAG,oDAAoD","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_EmojiInput","_interopRequireDefault","require","_EmojiPickerPopup","_EmojiPicker","_alignment","_emoji","_convertEmojisToUnicodeAsync","e","__esModule","default"],"sources":["../../src/index.ts"],"sourcesContent":["export { default as EmojiInput } from './components/emoji-input/EmojiInput';\nexport type { EmojiInputRef } from './components/emoji-input/EmojiInput';\nexport { default as EmojiPickerPopup } from './components/emoji-picker-popup/EmojiPickerPopup';\nexport { default as EmojiPicker } from './components/emoji-picker/EmojiPicker';\nexport { PopupAlignment } from './constants/alignment';\nexport { escapeHTML, unescapeHTML } from './utils/emoji';\nexport {\n loadEmojiShortList,\n convertEmojisToUnicodeAsync,\n convertEmojiToUnicodeSync,\n} from './utils/convertEmojisToUnicodeAsync';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,iBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,YAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,4BAAA,GAAAL,OAAA;AAI6C,SAAAD,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_EmojiInput","_interopRequireDefault","require","_EmojiPickerPopup","_EmojiPicker","_alignment","_emoji","_convertEmojisToUnicodeAsync","e","__esModule","default"],"sources":["../../src/index.ts"],"sourcesContent":["export { default as EmojiInput } from './components/emoji-input/EmojiInput';\nexport type { EmojiInputRef, EmojiInputProps } from './components/emoji-input/EmojiInput';\nexport type { ReplaceTextOptions } from './utils/selection';\nexport { default as EmojiPickerPopup } from './components/emoji-picker-popup/EmojiPickerPopup';\nexport { default as EmojiPicker } from './components/emoji-picker/EmojiPicker';\nexport { PopupAlignment } from './constants/alignment';\nexport { escapeHTML, unescapeHTML } from './utils/emoji';\nexport {\n loadEmojiShortList,\n convertEmojisToUnicodeAsync,\n convertEmojiToUnicodeSync,\n} from './utils/convertEmojisToUnicodeAsync';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,iBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,YAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,4BAAA,GAAAL,OAAA;AAI6C,SAAAD,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
@@ -16,10 +16,10 @@ const convertTextToHTML = text => {
16
16
  let result = element.innerHTML;
17
17
  document.body.removeChild(element);
18
18
  result = (0, _emoji.unescapeHTML)(result);
19
- result = result.replace(_regex.HTML_A_TAG_REGEX, '$1').replace(_regex.BB_LC_MENTION_REGEX, '<lc_mention contenteditable="false" id="$1"><span>@</span>$2</lc_mention>​').replace(_regex.BB_NER_IGNORE_REGEX, '<nerIgnore contenteditable="false">$1</nerIgnore>').replace(_regex.BB_NER_REPLACE_REGEX, (_, prefix, type, value, entity) => {
19
+ result = result.replace(_regex.HTML_A_TAG_REGEX, '$1').replace(_regex.BB_LC_MENTION_REGEX, '<lc_mention contenteditable="false" id="$1"><span>@</span>$2</lc_mention>\u200B').replace(_regex.BB_NER_IGNORE_REGEX, '<nerIgnore contenteditable="false">$1</nerIgnore>').replace(_regex.BB_NER_REPLACE_REGEX, (_, prefix, type, value, entity) => {
20
20
  const prefixAttr = prefix ? `prefix="${prefix}" ` : '';
21
21
  return `<nerReplace contenteditable="false" ${prefixAttr}type="${type}" value="${value}">${entity}</nerReplace>`;
22
- });
22
+ }).replace(_regex.BB_IGNORE_EMOJI_REGEX, '<span class="no-emoji-convert">$1</span>');
23
23
  return result;
24
24
  };
25
25
  exports.convertTextToHTML = convertTextToHTML;
@@ -35,7 +35,7 @@ const convertHTMLToText = (text, {
35
35
  result = result.replace(_regex.HTML_A_TAG_REGEX, '$1').replace(_regex.HTML_BOLD_REGEX, '[b]$1[/b]').replace(_regex.HTML_LC_MENTION_REGEX, '[lc_mention id="$1"]$2[/lc_mention]').replace(_regex.HTML_NER_IGNORE_REGEX, '[nerIgnore]$1[/nerIgnore]').replace(_regex.HTML_NER_REPLACE_REGEX, (_, prefix, type, value, entity) => {
36
36
  const prefixAttr = prefix ? `prefix="${prefix}" ` : '';
37
37
  return `[nerReplace ${prefixAttr}type="${type}" value="${value}"]${entity}[/nerReplace]`;
38
- });
38
+ }).replace(_regex.HTML_NO_EMOJI_REGEX, '[ignoreEmoji]$1[/ignoreEmoji]');
39
39
  if (preserveSpaces) {
40
40
  return result.replace(/&nbsp;/g, '\u00A0') // non-breaking space
41
41
  .replace(/\u200B/g, '​'); // zero-width space (sichtbar gemacht)
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","names":["_regex","require","_emoji","convertTextToHTML","text","element","document","createElement","style","position","opacity","contentEditable","innerText","body","appendChild","result","innerHTML","removeChild","unescapeHTML","replace","HTML_A_TAG_REGEX","BB_LC_MENTION_REGEX","BB_NER_IGNORE_REGEX","BB_NER_REPLACE_REGEX","_","prefix","type","value","entity","prefixAttr","exports","convertHTMLToText","preserveSpaces","HTML_NO_EMOJI_REGEX","HTML_BOLD_REGEX","HTML_LC_MENTION_REGEX","HTML_NER_IGNORE_REGEX","HTML_NER_REPLACE_REGEX","escapeHTML","getElementTextLength","textLength","outerHTML","length","e"],"sources":["../../../src/utils/text.ts"],"sourcesContent":["import {\n BB_LC_MENTION_REGEX,\n BB_NER_IGNORE_REGEX,\n BB_NER_REPLACE_REGEX,\n HTML_A_TAG_REGEX,\n HTML_BOLD_REGEX,\n HTML_LC_MENTION_REGEX,\n HTML_NER_IGNORE_REGEX,\n HTML_NER_REPLACE_REGEX,\n HTML_NO_EMOJI_REGEX,\n} from '../constants/regex';\nimport { escapeHTML, unescapeHTML } from './emoji';\n\nexport const convertTextToHTML = (text: string) => {\n const element = document.createElement('div');\n\n element.style.position = 'absolute';\n element.style.opacity = '0';\n\n element.contentEditable = 'true';\n element.innerText = text;\n\n document.body.appendChild(element);\n\n let result = element.innerHTML;\n\n document.body.removeChild(element);\n\n result = unescapeHTML(result);\n\n result = result\n .replace(HTML_A_TAG_REGEX, '$1')\n .replace(\n BB_LC_MENTION_REGEX,\n '<lc_mention contenteditable=\"false\" id=\"$1\"><span>@</span>$2</lc_mention>​',\n )\n .replace(BB_NER_IGNORE_REGEX, '<nerIgnore contenteditable=\"false\">$1</nerIgnore>')\n .replace(\n BB_NER_REPLACE_REGEX,\n (_, prefix: string | undefined, type: string, value: string, entity: string) => {\n const prefixAttr = prefix ? `prefix=\"${prefix}\" ` : '';\n\n return `<nerReplace contenteditable=\"false\" ${prefixAttr}type=\"${type}\" value=\"${value}\">${entity}</nerReplace>`;\n },\n );\n\n return result;\n};\n\nexport const convertHTMLToText = (text: string, { preserveSpaces = false } = {}) => {\n let result = text;\n\n // Unwrap \"no-emoji-convert\" protection spans so the plain-text\n // representation does not leak the marker HTML to consumers.\n // The protection itself is only relevant inside the live editor DOM.\n result = result.replace(HTML_NO_EMOJI_REGEX, '$1');\n\n result = result\n .replace(HTML_A_TAG_REGEX, '$1')\n .replace(HTML_BOLD_REGEX, '[b]$1[/b]')\n .replace(HTML_LC_MENTION_REGEX, '[lc_mention id=\"$1\"]$2[/lc_mention]')\n .replace(HTML_NER_IGNORE_REGEX, '[nerIgnore]$1[/nerIgnore]')\n .replace(\n HTML_NER_REPLACE_REGEX,\n (_, prefix: string | undefined, type: string, value: string, entity: string) => {\n const prefixAttr = prefix ? `prefix=\"${prefix}\" ` : '';\n\n return `[nerReplace ${prefixAttr}type=\"${type}\" value=\"${value}\"]${entity}[/nerReplace]`;\n },\n );\n\n if (preserveSpaces) {\n return result\n .replace(/&nbsp;/g, '\\u00A0') // non-breaking space\n .replace(/\\u200B/g, '​'); // zero-width space (sichtbar gemacht)\n }\n\n // eslint-disable-next-line no-irregular-whitespace\n result = result.replace(/​/g, '');\n\n result = escapeHTML(result);\n\n const element = document.createElement('div');\n\n element.style.position = 'absolute';\n element.style.opacity = '0';\n\n element.contentEditable = 'true';\n element.innerHTML = result;\n\n document.body.appendChild(element);\n\n result = element.innerText;\n\n document.body.removeChild(element);\n\n return result;\n};\n\nexport const getElementTextLength = (element: Element) => {\n let textLength = 0;\n\n try {\n textLength = convertHTMLToText(element.outerHTML).length;\n } catch (e) {\n // Do nothing\n }\n\n return textLength;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"text.js","names":["_regex","require","_emoji","convertTextToHTML","text","element","document","createElement","style","position","opacity","contentEditable","innerText","body","appendChild","result","innerHTML","removeChild","unescapeHTML","replace","HTML_A_TAG_REGEX","BB_LC_MENTION_REGEX","BB_NER_IGNORE_REGEX","BB_NER_REPLACE_REGEX","_","prefix","type","value","entity","prefixAttr","BB_IGNORE_EMOJI_REGEX","exports","convertHTMLToText","preserveSpaces","HTML_NO_EMOJI_REGEX","HTML_BOLD_REGEX","HTML_LC_MENTION_REGEX","HTML_NER_IGNORE_REGEX","HTML_NER_REPLACE_REGEX","escapeHTML","getElementTextLength","textLength","outerHTML","length","e"],"sources":["../../../src/utils/text.ts"],"sourcesContent":["import {\n BB_LC_MENTION_REGEX,\n BB_NER_IGNORE_REGEX,\n BB_NER_REPLACE_REGEX,\n BB_IGNORE_EMOJI_REGEX,\n HTML_A_TAG_REGEX,\n HTML_BOLD_REGEX,\n HTML_LC_MENTION_REGEX,\n HTML_NER_IGNORE_REGEX,\n HTML_NER_REPLACE_REGEX,\n HTML_NO_EMOJI_REGEX,\n} from '../constants/regex';\nimport { escapeHTML, unescapeHTML } from './emoji';\n\nexport const convertTextToHTML = (text: string) => {\n const element = document.createElement('div');\n\n element.style.position = 'absolute';\n element.style.opacity = '0';\n\n element.contentEditable = 'true';\n element.innerText = text;\n\n document.body.appendChild(element);\n\n let result = element.innerHTML;\n\n document.body.removeChild(element);\n\n result = unescapeHTML(result);\n\n result = result\n .replace(HTML_A_TAG_REGEX, '$1')\n .replace(\n BB_LC_MENTION_REGEX,\n '<lc_mention contenteditable=\"false\" id=\"$1\"><span>@</span>$2</lc_mention>\\u200B',\n )\n .replace(BB_NER_IGNORE_REGEX, '<nerIgnore contenteditable=\"false\">$1</nerIgnore>')\n .replace(\n BB_NER_REPLACE_REGEX,\n (_, prefix: string | undefined, type: string, value: string, entity: string) => {\n const prefixAttr = prefix ? `prefix=\"${prefix}\" ` : '';\n\n return `<nerReplace contenteditable=\"false\" ${prefixAttr}type=\"${type}\" value=\"${value}\">${entity}</nerReplace>`;\n },\n )\n .replace(BB_IGNORE_EMOJI_REGEX, '<span class=\"no-emoji-convert\">$1</span>');\n\n return result;\n};\n\nexport const convertHTMLToText = (text: string, { preserveSpaces = false } = {}) => {\n let result = text;\n\n // Unwrap \"no-emoji-convert\" protection spans so the plain-text\n // representation does not leak the marker HTML to consumers.\n // The protection itself is only relevant inside the live editor DOM.\n result = result.replace(HTML_NO_EMOJI_REGEX, '$1');\n\n result = result\n .replace(HTML_A_TAG_REGEX, '$1')\n .replace(HTML_BOLD_REGEX, '[b]$1[/b]')\n .replace(HTML_LC_MENTION_REGEX, '[lc_mention id=\"$1\"]$2[/lc_mention]')\n .replace(HTML_NER_IGNORE_REGEX, '[nerIgnore]$1[/nerIgnore]')\n .replace(\n HTML_NER_REPLACE_REGEX,\n (_, prefix: string | undefined, type: string, value: string, entity: string) => {\n const prefixAttr = prefix ? `prefix=\"${prefix}\" ` : '';\n\n return `[nerReplace ${prefixAttr}type=\"${type}\" value=\"${value}\"]${entity}[/nerReplace]`;\n },\n )\n .replace(HTML_NO_EMOJI_REGEX, '[ignoreEmoji]$1[/ignoreEmoji]');\n\n if (preserveSpaces) {\n return result\n .replace(/&nbsp;/g, '\\u00A0') // non-breaking space\n .replace(/\\u200B/g, '​'); // zero-width space (sichtbar gemacht)\n }\n\n // eslint-disable-next-line no-irregular-whitespace\n result = result.replace(/​/g, '');\n\n result = escapeHTML(result);\n\n const element = document.createElement('div');\n\n element.style.position = 'absolute';\n element.style.opacity = '0';\n\n element.contentEditable = 'true';\n element.innerHTML = result;\n\n document.body.appendChild(element);\n\n result = element.innerText;\n\n document.body.removeChild(element);\n\n return result;\n};\n\nexport const getElementTextLength = (element: Element) => {\n let textLength = 0;\n\n try {\n textLength = convertHTMLToText(element.outerHTML).length;\n } catch (e) {\n // Do nothing\n }\n\n return textLength;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAYA,IAAAC,MAAA,GAAAD,OAAA;AAEO,MAAME,iBAAiB,GAAIC,IAAY,IAAK;EAC/C,MAAMC,OAAO,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;EAE7CF,OAAO,CAACG,KAAK,CAACC,QAAQ,GAAG,UAAU;EACnCJ,OAAO,CAACG,KAAK,CAACE,OAAO,GAAG,GAAG;EAE3BL,OAAO,CAACM,eAAe,GAAG,MAAM;EAChCN,OAAO,CAACO,SAAS,GAAGR,IAAI;EAExBE,QAAQ,CAACO,IAAI,CAACC,WAAW,CAACT,OAAO,CAAC;EAElC,IAAIU,MAAM,GAAGV,OAAO,CAACW,SAAS;EAE9BV,QAAQ,CAACO,IAAI,CAACI,WAAW,CAACZ,OAAO,CAAC;EAElCU,MAAM,GAAG,IAAAG,mBAAY,EAACH,MAAM,CAAC;EAE7BA,MAAM,GAAGA,MAAM,CACVI,OAAO,CAACC,uBAAgB,EAAE,IAAI,CAAC,CAC/BD,OAAO,CACJE,0BAAmB,EACnB,iFACJ,CAAC,CACAF,OAAO,CAACG,0BAAmB,EAAE,mDAAmD,CAAC,CACjFH,OAAO,CACJI,2BAAoB,EACpB,CAACC,CAAC,EAAEC,MAA0B,EAAEC,IAAY,EAAEC,KAAa,EAAEC,MAAc,KAAK;IAC5E,MAAMC,UAAU,GAAGJ,MAAM,GAAG,WAAWA,MAAM,IAAI,GAAG,EAAE;IAEtD,OAAO,uCAAuCI,UAAU,SAASH,IAAI,YAAYC,KAAK,KAAKC,MAAM,eAAe;EACpH,CACJ,CAAC,CACAT,OAAO,CAACW,4BAAqB,EAAE,0CAA0C,CAAC;EAE/E,OAAOf,MAAM;AACjB,CAAC;AAACgB,OAAA,CAAA5B,iBAAA,GAAAA,iBAAA;AAEK,MAAM6B,iBAAiB,GAAGA,CAAC5B,IAAY,EAAE;EAAE6B,cAAc,GAAG;AAAM,CAAC,GAAG,CAAC,CAAC,KAAK;EAChF,IAAIlB,MAAM,GAAGX,IAAI;;EAEjB;EACA;EACA;EACAW,MAAM,GAAGA,MAAM,CAACI,OAAO,CAACe,0BAAmB,EAAE,IAAI,CAAC;EAElDnB,MAAM,GAAGA,MAAM,CACVI,OAAO,CAACC,uBAAgB,EAAE,IAAI,CAAC,CAC/BD,OAAO,CAACgB,sBAAe,EAAE,WAAW,CAAC,CACrChB,OAAO,CAACiB,4BAAqB,EAAE,qCAAqC,CAAC,CACrEjB,OAAO,CAACkB,4BAAqB,EAAE,2BAA2B,CAAC,CAC3DlB,OAAO,CACJmB,6BAAsB,EACtB,CAACd,CAAC,EAAEC,MAA0B,EAAEC,IAAY,EAAEC,KAAa,EAAEC,MAAc,KAAK;IAC5E,MAAMC,UAAU,GAAGJ,MAAM,GAAG,WAAWA,MAAM,IAAI,GAAG,EAAE;IAEtD,OAAO,eAAeI,UAAU,SAASH,IAAI,YAAYC,KAAK,KAAKC,MAAM,eAAe;EAC5F,CACJ,CAAC,CACAT,OAAO,CAACe,0BAAmB,EAAE,+BAA+B,CAAC;EAElE,IAAID,cAAc,EAAE;IAChB,OAAOlB,MAAM,CACRI,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAAA,CAC7BA,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;EAClC;;EAEA;EACAJ,MAAM,GAAGA,MAAM,CAACI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;EAEjCJ,MAAM,GAAG,IAAAwB,iBAAU,EAACxB,MAAM,CAAC;EAE3B,MAAMV,OAAO,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;EAE7CF,OAAO,CAACG,KAAK,CAACC,QAAQ,GAAG,UAAU;EACnCJ,OAAO,CAACG,KAAK,CAACE,OAAO,GAAG,GAAG;EAE3BL,OAAO,CAACM,eAAe,GAAG,MAAM;EAChCN,OAAO,CAACW,SAAS,GAAGD,MAAM;EAE1BT,QAAQ,CAACO,IAAI,CAACC,WAAW,CAACT,OAAO,CAAC;EAElCU,MAAM,GAAGV,OAAO,CAACO,SAAS;EAE1BN,QAAQ,CAACO,IAAI,CAACI,WAAW,CAACZ,OAAO,CAAC;EAElC,OAAOU,MAAM;AACjB,CAAC;AAACgB,OAAA,CAAAC,iBAAA,GAAAA,iBAAA;AAEK,MAAMQ,oBAAoB,GAAInC,OAAgB,IAAK;EACtD,IAAIoC,UAAU,GAAG,CAAC;EAElB,IAAI;IACAA,UAAU,GAAGT,iBAAiB,CAAC3B,OAAO,CAACqC,SAAS,CAAC,CAACC,MAAM;EAC5D,CAAC,CAAC,OAAOC,CAAC,EAAE;IACR;EAAA;EAGJ,OAAOH,UAAU;AACrB,CAAC;AAACV,OAAA,CAAAS,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  export const BB_LC_MENTION_REGEX = /\[lc_mention.+?id="([^"]+?)"](.+?)\[\/lc_mention]/g;
2
2
  export const BB_NER_IGNORE_REGEX = /\[nerIgnore](.+?)\[\/nerIgnore]/g;
3
3
  export const BB_NER_REPLACE_REGEX = /\[nerReplace\s*(?:prefix="(.*?)")?\s*type="(.*?)"\s*value="(.*?)"](.*?)\[\/nerReplace]/gi;
4
+ export const BB_IGNORE_EMOJI_REGEX = /\[ignoreEmoji\]([\s\S]*?)\[\/ignoreEmoji\]/g;
4
5
  export const HTML_LC_MENTION_REGEX = /<lc_mention.+?id="([^"]+?)">(?:<span.*?<\/span>)*(.+?)<\/lc_mention>/g;
5
6
  export const HTML_NER_IGNORE_REGEX = /<nerIgnore>(.+?)<\/nerIgnore>/g;
6
7
  export const HTML_NER_REPLACE_REGEX = /<nerReplace\s*(?:prefix="(.*?)")?\s*type="(.*?)"\s*value="(.*?)">(.*?)<\/nerReplace>/gi;
@@ -1 +1 @@
1
- {"version":3,"file":"regex.js","names":["BB_LC_MENTION_REGEX","BB_NER_IGNORE_REGEX","BB_NER_REPLACE_REGEX","HTML_LC_MENTION_REGEX","HTML_NER_IGNORE_REGEX","HTML_NER_REPLACE_REGEX","HTML_BOLD_REGEX","HTML_A_TAG_REGEX","HTML_NO_EMOJI_REGEX"],"sources":["../../../src/constants/regex.ts"],"sourcesContent":["export const BB_LC_MENTION_REGEX = /\\[lc_mention.+?id=\"([^\"]+?)\"](.+?)\\[\\/lc_mention]/g;\nexport const BB_NER_IGNORE_REGEX = /\\[nerIgnore](.+?)\\[\\/nerIgnore]/g;\nexport const BB_NER_REPLACE_REGEX =\n /\\[nerReplace\\s*(?:prefix=\"(.*?)\")?\\s*type=\"(.*?)\"\\s*value=\"(.*?)\"](.*?)\\[\\/nerReplace]/gi;\n\nexport const HTML_LC_MENTION_REGEX =\n /<lc_mention.+?id=\"([^\"]+?)\">(?:<span.*?<\\/span>)*(.+?)<\\/lc_mention>/g;\nexport const HTML_NER_IGNORE_REGEX = /<nerIgnore>(.+?)<\\/nerIgnore>/g;\nexport const HTML_NER_REPLACE_REGEX =\n /<nerReplace\\s*(?:prefix=\"(.*?)\")?\\s*type=\"(.*?)\"\\s*value=\"(.*?)\">(.*?)<\\/nerReplace>/gi;\nexport const HTML_BOLD_REGEX = /<b>(.+?)<\\/b>/g;\nexport const HTML_A_TAG_REGEX = /(?:<|&lt;)a\\b[^>]*?(?:>|&gt;)(.*?)(?:<|&lt;)\\/a(?:>|&gt;)/g;\n\nexport const HTML_NO_EMOJI_REGEX = /<span class=\"no-emoji-convert\">([\\s\\S]*?)<\\/span>/g;\n"],"mappings":"AAAA,OAAO,MAAMA,mBAAmB,GAAG,oDAAoD;AACvF,OAAO,MAAMC,mBAAmB,GAAG,kCAAkC;AACrE,OAAO,MAAMC,oBAAoB,GAC7B,0FAA0F;AAE9F,OAAO,MAAMC,qBAAqB,GAC9B,uEAAuE;AAC3E,OAAO,MAAMC,qBAAqB,GAAG,gCAAgC;AACrE,OAAO,MAAMC,sBAAsB,GAC/B,wFAAwF;AAC5F,OAAO,MAAMC,eAAe,GAAG,gBAAgB;AAC/C,OAAO,MAAMC,gBAAgB,GAAG,4DAA4D;AAE5F,OAAO,MAAMC,mBAAmB,GAAG,oDAAoD","ignoreList":[]}
1
+ {"version":3,"file":"regex.js","names":["BB_LC_MENTION_REGEX","BB_NER_IGNORE_REGEX","BB_NER_REPLACE_REGEX","BB_IGNORE_EMOJI_REGEX","HTML_LC_MENTION_REGEX","HTML_NER_IGNORE_REGEX","HTML_NER_REPLACE_REGEX","HTML_BOLD_REGEX","HTML_A_TAG_REGEX","HTML_NO_EMOJI_REGEX"],"sources":["../../../src/constants/regex.ts"],"sourcesContent":["export const BB_LC_MENTION_REGEX = /\\[lc_mention.+?id=\"([^\"]+?)\"](.+?)\\[\\/lc_mention]/g;\nexport const BB_NER_IGNORE_REGEX = /\\[nerIgnore](.+?)\\[\\/nerIgnore]/g;\nexport const BB_NER_REPLACE_REGEX =\n /\\[nerReplace\\s*(?:prefix=\"(.*?)\")?\\s*type=\"(.*?)\"\\s*value=\"(.*?)\"](.*?)\\[\\/nerReplace]/gi;\nexport const BB_IGNORE_EMOJI_REGEX = /\\[ignoreEmoji\\]([\\s\\S]*?)\\[\\/ignoreEmoji\\]/g;\n\nexport const HTML_LC_MENTION_REGEX =\n /<lc_mention.+?id=\"([^\"]+?)\">(?:<span.*?<\\/span>)*(.+?)<\\/lc_mention>/g;\nexport const HTML_NER_IGNORE_REGEX = /<nerIgnore>(.+?)<\\/nerIgnore>/g;\nexport const HTML_NER_REPLACE_REGEX =\n /<nerReplace\\s*(?:prefix=\"(.*?)\")?\\s*type=\"(.*?)\"\\s*value=\"(.*?)\">(.*?)<\\/nerReplace>/gi;\nexport const HTML_BOLD_REGEX = /<b>(.+?)<\\/b>/g;\nexport const HTML_A_TAG_REGEX = /(?:<|&lt;)a\\b[^>]*?(?:>|&gt;)(.*?)(?:<|&lt;)\\/a(?:>|&gt;)/g;\n\nexport const HTML_NO_EMOJI_REGEX = /<span class=\"no-emoji-convert\">([\\s\\S]*?)<\\/span>/g;\n"],"mappings":"AAAA,OAAO,MAAMA,mBAAmB,GAAG,oDAAoD;AACvF,OAAO,MAAMC,mBAAmB,GAAG,kCAAkC;AACrE,OAAO,MAAMC,oBAAoB,GAC7B,0FAA0F;AAC9F,OAAO,MAAMC,qBAAqB,GAAG,6CAA6C;AAElF,OAAO,MAAMC,qBAAqB,GAC9B,uEAAuE;AAC3E,OAAO,MAAMC,qBAAqB,GAAG,gCAAgC;AACrE,OAAO,MAAMC,sBAAsB,GAC/B,wFAAwF;AAC5F,OAAO,MAAMC,eAAe,GAAG,gBAAgB;AAC/C,OAAO,MAAMC,gBAAgB,GAAG,4DAA4D;AAE5F,OAAO,MAAMC,mBAAmB,GAAG,oDAAoD","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","EmojiInput","EmojiPickerPopup","EmojiPicker","PopupAlignment","escapeHTML","unescapeHTML","loadEmojiShortList","convertEmojisToUnicodeAsync","convertEmojiToUnicodeSync"],"sources":["../../src/index.ts"],"sourcesContent":["export { default as EmojiInput } from './components/emoji-input/EmojiInput';\nexport type { EmojiInputRef } from './components/emoji-input/EmojiInput';\nexport { default as EmojiPickerPopup } from './components/emoji-picker-popup/EmojiPickerPopup';\nexport { default as EmojiPicker } from './components/emoji-picker/EmojiPicker';\nexport { PopupAlignment } from './constants/alignment';\nexport { escapeHTML, unescapeHTML } from './utils/emoji';\nexport {\n loadEmojiShortList,\n convertEmojisToUnicodeAsync,\n convertEmojiToUnicodeSync,\n} from './utils/convertEmojisToUnicodeAsync';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,UAAU,QAAQ,qCAAqC;AAE3E,SAASD,OAAO,IAAIE,gBAAgB,QAAQ,kDAAkD;AAC9F,SAASF,OAAO,IAAIG,WAAW,QAAQ,uCAAuC;AAC9E,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,UAAU,EAAEC,YAAY,QAAQ,eAAe;AACxD,SACIC,kBAAkB,EAClBC,2BAA2B,EAC3BC,yBAAyB,QACtB,qCAAqC","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["default","EmojiInput","EmojiPickerPopup","EmojiPicker","PopupAlignment","escapeHTML","unescapeHTML","loadEmojiShortList","convertEmojisToUnicodeAsync","convertEmojiToUnicodeSync"],"sources":["../../src/index.ts"],"sourcesContent":["export { default as EmojiInput } from './components/emoji-input/EmojiInput';\nexport type { EmojiInputRef, EmojiInputProps } from './components/emoji-input/EmojiInput';\nexport type { ReplaceTextOptions } from './utils/selection';\nexport { default as EmojiPickerPopup } from './components/emoji-picker-popup/EmojiPickerPopup';\nexport { default as EmojiPicker } from './components/emoji-picker/EmojiPicker';\nexport { PopupAlignment } from './constants/alignment';\nexport { escapeHTML, unescapeHTML } from './utils/emoji';\nexport {\n loadEmojiShortList,\n convertEmojisToUnicodeAsync,\n convertEmojiToUnicodeSync,\n} from './utils/convertEmojisToUnicodeAsync';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,UAAU,QAAQ,qCAAqC;AAG3E,SAASD,OAAO,IAAIE,gBAAgB,QAAQ,kDAAkD;AAC9F,SAASF,OAAO,IAAIG,WAAW,QAAQ,uCAAuC;AAC9E,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,UAAU,EAAEC,YAAY,QAAQ,eAAe;AACxD,SACIC,kBAAkB,EAClBC,2BAA2B,EAC3BC,yBAAyB,QACtB,qCAAqC","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { BB_LC_MENTION_REGEX, BB_NER_IGNORE_REGEX, BB_NER_REPLACE_REGEX, HTML_A_TAG_REGEX, HTML_BOLD_REGEX, HTML_LC_MENTION_REGEX, HTML_NER_IGNORE_REGEX, HTML_NER_REPLACE_REGEX, HTML_NO_EMOJI_REGEX } from '../constants/regex';
1
+ import { BB_LC_MENTION_REGEX, BB_NER_IGNORE_REGEX, BB_NER_REPLACE_REGEX, BB_IGNORE_EMOJI_REGEX, HTML_A_TAG_REGEX, HTML_BOLD_REGEX, HTML_LC_MENTION_REGEX, HTML_NER_IGNORE_REGEX, HTML_NER_REPLACE_REGEX, HTML_NO_EMOJI_REGEX } from '../constants/regex';
2
2
  import { escapeHTML, unescapeHTML } from './emoji';
3
3
  export const convertTextToHTML = text => {
4
4
  const element = document.createElement('div');
@@ -10,10 +10,10 @@ export const convertTextToHTML = text => {
10
10
  let result = element.innerHTML;
11
11
  document.body.removeChild(element);
12
12
  result = unescapeHTML(result);
13
- result = result.replace(HTML_A_TAG_REGEX, '$1').replace(BB_LC_MENTION_REGEX, '<lc_mention contenteditable="false" id="$1"><span>@</span>$2</lc_mention>​').replace(BB_NER_IGNORE_REGEX, '<nerIgnore contenteditable="false">$1</nerIgnore>').replace(BB_NER_REPLACE_REGEX, (_, prefix, type, value, entity) => {
13
+ result = result.replace(HTML_A_TAG_REGEX, '$1').replace(BB_LC_MENTION_REGEX, '<lc_mention contenteditable="false" id="$1"><span>@</span>$2</lc_mention>\u200B').replace(BB_NER_IGNORE_REGEX, '<nerIgnore contenteditable="false">$1</nerIgnore>').replace(BB_NER_REPLACE_REGEX, (_, prefix, type, value, entity) => {
14
14
  const prefixAttr = prefix ? `prefix="${prefix}" ` : '';
15
15
  return `<nerReplace contenteditable="false" ${prefixAttr}type="${type}" value="${value}">${entity}</nerReplace>`;
16
- });
16
+ }).replace(BB_IGNORE_EMOJI_REGEX, '<span class="no-emoji-convert">$1</span>');
17
17
  return result;
18
18
  };
19
19
  export const convertHTMLToText = (text, {
@@ -28,7 +28,7 @@ export const convertHTMLToText = (text, {
28
28
  result = result.replace(HTML_A_TAG_REGEX, '$1').replace(HTML_BOLD_REGEX, '[b]$1[/b]').replace(HTML_LC_MENTION_REGEX, '[lc_mention id="$1"]$2[/lc_mention]').replace(HTML_NER_IGNORE_REGEX, '[nerIgnore]$1[/nerIgnore]').replace(HTML_NER_REPLACE_REGEX, (_, prefix, type, value, entity) => {
29
29
  const prefixAttr = prefix ? `prefix="${prefix}" ` : '';
30
30
  return `[nerReplace ${prefixAttr}type="${type}" value="${value}"]${entity}[/nerReplace]`;
31
- });
31
+ }).replace(HTML_NO_EMOJI_REGEX, '[ignoreEmoji]$1[/ignoreEmoji]');
32
32
  if (preserveSpaces) {
33
33
  return result.replace(/&nbsp;/g, '\u00A0') // non-breaking space
34
34
  .replace(/\u200B/g, '​'); // zero-width space (sichtbar gemacht)
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","names":["BB_LC_MENTION_REGEX","BB_NER_IGNORE_REGEX","BB_NER_REPLACE_REGEX","HTML_A_TAG_REGEX","HTML_BOLD_REGEX","HTML_LC_MENTION_REGEX","HTML_NER_IGNORE_REGEX","HTML_NER_REPLACE_REGEX","HTML_NO_EMOJI_REGEX","escapeHTML","unescapeHTML","convertTextToHTML","text","element","document","createElement","style","position","opacity","contentEditable","innerText","body","appendChild","result","innerHTML","removeChild","replace","_","prefix","type","value","entity","prefixAttr","convertHTMLToText","preserveSpaces","getElementTextLength","textLength","outerHTML","length","e"],"sources":["../../../src/utils/text.ts"],"sourcesContent":["import {\n BB_LC_MENTION_REGEX,\n BB_NER_IGNORE_REGEX,\n BB_NER_REPLACE_REGEX,\n HTML_A_TAG_REGEX,\n HTML_BOLD_REGEX,\n HTML_LC_MENTION_REGEX,\n HTML_NER_IGNORE_REGEX,\n HTML_NER_REPLACE_REGEX,\n HTML_NO_EMOJI_REGEX,\n} from '../constants/regex';\nimport { escapeHTML, unescapeHTML } from './emoji';\n\nexport const convertTextToHTML = (text: string) => {\n const element = document.createElement('div');\n\n element.style.position = 'absolute';\n element.style.opacity = '0';\n\n element.contentEditable = 'true';\n element.innerText = text;\n\n document.body.appendChild(element);\n\n let result = element.innerHTML;\n\n document.body.removeChild(element);\n\n result = unescapeHTML(result);\n\n result = result\n .replace(HTML_A_TAG_REGEX, '$1')\n .replace(\n BB_LC_MENTION_REGEX,\n '<lc_mention contenteditable=\"false\" id=\"$1\"><span>@</span>$2</lc_mention>​',\n )\n .replace(BB_NER_IGNORE_REGEX, '<nerIgnore contenteditable=\"false\">$1</nerIgnore>')\n .replace(\n BB_NER_REPLACE_REGEX,\n (_, prefix: string | undefined, type: string, value: string, entity: string) => {\n const prefixAttr = prefix ? `prefix=\"${prefix}\" ` : '';\n\n return `<nerReplace contenteditable=\"false\" ${prefixAttr}type=\"${type}\" value=\"${value}\">${entity}</nerReplace>`;\n },\n );\n\n return result;\n};\n\nexport const convertHTMLToText = (text: string, { preserveSpaces = false } = {}) => {\n let result = text;\n\n // Unwrap \"no-emoji-convert\" protection spans so the plain-text\n // representation does not leak the marker HTML to consumers.\n // The protection itself is only relevant inside the live editor DOM.\n result = result.replace(HTML_NO_EMOJI_REGEX, '$1');\n\n result = result\n .replace(HTML_A_TAG_REGEX, '$1')\n .replace(HTML_BOLD_REGEX, '[b]$1[/b]')\n .replace(HTML_LC_MENTION_REGEX, '[lc_mention id=\"$1\"]$2[/lc_mention]')\n .replace(HTML_NER_IGNORE_REGEX, '[nerIgnore]$1[/nerIgnore]')\n .replace(\n HTML_NER_REPLACE_REGEX,\n (_, prefix: string | undefined, type: string, value: string, entity: string) => {\n const prefixAttr = prefix ? `prefix=\"${prefix}\" ` : '';\n\n return `[nerReplace ${prefixAttr}type=\"${type}\" value=\"${value}\"]${entity}[/nerReplace]`;\n },\n );\n\n if (preserveSpaces) {\n return result\n .replace(/&nbsp;/g, '\\u00A0') // non-breaking space\n .replace(/\\u200B/g, '​'); // zero-width space (sichtbar gemacht)\n }\n\n // eslint-disable-next-line no-irregular-whitespace\n result = result.replace(/​/g, '');\n\n result = escapeHTML(result);\n\n const element = document.createElement('div');\n\n element.style.position = 'absolute';\n element.style.opacity = '0';\n\n element.contentEditable = 'true';\n element.innerHTML = result;\n\n document.body.appendChild(element);\n\n result = element.innerText;\n\n document.body.removeChild(element);\n\n return result;\n};\n\nexport const getElementTextLength = (element: Element) => {\n let textLength = 0;\n\n try {\n textLength = convertHTMLToText(element.outerHTML).length;\n } catch (e) {\n // Do nothing\n }\n\n return textLength;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"text.js","names":["BB_LC_MENTION_REGEX","BB_NER_IGNORE_REGEX","BB_NER_REPLACE_REGEX","BB_IGNORE_EMOJI_REGEX","HTML_A_TAG_REGEX","HTML_BOLD_REGEX","HTML_LC_MENTION_REGEX","HTML_NER_IGNORE_REGEX","HTML_NER_REPLACE_REGEX","HTML_NO_EMOJI_REGEX","escapeHTML","unescapeHTML","convertTextToHTML","text","element","document","createElement","style","position","opacity","contentEditable","innerText","body","appendChild","result","innerHTML","removeChild","replace","_","prefix","type","value","entity","prefixAttr","convertHTMLToText","preserveSpaces","getElementTextLength","textLength","outerHTML","length","e"],"sources":["../../../src/utils/text.ts"],"sourcesContent":["import {\n BB_LC_MENTION_REGEX,\n BB_NER_IGNORE_REGEX,\n BB_NER_REPLACE_REGEX,\n BB_IGNORE_EMOJI_REGEX,\n HTML_A_TAG_REGEX,\n HTML_BOLD_REGEX,\n HTML_LC_MENTION_REGEX,\n HTML_NER_IGNORE_REGEX,\n HTML_NER_REPLACE_REGEX,\n HTML_NO_EMOJI_REGEX,\n} from '../constants/regex';\nimport { escapeHTML, unescapeHTML } from './emoji';\n\nexport const convertTextToHTML = (text: string) => {\n const element = document.createElement('div');\n\n element.style.position = 'absolute';\n element.style.opacity = '0';\n\n element.contentEditable = 'true';\n element.innerText = text;\n\n document.body.appendChild(element);\n\n let result = element.innerHTML;\n\n document.body.removeChild(element);\n\n result = unescapeHTML(result);\n\n result = result\n .replace(HTML_A_TAG_REGEX, '$1')\n .replace(\n BB_LC_MENTION_REGEX,\n '<lc_mention contenteditable=\"false\" id=\"$1\"><span>@</span>$2</lc_mention>\\u200B',\n )\n .replace(BB_NER_IGNORE_REGEX, '<nerIgnore contenteditable=\"false\">$1</nerIgnore>')\n .replace(\n BB_NER_REPLACE_REGEX,\n (_, prefix: string | undefined, type: string, value: string, entity: string) => {\n const prefixAttr = prefix ? `prefix=\"${prefix}\" ` : '';\n\n return `<nerReplace contenteditable=\"false\" ${prefixAttr}type=\"${type}\" value=\"${value}\">${entity}</nerReplace>`;\n },\n )\n .replace(BB_IGNORE_EMOJI_REGEX, '<span class=\"no-emoji-convert\">$1</span>');\n\n return result;\n};\n\nexport const convertHTMLToText = (text: string, { preserveSpaces = false } = {}) => {\n let result = text;\n\n // Unwrap \"no-emoji-convert\" protection spans so the plain-text\n // representation does not leak the marker HTML to consumers.\n // The protection itself is only relevant inside the live editor DOM.\n result = result.replace(HTML_NO_EMOJI_REGEX, '$1');\n\n result = result\n .replace(HTML_A_TAG_REGEX, '$1')\n .replace(HTML_BOLD_REGEX, '[b]$1[/b]')\n .replace(HTML_LC_MENTION_REGEX, '[lc_mention id=\"$1\"]$2[/lc_mention]')\n .replace(HTML_NER_IGNORE_REGEX, '[nerIgnore]$1[/nerIgnore]')\n .replace(\n HTML_NER_REPLACE_REGEX,\n (_, prefix: string | undefined, type: string, value: string, entity: string) => {\n const prefixAttr = prefix ? `prefix=\"${prefix}\" ` : '';\n\n return `[nerReplace ${prefixAttr}type=\"${type}\" value=\"${value}\"]${entity}[/nerReplace]`;\n },\n )\n .replace(HTML_NO_EMOJI_REGEX, '[ignoreEmoji]$1[/ignoreEmoji]');\n\n if (preserveSpaces) {\n return result\n .replace(/&nbsp;/g, '\\u00A0') // non-breaking space\n .replace(/\\u200B/g, '​'); // zero-width space (sichtbar gemacht)\n }\n\n // eslint-disable-next-line no-irregular-whitespace\n result = result.replace(/​/g, '');\n\n result = escapeHTML(result);\n\n const element = document.createElement('div');\n\n element.style.position = 'absolute';\n element.style.opacity = '0';\n\n element.contentEditable = 'true';\n element.innerHTML = result;\n\n document.body.appendChild(element);\n\n result = element.innerText;\n\n document.body.removeChild(element);\n\n return result;\n};\n\nexport const getElementTextLength = (element: Element) => {\n let textLength = 0;\n\n try {\n textLength = convertHTMLToText(element.outerHTML).length;\n } catch (e) {\n // Do nothing\n }\n\n return textLength;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  export declare const BB_LC_MENTION_REGEX: RegExp;
2
2
  export declare const BB_NER_IGNORE_REGEX: RegExp;
3
3
  export declare const BB_NER_REPLACE_REGEX: RegExp;
4
+ export declare const BB_IGNORE_EMOJI_REGEX: RegExp;
4
5
  export declare const HTML_LC_MENTION_REGEX: RegExp;
5
6
  export declare const HTML_NER_IGNORE_REGEX: RegExp;
6
7
  export declare const HTML_NER_REPLACE_REGEX: RegExp;
@@ -1,5 +1,6 @@
1
1
  export { default as EmojiInput } from './components/emoji-input/EmojiInput';
2
- export type { EmojiInputRef } from './components/emoji-input/EmojiInput';
2
+ export type { EmojiInputRef, EmojiInputProps } from './components/emoji-input/EmojiInput';
3
+ export type { ReplaceTextOptions } from './utils/selection';
3
4
  export { default as EmojiPickerPopup } from './components/emoji-picker-popup/EmojiPickerPopup';
4
5
  export { default as EmojiPicker } from './components/emoji-picker/EmojiPicker';
5
6
  export { PopupAlignment } from './constants/alignment';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chayns-components/emoji-input",
3
- "version": "5.3.12-alpha.0",
3
+ "version": "5.4.2",
4
4
  "description": "Input field that supports HTML elements and emojis",
5
5
  "sideEffects": false,
6
6
  "browserslist": [
@@ -73,7 +73,7 @@
73
73
  "typescript": "^5.9.3"
74
74
  },
75
75
  "dependencies": {
76
- "@chayns-components/core": "^5.3.12-alpha.0",
76
+ "@chayns-components/core": "^5.4.0",
77
77
  "@chayns-components/textstring": "^5.2.5",
78
78
  "emojilib": "^3.0.12",
79
79
  "react-compiler-runtime": "^1.0.0",
@@ -89,5 +89,5 @@
89
89
  "publishConfig": {
90
90
  "access": "public"
91
91
  },
92
- "gitHead": "9b14203706ce71bf3560fe2611aed9db9e9122ce"
92
+ "gitHead": "e29d46251a8c2ce2ec9d0359918e863ec4cc1513"
93
93
  }