@chayns-components/emoji-input 5.0.0-beta.112 → 5.0.0-beta.1122
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 +4 -15
- package/lib/{api → cjs/api}/item-storage/get.js +4 -5
- package/lib/cjs/api/item-storage/get.js.map +1 -0
- package/lib/{api → cjs/api}/item-storage/put.js +5 -6
- package/lib/cjs/api/item-storage/put.js.map +1 -0
- package/lib/cjs/components/emoji-input/EmojiInput.js +536 -0
- package/lib/cjs/components/emoji-input/EmojiInput.js.map +1 -0
- package/lib/cjs/components/emoji-input/EmojiInput.styles.js +131 -0
- package/lib/cjs/components/emoji-input/EmojiInput.styles.js.map +1 -0
- package/lib/cjs/components/emoji-input/prefix-element/PrefixElement.js +44 -0
- package/lib/cjs/components/emoji-input/prefix-element/PrefixElement.js.map +1 -0
- package/lib/cjs/components/emoji-input/prefix-element/PrefixElement.styles.js +64 -0
- package/lib/cjs/components/emoji-input/prefix-element/PrefixElement.styles.js.map +1 -0
- package/lib/{components → cjs/components}/emoji-picker/EmojiPicker.js +8 -11
- package/lib/cjs/components/emoji-picker/EmojiPicker.js.map +1 -0
- package/lib/{components → cjs/components}/emoji-picker/EmojiPicker.styles.js +3 -5
- package/lib/cjs/components/emoji-picker/EmojiPicker.styles.js.map +1 -0
- package/lib/cjs/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js +101 -0
- package/lib/cjs/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js.map +1 -0
- package/lib/{components → cjs/components}/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.js +4 -6
- package/lib/cjs/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.js.map +1 -0
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js +239 -0
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js.map +1 -0
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js +66 -0
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js.map +1 -0
- package/lib/{components → cjs/components}/emoji-picker/emoji-picker-emojis/emoji/Emoji.js +60 -33
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js.map +1 -0
- package/lib/{components → cjs/components}/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.js +6 -3
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.js.map +1 -0
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js +129 -0
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js.map +1 -0
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js +98 -0
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js.map +1 -0
- package/lib/cjs/components/emoji-picker-popup/EmojiPickerPopup.js +51 -0
- package/lib/cjs/components/emoji-picker-popup/EmojiPickerPopup.js.map +1 -0
- package/lib/cjs/components/emoji-picker-popup/EmojiPickerPopup.styles.js +15 -0
- package/lib/cjs/components/emoji-picker-popup/EmojiPickerPopup.styles.js.map +1 -0
- package/lib/{constants → cjs/constants}/alignment.js +2 -4
- package/lib/cjs/constants/alignment.js.map +1 -0
- package/lib/{constants → cjs/constants}/categories.js +1 -2
- package/lib/cjs/constants/categories.js.map +1 -0
- package/lib/{constants → cjs/constants}/emoji.js +4 -8
- package/lib/cjs/constants/emoji.js.map +1 -0
- package/lib/cjs/constants/externalServerUrl.js +8 -0
- package/lib/cjs/constants/externalServerUrl.js.map +1 -0
- package/lib/cjs/constants/regex.js +15 -0
- package/lib/cjs/constants/regex.js.map +1 -0
- package/lib/{hooks → cjs/hooks}/emojiHistory.js +13 -15
- package/lib/cjs/hooks/emojiHistory.js.map +1 -0
- package/lib/{index.js → cjs/index.js} +1 -1
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/types/api.js.map +1 -0
- package/lib/cjs/types/category.js.map +1 -0
- package/lib/{utils → cjs/utils}/emoji.js +14 -6
- package/lib/cjs/utils/emoji.js.map +1 -0
- package/lib/cjs/utils/environment.js.map +1 -0
- package/lib/cjs/utils/font.js.map +1 -0
- package/lib/cjs/utils/insert.js +110 -0
- package/lib/cjs/utils/insert.js.map +1 -0
- package/lib/cjs/utils/number.js +17 -0
- package/lib/cjs/utils/number.js.map +1 -0
- package/lib/cjs/utils/selection.js +281 -0
- package/lib/cjs/utils/selection.js.map +1 -0
- package/lib/cjs/utils/text.js +57 -0
- package/lib/cjs/utils/text.js.map +1 -0
- package/lib/esm/api/item-storage/get.js +30 -0
- package/lib/esm/api/item-storage/get.js.map +1 -0
- package/lib/esm/api/item-storage/put.js +35 -0
- package/lib/esm/api/item-storage/put.js.map +1 -0
- package/lib/esm/components/emoji-input/EmojiInput.js +518 -0
- package/lib/esm/components/emoji-input/EmojiInput.js.map +1 -0
- package/lib/esm/components/emoji-input/EmojiInput.styles.js +151 -0
- package/lib/esm/components/emoji-input/EmojiInput.styles.js.map +1 -0
- package/lib/esm/components/emoji-input/prefix-element/PrefixElement.js +38 -0
- package/lib/esm/components/emoji-input/prefix-element/PrefixElement.js.map +1 -0
- package/lib/esm/components/emoji-input/prefix-element/PrefixElement.styles.js +69 -0
- package/lib/esm/components/emoji-input/prefix-element/PrefixElement.styles.js.map +1 -0
- package/lib/esm/components/emoji-picker/EmojiPicker.js +40 -0
- package/lib/esm/components/emoji-picker/EmojiPicker.js.map +1 -0
- package/lib/esm/components/emoji-picker/EmojiPicker.styles.js +16 -0
- package/lib/esm/components/emoji-picker/EmojiPicker.styles.js.map +1 -0
- package/lib/esm/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js +96 -0
- package/lib/esm/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js.map +1 -0
- package/lib/esm/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.js +18 -0
- package/lib/esm/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.js.map +1 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js +240 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js.map +1 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js +74 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js.map +1 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js +136 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js.map +1 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.js +20 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.js.map +1 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js +121 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js.map +1 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js +98 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js.map +1 -0
- package/lib/esm/components/emoji-picker-popup/EmojiPickerPopup.js +43 -0
- package/lib/esm/components/emoji-picker-popup/EmojiPickerPopup.js.map +1 -0
- package/lib/esm/components/emoji-picker-popup/EmojiPickerPopup.styles.js +8 -0
- package/lib/esm/components/emoji-picker-popup/EmojiPickerPopup.styles.js.map +1 -0
- package/lib/esm/constants/alignment.js +13 -0
- package/lib/esm/constants/alignment.js.map +1 -0
- package/lib/esm/constants/categories.js +13 -0
- package/lib/esm/constants/categories.js.map +1 -0
- package/lib/esm/constants/emoji-de-DE.json +3827 -0
- package/lib/esm/constants/emoji.js +3798 -0
- package/lib/esm/constants/emoji.js.map +1 -0
- package/lib/esm/constants/externalServerUrl.js +2 -0
- package/lib/esm/constants/externalServerUrl.js.map +1 -0
- package/lib/esm/constants/regex.js +9 -0
- package/lib/esm/constants/regex.js.map +1 -0
- package/lib/esm/hooks/emojiHistory.js +83 -0
- package/lib/esm/hooks/emojiHistory.js.map +1 -0
- package/lib/{index.d.ts → esm/index.js} +1 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/types/api.js +2 -0
- package/lib/esm/types/api.js.map +1 -0
- package/lib/esm/types/category.js +2 -0
- package/lib/esm/types/category.js.map +1 -0
- package/lib/esm/utils/emoji.js +92 -0
- package/lib/esm/utils/emoji.js.map +1 -0
- package/lib/esm/utils/environment.js +24 -0
- package/lib/esm/utils/environment.js.map +1 -0
- package/lib/esm/utils/font.js +10 -0
- package/lib/esm/utils/font.js.map +1 -0
- package/lib/esm/utils/insert.js +104 -0
- package/lib/esm/utils/insert.js.map +1 -0
- package/lib/esm/utils/number.js +10 -0
- package/lib/esm/utils/number.js.map +1 -0
- package/lib/esm/utils/selection.js +263 -0
- package/lib/esm/utils/selection.js.map +1 -0
- package/lib/esm/utils/text.js +48 -0
- package/lib/esm/utils/text.js.map +1 -0
- package/lib/types/components/emoji-input/EmojiInput.d.ts +96 -0
- package/lib/types/components/emoji-input/EmojiInput.styles.d.ts +26 -0
- package/lib/types/components/emoji-input/prefix-element/PrefixElement.d.ts +8 -0
- package/lib/types/components/emoji-input/prefix-element/PrefixElement.styles.d.ts +12 -0
- package/lib/types/components/emoji-picker/EmojiPicker.styles.d.ts +5 -0
- package/lib/types/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.d.ts +6 -0
- package/lib/types/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.d.ts +9 -0
- package/lib/{components → types/components}/emoji-picker/emoji-picker-emojis/emoji/Emoji.d.ts +5 -0
- package/lib/types/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.d.ts +6 -0
- package/lib/types/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.d.ts +22 -0
- package/lib/{components → types/components}/emoji-picker-popup/EmojiPickerPopup.d.ts +0 -13
- package/lib/types/components/emoji-picker-popup/EmojiPickerPopup.styles.d.ts +1 -0
- package/lib/types/constants/regex.d.ts +8 -0
- package/lib/types/index.d.ts +6 -0
- package/lib/{utils → types/utils}/emoji.d.ts +2 -0
- package/lib/{utils → types/utils}/insert.d.ts +8 -1
- package/lib/types/utils/number.d.ts +1 -0
- package/lib/types/utils/selection.d.ts +23 -0
- package/lib/types/utils/text.d.ts +3 -0
- package/package.json +49 -31
- package/lib/api/item-storage/get.js.map +0 -1
- package/lib/api/item-storage/put.js.map +0 -1
- package/lib/components/emoji-input/EmojiInput.d.ts +0 -53
- package/lib/components/emoji-input/EmojiInput.js +0 -159
- package/lib/components/emoji-input/EmojiInput.js.map +0 -1
- package/lib/components/emoji-input/EmojiInput.styles.d.ts +0 -13
- package/lib/components/emoji-input/EmojiInput.styles.js +0 -145
- package/lib/components/emoji-input/EmojiInput.styles.js.map +0 -1
- package/lib/components/emoji-picker/EmojiPicker.js.map +0 -1
- package/lib/components/emoji-picker/EmojiPicker.styles.d.ts +0 -5
- package/lib/components/emoji-picker/EmojiPicker.styles.js.map +0 -1
- package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js +0 -51
- package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js.map +0 -1
- package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.d.ts +0 -2
- package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.js.map +0 -1
- package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js +0 -131
- package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js.map +0 -1
- package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.d.ts +0 -7
- package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js +0 -99
- package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js.map +0 -1
- package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js.map +0 -1
- package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.d.ts +0 -1
- package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.js.map +0 -1
- package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js +0 -74
- package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js.map +0 -1
- package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.d.ts +0 -11
- package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js +0 -104
- package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js.map +0 -1
- package/lib/components/emoji-picker-popup/EmojiPickerPopup.js +0 -150
- package/lib/components/emoji-picker-popup/EmojiPickerPopup.js.map +0 -1
- package/lib/components/emoji-picker-popup/EmojiPickerPopup.styles.d.ts +0 -7
- package/lib/components/emoji-picker-popup/EmojiPickerPopup.styles.js +0 -97
- package/lib/components/emoji-picker-popup/EmojiPickerPopup.styles.js.map +0 -1
- package/lib/constants/alignment.js.map +0 -1
- package/lib/constants/categories.js.map +0 -1
- package/lib/constants/emoji.js.map +0 -1
- package/lib/constants/externalServerUrl.js +0 -9
- package/lib/constants/externalServerUrl.js.map +0 -1
- package/lib/hooks/emojiHistory.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/types/api.js.map +0 -1
- package/lib/types/category.js.map +0 -1
- package/lib/utils/emoji.js.map +0 -1
- package/lib/utils/environment.js.map +0 -1
- package/lib/utils/font.js.map +0 -1
- package/lib/utils/insert.js +0 -50
- package/lib/utils/insert.js.map +0 -1
- package/lib/utils/selection.d.ts +0 -2
- package/lib/utils/selection.js +0 -43
- package/lib/utils/selection.js.map +0 -1
- /package/lib/{constants → cjs/constants}/emoji-de-DE.json +0 -0
- /package/lib/{types → cjs/types}/api.js +0 -0
- /package/lib/{types → cjs/types}/category.js +0 -0
- /package/lib/{utils → cjs/utils}/environment.js +0 -0
- /package/lib/{utils → cjs/utils}/font.js +0 -0
- /package/lib/{api → types/api}/item-storage/get.d.ts +0 -0
- /package/lib/{api → types/api}/item-storage/put.d.ts +0 -0
- /package/lib/{components → types/components}/emoji-picker/EmojiPicker.d.ts +0 -0
- /package/lib/{components → types/components}/emoji-picker/emoji-picker-categories/EmojiPickerCategories.d.ts +0 -0
- /package/lib/{components → types/components}/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.d.ts +0 -0
- /package/lib/{components → types/components}/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.d.ts +0 -0
- /package/lib/{constants → types/constants}/alignment.d.ts +0 -0
- /package/lib/{constants → types/constants}/categories.d.ts +0 -0
- /package/lib/{constants → types/constants}/emoji.d.ts +0 -0
- /package/lib/{constants → types/constants}/externalServerUrl.d.ts +0 -0
- /package/lib/{hooks → types/hooks}/emojiHistory.d.ts +0 -0
- /package/lib/types/{api.d.ts → types/api.d.ts} +0 -0
- /package/lib/types/{category.d.ts → types/category.d.ts} +0 -0
- /package/lib/{utils → types/utils}/environment.d.ts +0 -0
- /package/lib/{utils → types/utils}/font.d.ts +0 -0
|
@@ -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","hasFoundNoJoiner","forEach","node","noJoinerIndex","replace","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$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 // Search for \\u200C in child nodes. If found, set the childIndex, startOffset, and endOffset to the\n // position of the \\u200C character. Also remove the \\u200C character from the child node. If not found,\n // the childIndex, startOffset, and endOffset will be like before.\n const childNodesArray = Array.from(element.childNodes);\n\n let hasFoundNoJoiner = false;\n\n childNodesArray.forEach((node) => {\n if (\n !hasFoundNoJoiner &&\n node.nodeType === Node.TEXT_NODE &&\n typeof node.nodeValue === 'string'\n ) {\n const noJoinerIndex = node.nodeValue.indexOf('\\u200C');\n\n if (noJoinerIndex !== -1) {\n hasFoundNoJoiner = true;\n\n childIndex = childNodesArray.indexOf(node);\n startOffset = noJoinerIndex;\n endOffset = noJoinerIndex;\n }\n }\n });\n\n // Remove all no joiner characters from the child nodes if no joiner was found\n if (hasFoundNoJoiner) {\n childNodesArray.forEach((node) => {\n if (node.nodeType === Node.TEXT_NODE && typeof node.nodeValue === 'string') {\n // eslint-disable-next-line no-param-reassign\n node.nodeValue = node.nodeValue.replace(/\\u200C/g, '');\n }\n });\n }\n\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":[]}
|