@chayns-components/emoji-input 5.0.0-beta.96 → 5.0.0-beta.965

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.
Files changed (229) hide show
  1. package/README.md +4 -15
  2. package/lib/{api → cjs/api}/item-storage/get.js +4 -5
  3. package/lib/cjs/api/item-storage/get.js.map +1 -0
  4. package/lib/{api → cjs/api}/item-storage/put.js +5 -6
  5. package/lib/cjs/api/item-storage/put.js.map +1 -0
  6. package/lib/cjs/components/emoji-input/EmojiInput.js +510 -0
  7. package/lib/cjs/components/emoji-input/EmojiInput.js.map +1 -0
  8. package/lib/cjs/components/emoji-input/EmojiInput.styles.js +132 -0
  9. package/lib/cjs/components/emoji-input/EmojiInput.styles.js.map +1 -0
  10. package/lib/cjs/components/emoji-input/prefix-element/PrefixElement.js +45 -0
  11. package/lib/cjs/components/emoji-input/prefix-element/PrefixElement.js.map +1 -0
  12. package/lib/cjs/components/emoji-input/prefix-element/PrefixElement.styles.js +65 -0
  13. package/lib/cjs/components/emoji-input/prefix-element/PrefixElement.styles.js.map +1 -0
  14. package/lib/{components → cjs/components}/emoji-picker/EmojiPicker.js +9 -11
  15. package/lib/cjs/components/emoji-picker/EmojiPicker.js.map +1 -0
  16. package/lib/{components → cjs/components}/emoji-picker/EmojiPicker.styles.js +3 -5
  17. package/lib/cjs/components/emoji-picker/EmojiPicker.styles.js.map +1 -0
  18. package/lib/cjs/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js +102 -0
  19. package/lib/cjs/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js.map +1 -0
  20. package/lib/{components → cjs/components}/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.js +5 -6
  21. package/lib/cjs/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.js.map +1 -0
  22. package/lib/cjs/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js +240 -0
  23. package/lib/cjs/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js.map +1 -0
  24. package/lib/cjs/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js +69 -0
  25. package/lib/cjs/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js.map +1 -0
  26. package/lib/{components → cjs/components}/emoji-picker/emoji-picker-emojis/emoji/Emoji.js +49 -21
  27. package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js.map +1 -0
  28. package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.js +24 -0
  29. package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.js.map +1 -0
  30. package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js +130 -0
  31. package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js.map +1 -0
  32. package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js +99 -0
  33. package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js.map +1 -0
  34. package/lib/cjs/components/emoji-picker-popup/EmojiPickerPopup.js +52 -0
  35. package/lib/cjs/components/emoji-picker-popup/EmojiPickerPopup.js.map +1 -0
  36. package/lib/cjs/components/emoji-picker-popup/EmojiPickerPopup.styles.js +15 -0
  37. package/lib/cjs/components/emoji-picker-popup/EmojiPickerPopup.styles.js.map +1 -0
  38. package/lib/{constants → cjs/constants}/alignment.js +6 -8
  39. package/lib/cjs/constants/alignment.js.map +1 -0
  40. package/lib/{constants → cjs/constants}/categories.js +1 -2
  41. package/lib/cjs/constants/categories.js.map +1 -0
  42. package/lib/{constants → cjs/constants}/emoji.js +4 -8
  43. package/lib/cjs/constants/emoji.js.map +1 -0
  44. package/lib/cjs/constants/externalServerUrl.js +8 -0
  45. package/lib/cjs/constants/externalServerUrl.js.map +1 -0
  46. package/lib/cjs/constants/regex.js +15 -0
  47. package/lib/cjs/constants/regex.js.map +1 -0
  48. package/lib/{hooks → cjs/hooks}/emojiHistory.js +13 -15
  49. package/lib/cjs/hooks/emojiHistory.js.map +1 -0
  50. package/lib/{index.js → cjs/index.js} +1 -1
  51. package/lib/cjs/index.js.map +1 -0
  52. package/lib/cjs/types/api.js +2 -0
  53. package/lib/cjs/types/api.js.map +1 -0
  54. package/lib/cjs/types/category.js +2 -0
  55. package/lib/cjs/types/category.js.map +1 -0
  56. package/lib/{utils → cjs/utils}/emoji.js +16 -6
  57. package/lib/cjs/utils/emoji.js.map +1 -0
  58. package/lib/{utils → cjs/utils}/environment.js +6 -4
  59. package/lib/cjs/utils/environment.js.map +1 -0
  60. package/lib/cjs/utils/font.js +17 -0
  61. package/lib/cjs/utils/font.js.map +1 -0
  62. package/lib/cjs/utils/insert.js +110 -0
  63. package/lib/cjs/utils/insert.js.map +1 -0
  64. package/lib/cjs/utils/number.js +17 -0
  65. package/lib/cjs/utils/number.js.map +1 -0
  66. package/lib/cjs/utils/selection.js +255 -0
  67. package/lib/cjs/utils/selection.js.map +1 -0
  68. package/lib/cjs/utils/text.js +57 -0
  69. package/lib/cjs/utils/text.js.map +1 -0
  70. package/lib/esm/api/item-storage/get.js +30 -0
  71. package/lib/esm/api/item-storage/get.js.map +1 -0
  72. package/lib/esm/api/item-storage/put.js +35 -0
  73. package/lib/esm/api/item-storage/put.js.map +1 -0
  74. package/lib/esm/components/emoji-input/EmojiInput.js +497 -0
  75. package/lib/esm/components/emoji-input/EmojiInput.js.map +1 -0
  76. package/lib/esm/components/emoji-input/EmojiInput.styles.js +151 -0
  77. package/lib/esm/components/emoji-input/EmojiInput.styles.js.map +1 -0
  78. package/lib/esm/components/emoji-input/prefix-element/PrefixElement.js +38 -0
  79. package/lib/esm/components/emoji-input/prefix-element/PrefixElement.js.map +1 -0
  80. package/lib/esm/components/emoji-input/prefix-element/PrefixElement.styles.js +69 -0
  81. package/lib/esm/components/emoji-input/prefix-element/PrefixElement.styles.js.map +1 -0
  82. package/lib/esm/components/emoji-picker/EmojiPicker.js +40 -0
  83. package/lib/esm/components/emoji-picker/EmojiPicker.js.map +1 -0
  84. package/lib/esm/components/emoji-picker/EmojiPicker.styles.js +16 -0
  85. package/lib/esm/components/emoji-picker/EmojiPicker.styles.js.map +1 -0
  86. package/lib/esm/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js +96 -0
  87. package/lib/esm/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js.map +1 -0
  88. package/lib/esm/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.js +18 -0
  89. package/lib/esm/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.js.map +1 -0
  90. package/lib/esm/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js +240 -0
  91. package/lib/esm/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js.map +1 -0
  92. package/lib/esm/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js +76 -0
  93. package/lib/esm/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js.map +1 -0
  94. package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js +136 -0
  95. package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js.map +1 -0
  96. package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.js +20 -0
  97. package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.js.map +1 -0
  98. package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js +121 -0
  99. package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js.map +1 -0
  100. package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js +98 -0
  101. package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js.map +1 -0
  102. package/lib/esm/components/emoji-picker-popup/EmojiPickerPopup.js +43 -0
  103. package/lib/esm/components/emoji-picker-popup/EmojiPickerPopup.js.map +1 -0
  104. package/lib/esm/components/emoji-picker-popup/EmojiPickerPopup.styles.js +8 -0
  105. package/lib/esm/components/emoji-picker-popup/EmojiPickerPopup.styles.js.map +1 -0
  106. package/lib/esm/constants/alignment.js +13 -0
  107. package/lib/esm/constants/alignment.js.map +1 -0
  108. package/lib/esm/constants/categories.js +13 -0
  109. package/lib/esm/constants/categories.js.map +1 -0
  110. package/lib/esm/constants/emoji-de-DE.json +3827 -0
  111. package/lib/esm/constants/emoji.js +3798 -0
  112. package/lib/esm/constants/emoji.js.map +1 -0
  113. package/lib/esm/constants/externalServerUrl.js +2 -0
  114. package/lib/esm/constants/externalServerUrl.js.map +1 -0
  115. package/lib/esm/constants/regex.js +9 -0
  116. package/lib/esm/constants/regex.js.map +1 -0
  117. package/lib/esm/hooks/emojiHistory.js +83 -0
  118. package/lib/esm/hooks/emojiHistory.js.map +1 -0
  119. package/lib/{index.d.ts → esm/index.js} +1 -0
  120. package/lib/esm/index.js.map +1 -0
  121. package/lib/esm/types/api.js +2 -0
  122. package/lib/esm/types/api.js.map +1 -0
  123. package/lib/esm/types/category.js +2 -0
  124. package/lib/esm/types/category.js.map +1 -0
  125. package/lib/esm/utils/emoji.js +92 -0
  126. package/lib/esm/utils/emoji.js.map +1 -0
  127. package/lib/esm/utils/environment.js +24 -0
  128. package/lib/esm/utils/environment.js.map +1 -0
  129. package/lib/esm/utils/font.js +10 -0
  130. package/lib/esm/utils/font.js.map +1 -0
  131. package/lib/esm/utils/insert.js +104 -0
  132. package/lib/esm/utils/insert.js.map +1 -0
  133. package/lib/esm/utils/number.js +10 -0
  134. package/lib/esm/utils/number.js.map +1 -0
  135. package/lib/esm/utils/selection.js +237 -0
  136. package/lib/esm/utils/selection.js.map +1 -0
  137. package/lib/esm/utils/text.js +48 -0
  138. package/lib/esm/utils/text.js.map +1 -0
  139. package/lib/types/components/emoji-input/EmojiInput.d.ts +94 -0
  140. package/lib/types/components/emoji-input/EmojiInput.styles.d.ts +549 -0
  141. package/lib/types/components/emoji-input/prefix-element/PrefixElement.d.ts +8 -0
  142. package/lib/types/components/emoji-input/prefix-element/PrefixElement.styles.d.ts +12 -0
  143. package/lib/types/components/emoji-picker/EmojiPicker.styles.d.ts +5 -0
  144. package/lib/types/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.d.ts +267 -0
  145. package/lib/types/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.d.ts +10 -0
  146. package/lib/{components → types/components}/emoji-picker/emoji-picker-emojis/emoji/Emoji.d.ts +5 -0
  147. package/lib/types/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.d.ts +6 -0
  148. package/lib/types/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.d.ts +283 -0
  149. package/lib/{components → types/components}/emoji-picker-popup/EmojiPickerPopup.d.ts +0 -13
  150. package/lib/types/components/emoji-picker-popup/EmojiPickerPopup.styles.d.ts +1 -0
  151. package/lib/types/constants/regex.d.ts +8 -0
  152. package/lib/types/index.d.ts +6 -0
  153. package/lib/{utils → types/utils}/emoji.d.ts +2 -0
  154. package/lib/{utils → types/utils}/environment.d.ts +1 -0
  155. package/lib/types/utils/font.d.ts +1 -0
  156. package/lib/{utils → types/utils}/insert.d.ts +8 -1
  157. package/lib/types/utils/number.d.ts +1 -0
  158. package/lib/types/utils/selection.d.ts +23 -0
  159. package/lib/types/utils/text.d.ts +3 -0
  160. package/package.json +48 -30
  161. package/lib/api/item-storage/get.js.map +0 -1
  162. package/lib/api/item-storage/put.js.map +0 -1
  163. package/lib/components/emoji-input/EmojiInput.d.ts +0 -49
  164. package/lib/components/emoji-input/EmojiInput.js +0 -161
  165. package/lib/components/emoji-input/EmojiInput.js.map +0 -1
  166. package/lib/components/emoji-input/EmojiInput.styles.d.ts +0 -16
  167. package/lib/components/emoji-input/EmojiInput.styles.js +0 -153
  168. package/lib/components/emoji-input/EmojiInput.styles.js.map +0 -1
  169. package/lib/components/emoji-picker/EmojiPicker.js.map +0 -1
  170. package/lib/components/emoji-picker/EmojiPicker.styles.d.ts +0 -5
  171. package/lib/components/emoji-picker/EmojiPicker.styles.js.map +0 -1
  172. package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js +0 -51
  173. package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js.map +0 -1
  174. package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.d.ts +0 -2
  175. package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.js.map +0 -1
  176. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js +0 -131
  177. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js.map +0 -1
  178. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.d.ts +0 -7
  179. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js +0 -99
  180. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js.map +0 -1
  181. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js.map +0 -1
  182. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.d.ts +0 -1
  183. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.js +0 -20
  184. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.js.map +0 -1
  185. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js +0 -74
  186. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js.map +0 -1
  187. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.d.ts +0 -11
  188. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js +0 -104
  189. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js.map +0 -1
  190. package/lib/components/emoji-picker-popup/EmojiPickerPopup.js +0 -150
  191. package/lib/components/emoji-picker-popup/EmojiPickerPopup.js.map +0 -1
  192. package/lib/components/emoji-picker-popup/EmojiPickerPopup.styles.d.ts +0 -7
  193. package/lib/components/emoji-picker-popup/EmojiPickerPopup.styles.js +0 -97
  194. package/lib/components/emoji-picker-popup/EmojiPickerPopup.styles.js.map +0 -1
  195. package/lib/constants/alignment.js.map +0 -1
  196. package/lib/constants/categories.js.map +0 -1
  197. package/lib/constants/emoji.js.map +0 -1
  198. package/lib/constants/externalServerUrl.js +0 -9
  199. package/lib/constants/externalServerUrl.js.map +0 -1
  200. package/lib/hooks/emojiHistory.js.map +0 -1
  201. package/lib/index.js.map +0 -1
  202. package/lib/types/api.js +0 -6
  203. package/lib/types/api.js.map +0 -1
  204. package/lib/types/category.js +0 -6
  205. package/lib/types/category.js.map +0 -1
  206. package/lib/utils/emoji.js.map +0 -1
  207. package/lib/utils/environment.js.map +0 -1
  208. package/lib/utils/font.d.ts +0 -1
  209. package/lib/utils/font.js +0 -15
  210. package/lib/utils/font.js.map +0 -1
  211. package/lib/utils/insert.js +0 -50
  212. package/lib/utils/insert.js.map +0 -1
  213. package/lib/utils/selection.d.ts +0 -2
  214. package/lib/utils/selection.js +0 -43
  215. package/lib/utils/selection.js.map +0 -1
  216. /package/lib/{constants → cjs/constants}/emoji-de-DE.json +0 -0
  217. /package/lib/{api → types/api}/item-storage/get.d.ts +0 -0
  218. /package/lib/{api → types/api}/item-storage/put.d.ts +0 -0
  219. /package/lib/{components → types/components}/emoji-picker/EmojiPicker.d.ts +0 -0
  220. /package/lib/{components → types/components}/emoji-picker/emoji-picker-categories/EmojiPickerCategories.d.ts +0 -0
  221. /package/lib/{components → types/components}/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.d.ts +0 -0
  222. /package/lib/{components → types/components}/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.d.ts +0 -0
  223. /package/lib/{constants → types/constants}/alignment.d.ts +0 -0
  224. /package/lib/{constants → types/constants}/categories.d.ts +0 -0
  225. /package/lib/{constants → types/constants}/emoji.d.ts +0 -0
  226. /package/lib/{constants → types/constants}/externalServerUrl.d.ts +0 -0
  227. /package/lib/{hooks → types/hooks}/emojiHistory.d.ts +0 -0
  228. /package/lib/types/{api.d.ts → types/api.d.ts} +0 -0
  229. /package/lib/types/{category.d.ts → types/category.d.ts} +0 -0
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.setChildIndex = exports.saveSelection = exports.restoreSelection = exports.moveSelectionOffset = exports.insertInvisibleCursorMarker = exports.getCharCodeThatWillBeDeleted = exports.findAndSelectText = void 0;
7
+ var _number = require("./number");
8
+ var _text = require("./text");
9
+ let childIndex = -1;
10
+ let endOffset = -1;
11
+ let startOffset = -1;
12
+ const saveSelection = (element, {
13
+ shouldIgnoreEmptyTextNodes
14
+ } = {}) => {
15
+ const selection = window.getSelection();
16
+ if (!selection) {
17
+ return;
18
+ }
19
+ const {
20
+ anchorNode
21
+ } = selection;
22
+ if (!anchorNode) {
23
+ return;
24
+ }
25
+ const range = selection.getRangeAt(0);
26
+ let childNodesArray = Array.from(element.childNodes);
27
+ if (shouldIgnoreEmptyTextNodes) {
28
+ childNodesArray = childNodesArray.filter(({
29
+ nodeType,
30
+ nodeValue
31
+ }) => nodeType !== Node.TEXT_NODE || nodeValue !== '' && nodeValue !== '\u200B');
32
+ }
33
+ childIndex = childNodesArray.indexOf(anchorNode);
34
+ endOffset = range.endOffset;
35
+ startOffset = range.startOffset;
36
+ };
37
+ exports.saveSelection = saveSelection;
38
+ const restoreSelection = element => {
39
+ let childNode = element.childNodes[childIndex];
40
+ const selection = window.getSelection();
41
+ if (!childNode || !element || !selection) {
42
+ return;
43
+ }
44
+
45
+ // noinspection SuspiciousTypeOfGuard
46
+ if (typeof childNode.nodeValue !== 'string') {
47
+ const elementTextLength = (0, _text.getElementTextLength)(childNode);
48
+ if (childNode.nextSibling) {
49
+ childNode = childNode.nextSibling;
50
+ if (childNode.nodeType === Node.TEXT_NODE && childNode.nodeValue) {
51
+ endOffset -= elementTextLength;
52
+ startOffset -= elementTextLength;
53
+ if (childNode.nodeValue.charCodeAt(endOffset) === 8203) {
54
+ endOffset += 1;
55
+ startOffset += 1;
56
+ }
57
+ } else {
58
+ var _childNode$parentNode;
59
+ const textNode = document.createTextNode('\u200B');
60
+ (_childNode$parentNode = childNode.parentNode) === null || _childNode$parentNode === void 0 || _childNode$parentNode.insertBefore(textNode, childNode.nextSibling);
61
+ childNode = textNode;
62
+ endOffset = textNode.length;
63
+ startOffset = textNode.length;
64
+ }
65
+ } else {
66
+ var _childNode$parentNode2;
67
+ const textNode = document.createTextNode('\u200B');
68
+ (_childNode$parentNode2 = childNode.parentNode) === null || _childNode$parentNode2 === void 0 || _childNode$parentNode2.insertBefore(textNode, childNode.nextSibling);
69
+ childNode = textNode;
70
+ endOffset = textNode.length;
71
+ startOffset = textNode.length;
72
+ }
73
+ } else if (childNode.nodeValue && endOffset > childNode.nodeValue.length) {
74
+ var _childNode$nextSiblin;
75
+ if ((_childNode$nextSiblin = childNode.nextSibling) !== null && _childNode$nextSiblin !== void 0 && _childNode$nextSiblin.nodeValue) {
76
+ let elementTextLength = childNode.nodeValue.length;
77
+ childNode = childNode.nextSibling;
78
+
79
+ // noinspection SuspiciousTypeOfGuard
80
+ if (typeof childNode.nodeValue !== 'string') {
81
+ var _childNode$nextSiblin2;
82
+ elementTextLength += (0, _text.getElementTextLength)(childNode);
83
+ if ((_childNode$nextSiblin2 = childNode.nextSibling) !== null && _childNode$nextSiblin2 !== void 0 && _childNode$nextSiblin2.nodeValue) {
84
+ childNode = childNode.nextSibling;
85
+ if (childNode.nodeType === Node.TEXT_NODE && childNode.nodeValue) {
86
+ endOffset -= elementTextLength;
87
+ startOffset -= elementTextLength;
88
+ if (childNode.nodeValue.charCodeAt(endOffset) === 8203) {
89
+ endOffset += 1;
90
+ startOffset += 1;
91
+ }
92
+ } else {
93
+ var _childNode$parentNode3;
94
+ const textNode = document.createTextNode('\u200B');
95
+ (_childNode$parentNode3 = childNode.parentNode) === null || _childNode$parentNode3 === void 0 || _childNode$parentNode3.insertBefore(textNode, childNode.nextSibling);
96
+ childNode = textNode;
97
+ endOffset = textNode.length;
98
+ startOffset = textNode.length;
99
+ }
100
+ } else {
101
+ var _childNode$parentNode4;
102
+ const textNode = document.createTextNode('\u200B');
103
+ (_childNode$parentNode4 = childNode.parentNode) === null || _childNode$parentNode4 === void 0 || _childNode$parentNode4.insertBefore(textNode, childNode.nextSibling);
104
+ childNode = textNode;
105
+ endOffset = textNode.length;
106
+ startOffset = textNode.length;
107
+ }
108
+ }
109
+ } else {
110
+ endOffset = childNode.nodeValue.length;
111
+ startOffset = childNode.nodeValue.length;
112
+ }
113
+ }
114
+ const range = document.createRange();
115
+
116
+ // noinspection SuspiciousTypeOfGuard
117
+ if (typeof childNode.nodeValue === 'string') {
118
+ startOffset = (0, _number.clamp)(startOffset, 0, childNode.nodeValue.length);
119
+ endOffset = (0, _number.clamp)(endOffset, 0, childNode.nodeValue.length);
120
+ }
121
+ try {
122
+ range.setStart(childNode, startOffset);
123
+ range.setEnd(childNode, endOffset);
124
+ } catch (error) {
125
+ // Do nothing
126
+ }
127
+ selection.removeAllRanges();
128
+ selection.addRange(range);
129
+ range.collapse(true);
130
+ };
131
+ exports.restoreSelection = restoreSelection;
132
+ const insertInvisibleCursorMarker = () => {
133
+ const selection = window.getSelection();
134
+ if (!selection || selection.rangeCount === 0) {
135
+ return;
136
+ }
137
+ const range = selection.getRangeAt(0);
138
+ const textNode = range.startContainer;
139
+ const offset = range.startOffset;
140
+
141
+ // noinspection JSDeprecatedSymbols
142
+ document.execCommand('delete', false);
143
+ const span = document.createElement('span');
144
+ span.style.display = 'inline-block';
145
+ span.style.width = '0';
146
+ span.style.height = '0';
147
+ span.className = 'invisible-cursor-marker';
148
+ const parent = textNode.parentNode;
149
+ if (parent) {
150
+ if (textNode.nodeType === Node.TEXT_NODE) {
151
+ const textContent = textNode.textContent || '';
152
+ const beforeText = textContent.slice(0, offset);
153
+ const afterText = textContent.slice(offset);
154
+ textNode.textContent = beforeText;
155
+ parent.insertBefore(span, textNode.nextSibling);
156
+ const afterTextNode = document.createTextNode(afterText);
157
+ parent.insertBefore(afterTextNode, span.nextSibling);
158
+ setTimeout(() => {
159
+ // Set cursor to cursor element
160
+ const newRange = document.createRange();
161
+ newRange.setStartAfter(span);
162
+ newRange.setEndAfter(span);
163
+ selection.removeAllRanges();
164
+ selection.addRange(newRange);
165
+
166
+ // Remove cursor element
167
+ span.remove();
168
+ }, 10);
169
+ }
170
+ }
171
+ };
172
+ exports.insertInvisibleCursorMarker = insertInvisibleCursorMarker;
173
+ const moveSelectionOffset = distance => {
174
+ endOffset += distance;
175
+ startOffset += distance;
176
+ };
177
+ exports.moveSelectionOffset = moveSelectionOffset;
178
+ const setChildIndex = index => {
179
+ childIndex = index;
180
+ };
181
+
182
+ /**
183
+ * This function returns the code of the character that will be removed by the KeyDown event in the
184
+ * next step, if the "Backspace" or "Delete" key was pressed and there is no selection of multiple
185
+ * characters.
186
+ *
187
+ * @param event - Keyboard event from "onKeyDown"
188
+ */
189
+ exports.setChildIndex = setChildIndex;
190
+ const getCharCodeThatWillBeDeleted = event => {
191
+ var _window$getSelection, _nextSibling$nodeValu;
192
+ const range = (_window$getSelection = window.getSelection()) === null || _window$getSelection === void 0 ? void 0 : _window$getSelection.getRangeAt(0);
193
+
194
+ /**
195
+ * At this point the function is aborted if there is no selection range, several characters have
196
+ * been selected and therefore no single letter is removed or neither the "Backspace" nor the
197
+ * "Delete" key has been pressed.
198
+ */
199
+ if (!range || range.endOffset !== range.startOffset || event.key !== 'Backspace' && event.key !== 'Delete' && event.key !== 'Unidentified') {
200
+ return null;
201
+ }
202
+ if (event.key === 'Backspace' || event.key === 'Unidentified') {
203
+ var _previousSibling$node;
204
+ const {
205
+ nodeValue,
206
+ previousSibling
207
+ } = range.startContainer;
208
+ if (range.startOffset > 0) {
209
+ return nodeValue === null || nodeValue === void 0 ? void 0 : nodeValue.charCodeAt(range.startOffset - 1);
210
+ }
211
+ return previousSibling === null || previousSibling === void 0 || (_previousSibling$node = previousSibling.nodeValue) === null || _previousSibling$node === void 0 ? void 0 : _previousSibling$node.charCodeAt(previousSibling.nodeValue.length - 1);
212
+ }
213
+ const {
214
+ nextSibling,
215
+ nodeValue
216
+ } = range.endContainer;
217
+ if (range.endOffset < ((nodeValue === null || nodeValue === void 0 ? void 0 : nodeValue.length) ?? 0)) {
218
+ return nodeValue === null || nodeValue === void 0 ? void 0 : nodeValue.charCodeAt(range.endOffset);
219
+ }
220
+ return nextSibling === null || nextSibling === void 0 || (_nextSibling$nodeValu = nextSibling.nodeValue) === null || _nextSibling$nodeValu === void 0 ? void 0 : _nextSibling$nodeValu.charCodeAt(0);
221
+ };
222
+ exports.getCharCodeThatWillBeDeleted = getCharCodeThatWillBeDeleted;
223
+ const findAndSelectText = ({
224
+ editorElement,
225
+ searchText
226
+ }) => {
227
+ var _editorElement$textCo;
228
+ if (!((_editorElement$textCo = editorElement.textContent) !== null && _editorElement$textCo !== void 0 && _editorElement$textCo.includes(searchText))) {
229
+ return null;
230
+ }
231
+ const range = document.createRange();
232
+ let startNode = null;
233
+ let offset = -1;
234
+ const searchNodesForText = node => {
235
+ if (node.nodeType === Node.TEXT_NODE) {
236
+ var _node$textContent;
237
+ const index = (_node$textContent = node.textContent) === null || _node$textContent === void 0 ? void 0 : _node$textContent.indexOf(searchText);
238
+ if (typeof index === 'number' && index !== -1) {
239
+ startNode = node;
240
+ offset = index;
241
+ range.setStart(node, index);
242
+ range.setEnd(node, index + searchText.length);
243
+ return true;
244
+ }
245
+ } else if (node.nodeName !== 'LC_MENTION') {
246
+ return Array.from(node.childNodes).some(searchNodesForText);
247
+ }
248
+ return false;
249
+ };
250
+ searchNodesForText(editorElement);
251
+ if (startNode && offset !== -1) return range;
252
+ return null;
253
+ };
254
+ exports.findAndSelectText = findAndSelectText;
255
+ //# sourceMappingURL=selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.js","names":["_number","require","_text","childIndex","endOffset","startOffset","saveSelection","element","shouldIgnoreEmptyTextNodes","selection","window","getSelection","anchorNode","range","getRangeAt","childNodesArray","Array","from","childNodes","filter","nodeType","nodeValue","Node","TEXT_NODE","indexOf","exports","restoreSelection","childNode","elementTextLength","getElementTextLength","nextSibling","charCodeAt","_childNode$parentNode","textNode","document","createTextNode","parentNode","insertBefore","length","_childNode$parentNode2","_childNode$nextSiblin","_childNode$nextSiblin2","_childNode$parentNode3","_childNode$parentNode4","createRange","clamp","setStart","setEnd","error","removeAllRanges","addRange","collapse","insertInvisibleCursorMarker","rangeCount","startContainer","offset","execCommand","span","createElement","style","display","width","height","className","parent","textContent","beforeText","slice","afterText","afterTextNode","setTimeout","newRange","setStartAfter","setEndAfter","remove","moveSelectionOffset","distance","setChildIndex","index","getCharCodeThatWillBeDeleted","event","_window$getSelection","_nextSibling$nodeValu","key","_previousSibling$node","previousSibling","endContainer","findAndSelectText","editorElement","searchText","_editorElement$textCo","includes","startNode","searchNodesForText","node","_node$textContent","nodeName","some"],"sources":["../../../src/utils/selection.ts"],"sourcesContent":["import type { KeyboardEvent } from 'react';\nimport { clamp } from './number';\nimport { getElementTextLength } from './text';\n\nlet childIndex = -1;\nlet endOffset = -1;\nlet startOffset = -1;\n\ninterface SaveSelectionOptions {\n shouldIgnoreEmptyTextNodes?: boolean;\n}\n\nexport const saveSelection = (\n element: HTMLDivElement,\n { shouldIgnoreEmptyTextNodes }: SaveSelectionOptions = {},\n) => {\n const selection = window.getSelection();\n\n if (!selection) {\n return;\n }\n\n const { anchorNode } = selection;\n\n if (!anchorNode) {\n return;\n }\n\n const range = selection.getRangeAt(0);\n\n let childNodesArray = Array.from(element.childNodes);\n\n if (shouldIgnoreEmptyTextNodes) {\n childNodesArray = childNodesArray.filter(\n ({ nodeType, nodeValue }) =>\n nodeType !== Node.TEXT_NODE || (nodeValue !== '' && nodeValue !== '\\u200B'),\n );\n }\n\n childIndex = childNodesArray.indexOf(anchorNode as ChildNode);\n\n endOffset = range.endOffset;\n startOffset = range.startOffset;\n};\n\nexport const restoreSelection = (element: HTMLDivElement) => {\n let childNode = element.childNodes[childIndex];\n\n const selection = window.getSelection();\n\n if (!childNode || !element || !selection) {\n return;\n }\n\n // noinspection SuspiciousTypeOfGuard\n if (typeof childNode.nodeValue !== 'string') {\n const elementTextLength = getElementTextLength(childNode as Element);\n\n if (childNode.nextSibling) {\n childNode = childNode.nextSibling;\n\n if (childNode.nodeType === Node.TEXT_NODE && childNode.nodeValue) {\n endOffset -= elementTextLength;\n startOffset -= elementTextLength;\n\n if (childNode.nodeValue.charCodeAt(endOffset) === 8203) {\n endOffset += 1;\n startOffset += 1;\n }\n } else {\n const textNode = document.createTextNode('\\u200B');\n\n childNode.parentNode?.insertBefore(textNode, childNode.nextSibling);\n\n childNode = textNode;\n\n endOffset = textNode.length;\n startOffset = textNode.length;\n }\n } else {\n const textNode = document.createTextNode('\\u200B');\n\n childNode.parentNode?.insertBefore(textNode, childNode.nextSibling);\n\n childNode = textNode;\n\n endOffset = textNode.length;\n startOffset = textNode.length;\n }\n } else if (childNode.nodeValue && endOffset > childNode.nodeValue.length) {\n if (childNode.nextSibling?.nodeValue) {\n let elementTextLength = childNode.nodeValue.length;\n\n childNode = childNode.nextSibling;\n\n // noinspection SuspiciousTypeOfGuard\n if (typeof childNode.nodeValue !== 'string') {\n elementTextLength += getElementTextLength(childNode as Element);\n\n if (childNode.nextSibling?.nodeValue) {\n childNode = childNode.nextSibling;\n\n if (childNode.nodeType === Node.TEXT_NODE && childNode.nodeValue) {\n endOffset -= elementTextLength;\n startOffset -= elementTextLength;\n\n if (childNode.nodeValue.charCodeAt(endOffset) === 8203) {\n endOffset += 1;\n startOffset += 1;\n }\n } else {\n const textNode = document.createTextNode('\\u200B');\n\n childNode.parentNode?.insertBefore(textNode, childNode.nextSibling);\n\n childNode = textNode;\n\n endOffset = textNode.length;\n startOffset = textNode.length;\n }\n } else {\n const textNode = document.createTextNode('\\u200B');\n\n childNode.parentNode?.insertBefore(textNode, childNode.nextSibling);\n\n childNode = textNode;\n\n endOffset = textNode.length;\n startOffset = textNode.length;\n }\n }\n } else {\n endOffset = childNode.nodeValue.length;\n startOffset = childNode.nodeValue.length;\n }\n }\n\n const range = document.createRange();\n\n // noinspection SuspiciousTypeOfGuard\n if (typeof childNode.nodeValue === 'string') {\n startOffset = clamp(startOffset, 0, childNode.nodeValue.length);\n endOffset = clamp(endOffset, 0, childNode.nodeValue.length);\n }\n\n try {\n range.setStart(childNode, startOffset);\n range.setEnd(childNode, endOffset);\n } catch (error) {\n // Do nothing\n }\n\n selection.removeAllRanges();\n selection.addRange(range);\n\n range.collapse(true);\n};\n\nexport const insertInvisibleCursorMarker = (): void => {\n const selection = window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return;\n }\n\n const range = selection.getRangeAt(0);\n const textNode = range.startContainer;\n const offset = range.startOffset;\n\n // noinspection JSDeprecatedSymbols\n document.execCommand('delete', false);\n\n const span = document.createElement('span');\n span.style.display = 'inline-block';\n span.style.width = '0';\n span.style.height = '0';\n span.className = 'invisible-cursor-marker';\n\n const parent = textNode.parentNode;\n\n if (parent) {\n if (textNode.nodeType === Node.TEXT_NODE) {\n const textContent = textNode.textContent || '';\n const beforeText = textContent.slice(0, offset);\n const afterText = textContent.slice(offset);\n\n textNode.textContent = beforeText;\n\n parent.insertBefore(span, textNode.nextSibling);\n const afterTextNode = document.createTextNode(afterText);\n parent.insertBefore(afterTextNode, span.nextSibling);\n\n setTimeout(() => {\n // Set cursor to cursor element\n const newRange = document.createRange();\n newRange.setStartAfter(span);\n newRange.setEndAfter(span);\n selection.removeAllRanges();\n selection.addRange(newRange);\n\n // Remove cursor element\n span.remove();\n }, 10);\n }\n }\n};\n\nexport const moveSelectionOffset = (distance: number) => {\n endOffset += distance;\n startOffset += distance;\n};\n\nexport const setChildIndex = (index: number) => {\n childIndex = index;\n};\n\n/**\n * This function returns the code of the character that will be removed by the KeyDown event in the\n * next step, if the \"Backspace\" or \"Delete\" key was pressed and there is no selection of multiple\n * characters.\n *\n * @param event - Keyboard event from \"onKeyDown\"\n */\nexport const getCharCodeThatWillBeDeleted = (event: KeyboardEvent<HTMLDivElement>) => {\n const range = window.getSelection()?.getRangeAt(0);\n\n /**\n * At this point the function is aborted if there is no selection range, several characters have\n * been selected and therefore no single letter is removed or neither the \"Backspace\" nor the\n * \"Delete\" key has been pressed.\n */\n if (\n !range ||\n range.endOffset !== range.startOffset ||\n (event.key !== 'Backspace' && event.key !== 'Delete' && event.key !== 'Unidentified')\n ) {\n return null;\n }\n\n if (event.key === 'Backspace' || event.key === 'Unidentified') {\n const { nodeValue, previousSibling } = range.startContainer;\n\n if (range.startOffset > 0) {\n return nodeValue?.charCodeAt(range.startOffset - 1);\n }\n\n return previousSibling?.nodeValue?.charCodeAt(previousSibling.nodeValue.length - 1);\n }\n\n const { nextSibling, nodeValue } = range.endContainer;\n\n if (range.endOffset < (nodeValue?.length ?? 0)) {\n return nodeValue?.charCodeAt(range.endOffset);\n }\n\n return nextSibling?.nodeValue?.charCodeAt(0);\n};\n\ninterface FindAndSelectTextOptions {\n editorElement: HTMLDivElement;\n searchText: string;\n}\n\nexport const findAndSelectText = ({\n editorElement,\n searchText,\n}: FindAndSelectTextOptions): Range | null => {\n if (!editorElement.textContent?.includes(searchText)) {\n return null;\n }\n\n const range = document.createRange();\n\n let startNode: Node | null = null;\n let offset = -1;\n\n const searchNodesForText = (node: Node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n const index = node.textContent?.indexOf(searchText);\n\n if (typeof index === 'number' && index !== -1) {\n startNode = node;\n offset = index;\n\n range.setStart(node, index);\n range.setEnd(node, index + searchText.length);\n\n return true;\n }\n } else if (node.nodeName !== 'LC_MENTION') {\n return Array.from(node.childNodes).some(searchNodesForText);\n }\n\n return false;\n };\n\n searchNodesForText(editorElement);\n\n if (startNode && offset !== -1) return range;\n\n return null;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getElementTextLength = exports.convertTextToHTML = exports.convertHTMLToText = void 0;
7
+ var _regex = require("../constants/regex");
8
+ var _emoji = require("./emoji");
9
+ const convertTextToHTML = text => {
10
+ const element = document.createElement('div');
11
+ element.style.position = 'absolute';
12
+ element.style.opacity = '0';
13
+ element.contentEditable = 'true';
14
+ element.innerText = text;
15
+ document.body.appendChild(element);
16
+ let result = element.innerHTML;
17
+ document.body.removeChild(element);
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) => {
20
+ const prefixAttr = prefix ? `prefix="${prefix}" ` : '';
21
+ return `<nerReplace contenteditable="false" ${prefixAttr}type="${type}" value="${value}">${entity}</nerReplace>`;
22
+ });
23
+ return result;
24
+ };
25
+ exports.convertTextToHTML = convertTextToHTML;
26
+ const convertHTMLToText = text => {
27
+ let result = text;
28
+ 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) => {
29
+ const prefixAttr = prefix ? `prefix="${prefix}" ` : '';
30
+ return `[nerReplace ${prefixAttr}type="${type}" value="${value}"]${entity}[/nerReplace]`;
31
+ });
32
+
33
+ // eslint-disable-next-line no-irregular-whitespace
34
+ result = result.replace(/​/g, '');
35
+ result = (0, _emoji.escapeHTML)(result);
36
+ const element = document.createElement('div');
37
+ element.style.position = 'absolute';
38
+ element.style.opacity = '0';
39
+ element.contentEditable = 'true';
40
+ element.innerHTML = result;
41
+ document.body.appendChild(element);
42
+ result = element.innerText;
43
+ document.body.removeChild(element);
44
+ return result;
45
+ };
46
+ exports.convertHTMLToText = convertHTMLToText;
47
+ const getElementTextLength = element => {
48
+ let textLength = 0;
49
+ try {
50
+ textLength = convertHTMLToText(element.outerHTML).length;
51
+ } catch (e) {
52
+ // Do nothing
53
+ }
54
+ return textLength;
55
+ };
56
+ exports.getElementTextLength = getElementTextLength;
57
+ //# sourceMappingURL=text.js.map
@@ -0,0 +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","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} 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) => {\n let result = text;\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 // 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":[]}
@@ -0,0 +1,30 @@
1
+ import { ITEM_STORAGE_BASE_URL } from '../../constants/externalServerUrl';
2
+ export const getEmojiHistory = async _ref => {
3
+ let {
4
+ accessToken,
5
+ personId
6
+ } = _ref;
7
+ const requestInit = {
8
+ headers: {
9
+ Authorization: `Bearer ${accessToken}`
10
+ },
11
+ method: 'GET'
12
+ };
13
+ const url = `${ITEM_STORAGE_BASE_URL}/7/users/${personId}/keys/emojis`;
14
+ const response = await fetch(url, requestInit);
15
+ if (response.status === 200) {
16
+ try {
17
+ const data = await response.json();
18
+ return {
19
+ data: data.value,
20
+ status: 200
21
+ };
22
+ } catch (e) {
23
+ // Do nothing
24
+ }
25
+ }
26
+ return {
27
+ status: response.status
28
+ };
29
+ };
30
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","names":["ITEM_STORAGE_BASE_URL","getEmojiHistory","_ref","accessToken","personId","requestInit","headers","Authorization","method","url","response","fetch","status","data","json","value","e"],"sources":["../../../../src/api/item-storage/get.ts"],"sourcesContent":["import { ITEM_STORAGE_BASE_URL } from '../../constants/externalServerUrl';\nimport type { HistoryItem } from '../../hooks/emojiHistory';\nimport type { ApiFunctionResult } from '../../types/api';\n\ninterface GetEmojiHistoryOptions {\n accessToken: string;\n personId: string;\n}\n\ninterface GetEmojiHistoryResponseData {\n key: string;\n personId: string;\n schemeId: string;\n value: HistoryItem[];\n}\n\nexport const getEmojiHistory = async ({\n accessToken,\n personId,\n}: GetEmojiHistoryOptions): Promise<ApiFunctionResult<HistoryItem[]>> => {\n const requestInit: RequestInit = {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n method: 'GET',\n };\n\n const url = `${ITEM_STORAGE_BASE_URL}/7/users/${personId}/keys/emojis`;\n\n const response = await fetch(url, requestInit);\n\n if (response.status === 200) {\n try {\n const data = (await response.json()) as GetEmojiHistoryResponseData;\n\n return { data: data.value, status: 200 };\n } catch (e) {\n // Do nothing\n }\n }\n\n return { status: response.status };\n};\n"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,mCAAmC;AAgBzE,OAAO,MAAMC,eAAe,GAAG,MAAAC,IAAA,IAG0C;EAAA,IAHnC;IAClCC,WAAW;IACXC;EACoB,CAAC,GAAAF,IAAA;EACrB,MAAMG,WAAwB,GAAG;IAC7BC,OAAO,EAAE;MACLC,aAAa,EAAE,UAAUJ,WAAW;IACxC,CAAC;IACDK,MAAM,EAAE;EACZ,CAAC;EAED,MAAMC,GAAG,GAAG,GAAGT,qBAAqB,YAAYI,QAAQ,cAAc;EAEtE,MAAMM,QAAQ,GAAG,MAAMC,KAAK,CAACF,GAAG,EAAEJ,WAAW,CAAC;EAE9C,IAAIK,QAAQ,CAACE,MAAM,KAAK,GAAG,EAAE;IACzB,IAAI;MACA,MAAMC,IAAI,GAAI,MAAMH,QAAQ,CAACI,IAAI,CAAC,CAAiC;MAEnE,OAAO;QAAED,IAAI,EAAEA,IAAI,CAACE,KAAK;QAAEH,MAAM,EAAE;MAAI,CAAC;IAC5C,CAAC,CAAC,OAAOI,CAAC,EAAE;MACR;IAAA;EAER;EAEA,OAAO;IAAEJ,MAAM,EAAEF,QAAQ,CAACE;EAAO,CAAC;AACtC,CAAC","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ import { ITEM_STORAGE_BASE_URL } from '../../constants/externalServerUrl';
2
+ export const putEmojiHistory = async _ref => {
3
+ let {
4
+ accessToken,
5
+ personId,
6
+ value
7
+ } = _ref;
8
+ const requestInit = {
9
+ body: JSON.stringify({
10
+ value
11
+ }),
12
+ headers: {
13
+ Authorization: `Bearer ${accessToken}`,
14
+ 'Content-Type': 'application/json'
15
+ },
16
+ method: 'PUT'
17
+ };
18
+ const url = `${ITEM_STORAGE_BASE_URL}/7/users/${personId}/keys/emojis`;
19
+ const response = await fetch(url, requestInit);
20
+ if (response.status === 201) {
21
+ try {
22
+ const data = await response.json();
23
+ return {
24
+ data: data.value,
25
+ status: 200
26
+ };
27
+ } catch (e) {
28
+ // Do nothing
29
+ }
30
+ }
31
+ return {
32
+ status: response.status
33
+ };
34
+ };
35
+ //# sourceMappingURL=put.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"put.js","names":["ITEM_STORAGE_BASE_URL","putEmojiHistory","_ref","accessToken","personId","value","requestInit","body","JSON","stringify","headers","Authorization","method","url","response","fetch","status","data","json","e"],"sources":["../../../../src/api/item-storage/put.ts"],"sourcesContent":["import { ITEM_STORAGE_BASE_URL } from '../../constants/externalServerUrl';\nimport type { HistoryItem } from '../../hooks/emojiHistory';\nimport type { ApiFunctionResult } from '../../types/api';\n\ninterface PutEmojiHistoryOptions {\n accessToken: string;\n personId: string;\n value: HistoryItem[];\n}\n\ninterface PutEmojiHistoryResponseData {\n key: string;\n personId: string;\n schemeId: string;\n value: HistoryItem[];\n}\n\nexport const putEmojiHistory = async ({\n accessToken,\n personId,\n value,\n}: PutEmojiHistoryOptions): Promise<ApiFunctionResult<HistoryItem[]>> => {\n const requestInit: RequestInit = {\n body: JSON.stringify({ value }),\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n method: 'PUT',\n };\n\n const url = `${ITEM_STORAGE_BASE_URL}/7/users/${personId}/keys/emojis`;\n\n const response = await fetch(url, requestInit);\n\n if (response.status === 201) {\n try {\n const data = (await response.json()) as PutEmojiHistoryResponseData;\n\n return { data: data.value, status: 200 };\n } catch (e) {\n // Do nothing\n }\n }\n\n return { status: response.status };\n};\n"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,mCAAmC;AAiBzE,OAAO,MAAMC,eAAe,GAAG,MAAAC,IAAA,IAI0C;EAAA,IAJnC;IAClCC,WAAW;IACXC,QAAQ;IACRC;EACoB,CAAC,GAAAH,IAAA;EACrB,MAAMI,WAAwB,GAAG;IAC7BC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;MAAEJ;IAAM,CAAC,CAAC;IAC/BK,OAAO,EAAE;MACLC,aAAa,EAAE,UAAUR,WAAW,EAAE;MACtC,cAAc,EAAE;IACpB,CAAC;IACDS,MAAM,EAAE;EACZ,CAAC;EAED,MAAMC,GAAG,GAAG,GAAGb,qBAAqB,YAAYI,QAAQ,cAAc;EAEtE,MAAMU,QAAQ,GAAG,MAAMC,KAAK,CAACF,GAAG,EAAEP,WAAW,CAAC;EAE9C,IAAIQ,QAAQ,CAACE,MAAM,KAAK,GAAG,EAAE;IACzB,IAAI;MACA,MAAMC,IAAI,GAAI,MAAMH,QAAQ,CAACI,IAAI,CAAC,CAAiC;MAEnE,OAAO;QAAED,IAAI,EAAEA,IAAI,CAACZ,KAAK;QAAEW,MAAM,EAAE;MAAI,CAAC;IAC5C,CAAC,CAAC,OAAOG,CAAC,EAAE;MACR;IAAA;EAER;EAEA,OAAO;IAAEH,MAAM,EAAEF,QAAQ,CAACE;EAAO,CAAC;AACtC,CAAC","ignoreList":[]}