@chayns-components/emoji-input 5.0.0-beta.127 → 5.0.0-beta.1274
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 +561 -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/cjs/components/emoji-picker/EmojiPicker.js +47 -0
- 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 +99 -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 +260 -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 +63 -34
- 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 +130 -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/cjs/constants/emoji.js +126 -0
- 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/cjs/hooks/cursor.js +110 -0
- package/lib/cjs/hooks/cursor.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} +28 -3
- 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/cjs/utils/asyncEmojiData.js +10 -0
- package/lib/cjs/utils/asyncEmojiData.js.map +1 -0
- package/lib/cjs/utils/convertEmojisToUnicodeAsync.js +29 -0
- package/lib/cjs/utils/convertEmojisToUnicodeAsync.js.map +1 -0
- package/lib/{utils → cjs/utils}/emoji.js +19 -14
- package/lib/cjs/utils/emoji.js.map +1 -0
- package/lib/{constants/emoji.js → cjs/utils/emojiShortList.js} +4 -127
- package/lib/cjs/utils/emojiShortList.js.map +1 -0
- package/lib/cjs/utils/environment.js.map +1 -0
- package/lib/cjs/utils/font.js.map +1 -0
- package/lib/{utils → cjs/utils}/insert.js +55 -9
- 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/scroll.js +65 -0
- package/lib/cjs/utils/scroll.js.map +1 -0
- package/lib/cjs/utils/selection.js +351 -0
- package/lib/cjs/utils/selection.js.map +1 -0
- package/lib/cjs/utils/text.js +63 -0
- package/lib/cjs/utils/text.js.map +1 -0
- package/lib/esm/api/item-storage/get.js +29 -0
- package/lib/esm/api/item-storage/get.js.map +1 -0
- package/lib/esm/api/item-storage/put.js +34 -0
- package/lib/esm/api/item-storage/put.js.map +1 -0
- package/lib/esm/components/emoji-input/EmojiInput.js +542 -0
- package/lib/esm/components/emoji-input/EmojiInput.js.map +1 -0
- package/lib/esm/components/emoji-input/EmojiInput.styles.js +124 -0
- package/lib/esm/components/emoji-input/EmojiInput.styles.js.map +1 -0
- package/lib/esm/components/emoji-input/prefix-element/PrefixElement.js +37 -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 +57 -0
- package/lib/esm/components/emoji-input/prefix-element/PrefixElement.styles.js.map +1 -0
- package/lib/esm/components/emoji-picker/EmojiPicker.js +39 -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 +91 -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 +251 -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 +59 -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 +137 -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 +17 -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 +120 -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 +91 -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 +42 -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 +120 -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/cursor.js +103 -0
- package/lib/esm/hooks/cursor.js.map +1 -0
- package/lib/esm/hooks/emojiHistory.js +81 -0
- package/lib/esm/hooks/emojiHistory.js.map +1 -0
- package/lib/{index.d.ts → esm/index.js} +3 -1
- 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/asyncEmojiData.js +2 -0
- package/lib/esm/utils/asyncEmojiData.js.map +1 -0
- package/lib/esm/utils/convertEmojisToUnicodeAsync.js +20 -0
- package/lib/esm/utils/convertEmojisToUnicodeAsync.js.map +1 -0
- package/lib/esm/utils/emoji.js +90 -0
- package/lib/esm/utils/emoji.js.map +1 -0
- package/lib/esm/utils/emojiShortList.js +3679 -0
- package/lib/esm/utils/emojiShortList.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/scroll.js +58 -0
- package/lib/esm/utils/scroll.js.map +1 -0
- package/lib/esm/utils/selection.js +324 -0
- package/lib/esm/utils/selection.js.map +1 -0
- package/lib/esm/utils/text.js +54 -0
- package/lib/esm/utils/text.js.map +1 -0
- package/lib/types/components/emoji-input/EmojiInput.d.ts +101 -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 +4 -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 +10 -0
- package/lib/types/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.d.ts +6 -0
- package/lib/{components → types/components}/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.d.ts +5 -0
- package/lib/types/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.d.ts +20 -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/emoji.d.ts +4 -0
- package/lib/types/constants/regex.d.ts +8 -0
- package/lib/types/hooks/cursor.d.ts +11 -0
- package/lib/types/index.d.ts +7 -0
- package/lib/types/utils/asyncEmojiData.d.ts +1 -0
- package/lib/types/utils/convertEmojisToUnicodeAsync.d.ts +3 -0
- package/lib/types/utils/emoji.d.ts +10 -0
- package/lib/{constants/emoji.d.ts → types/utils/emojiShortList.d.ts} +0 -4
- package/lib/{utils → types/utils}/insert.d.ts +10 -1
- package/lib/types/utils/number.d.ts +1 -0
- package/lib/types/utils/scroll.d.ts +1 -0
- package/lib/types/utils/selection.d.ts +30 -0
- package/lib/types/utils/text.d.ts +5 -0
- package/package.json +50 -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 -55
- package/lib/components/emoji-input/EmojiInput.js +0 -165
- 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 -149
- package/lib/components/emoji-input/EmojiInput.styles.js.map +0 -1
- package/lib/components/emoji-picker/EmojiPicker.js +0 -51
- 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/constants/regex.d.ts +0 -3
- package/lib/constants/regex.js +0 -13
- package/lib/constants/regex.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.d.ts +0 -2
- 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.map +0 -1
- package/lib/utils/selection.d.ts +0 -7
- package/lib/utils/selection.js +0 -78
- package/lib/utils/selection.js.map +0 -1
- package/lib/utils/text.d.ts +0 -3
- package/lib/utils/text.js +0 -41
- package/lib/utils/text.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/{constants → types/constants}/alignment.d.ts +0 -0
- /package/lib/{constants → types/constants}/categories.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":"EmojiInput.js","names":["_core","require","_chaynsApi","_react","_react2","_interopRequireWildcard","_emoji","_insert","_selection","_text","_EmojiPickerPopup","_interopRequireDefault","_EmojiInput","_PrefixElement","_asyncEmojiData","_scroll","_cursor","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","EmojiInput","forwardRef","accessToken","height","inputId","isDisabled","maxHeight","onBlur","onFocus","onInput","onKeyDown","onPrefixElementRemove","onPopupVisibilityChange","personId","placeholder","popupAlignment","prefixElement","rightElement","shouldHidePlaceholderOnFocus","shouldPreventEmojiPicker","value","onCursorPositionChange","ref","isTouch","useState","getIsTouch","plainTextValue","setPlainTextValue","hasFocus","setHasFocus","progressDuration","setProgressDuration","labelWidth","setLabelWidth","isPopupVisible","setIsPopupVisible","isPrefixAnimationFinished","setIsPrefixAnimationFinished","prefixElementWidth","setPrefixElementWidth","emojiShortNames","setEmojiShortNames","emojiRegShortNames","setEmojiRegShortNames","areaProvider","useContext","AreaContext","editorRef","useRef","prefixElementRef","hasPrefixRendered","hasPrefixChanged","shouldDeleteOneMoreBackwards","shouldDeleteOneMoreForwards","valueRef","useCursorPosition","browser","getDevice","shouldChangeColor","useMemo","loadEmojiShortList","then","shortNameList","regShortnames","handleUpdateHTML","useCallback","html","current","newInnerHTML","convertEmojisToUnicode","convertTextToHTML","innerHTML","saveSelection","shouldIgnoreEmptyTextNodes","restoreSelection","handleBeforeInput","event","preventDefault","stopPropagation","data","type","nativeEvent","includes","text","insertTextAtCursorPosition","editorElement","newEvent","Event","bubbles","dispatchEvent","handleInput","insertInvisibleCursorMarker","document","execCommand","convertHTMLToText","insertCursorAtMarker","handleKeyDown","key","isPropagationStopped","requestAnimationFrame","scrollCursorIntoView","charCodeThatWillBeDeleted","getCharCodeThatWillBeDeleted","handlePopupVisibility","isVisible","handlePaste","clipboardData","getData","escapeHTML","handleDrop","_event$dataTransfer","dataTransfer","handlePopupSelect","emoji","shouldUseSavedSelection","_editorRef$current","convertedText","replace","convertedPrefix","length","handleInsertTextAtCursorPosition","handleReplaceText","searchText","pasteText","options","replaceText","insertPseudoMarker","handleStartProgress","duration","handleStopProgress","useImperativeHandle","startProgress","stopProgress","focus","_editorRef$current2","blur","_editorRef$current3","handlePreventLoseFocus","_element$parentElemen","_element$parentElemen2","element","target","classList","contains","parentElement","body","addEventListener","removeEventListener","shouldShowPlaceholder","_editorRef$current4","isJustPrefixElement","shouldRenderPlaceholder","handleFocus","handleBlur","_editorRef$current5","offsetWidth","undefined","handleResize","resizeObserver","ResizeObserver","observe","disconnect","blurElement","activeElement","createElement","StyledEmojiInput","$isDisabled","$shouldChangeColor","AnimatePresence","initial","StyledMotionEmojiInputProgress","animate","width","exit","opacity","transition","ease","StyledEmojiInputContent","StyledMotionEmojiInputEditor","$browser","name","minHeight","contentEditable","id","onBeforeInput","onPaste","onDrop","$shouldShowContent","StyledEmojiInputLabel","$maxWidth","$offsetWidth","onSelect","StyledEmojiInputRightWrapper","displayName","_default","exports"],"sources":["../../../../src/components/emoji-input/EmojiInput.tsx"],"sourcesContent":["import { AreaContext, BrowserName, getIsTouch } from '@chayns-components/core';\nimport { getDevice } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n ChangeEvent,\n ClipboardEvent,\n CSSProperties,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEvent as TmpKeyboardEvent,\n KeyboardEventHandler,\n ReactElement,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type FormEvent,\n} from 'react';\nimport type { PopupAlignment } from '../../constants/alignment';\nimport { convertEmojisToUnicode, escapeHTML } from '../../utils/emoji';\nimport { insertTextAtCursorPosition, replaceText } from '../../utils/insert';\nimport {\n getCharCodeThatWillBeDeleted,\n insertInvisibleCursorMarker,\n restoreSelection,\n saveSelection,\n type ReplaceTextOptions,\n insertPseudoMarker,\n insertCursorAtMarker,\n} from '../../utils/selection';\nimport { convertHTMLToText, convertTextToHTML } from '../../utils/text';\nimport EmojiPickerPopup from '../emoji-picker-popup/EmojiPickerPopup';\nimport {\n StyledEmojiInput,\n StyledEmojiInputContent,\n StyledEmojiInputLabel,\n StyledEmojiInputRightWrapper,\n StyledMotionEmojiInputEditor,\n StyledMotionEmojiInputProgress,\n} from './EmojiInput.styles';\nimport PrefixElement from './prefix-element/PrefixElement';\nimport { loadEmojiShortList } from '../../utils/asyncEmojiData';\nimport { scrollCursorIntoView } from '../../utils/scroll';\nimport { useCursorPosition } from '../../hooks/cursor';\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nexport type EmojiInputProps = {\n /**\n * Access token of the logged-in user. Is needed to load and save the history of the emojis.\n */\n accessToken?: string;\n /**\n * Sets the height of the input field to a fixed value. If this value is not set, the component will use the needed height until the maximum height is reached.\n */\n height?: CSSProperties['height'];\n /**\n * HTML id of the input element\n */\n inputId?: string;\n /**\n * Disables the input so that it cannot be changed anymore\n */\n isDisabled?: boolean;\n /**\n * Sets the maximum height of the input field.\n */\n maxHeight?: CSSProperties['maxHeight'];\n /**\n * Function that is executed when the input field loses focus.\n */\n onBlur?: FocusEventHandler<HTMLDivElement>;\n /**\n * Function to be executed when the cursor position is changed.\n */\n onCursorPositionChange?: (position: number) => void;\n /**\n * Function that is executed when the input field gets the focus.\n */\n onFocus?: FocusEventHandler<HTMLDivElement>;\n /**\n * Function that is executed when the text of the input changes. In addition to the original\n * event, the original text is returned as second parameter, in which the internally used HTML\n * elements have been converted back to BB codes.\n */\n onInput?: (event: ChangeEvent<HTMLDivElement>, originalText: string) => void;\n /**\n * Function that is executed when a key is pressed down.\n */\n onKeyDown?: KeyboardEventHandler<HTMLDivElement>;\n /**\n * Function to be executed if the prefixElement is removed.\n */\n onPrefixElementRemove?: () => void;\n /**\n * Function that is executed when the visibility of the popup changes.\n * @param {boolean} isVisible - Whether the popup is visible or not\n */\n onPopupVisibilityChange?: (isVisible: boolean) => void;\n /**\n * Person id of the logged-in user. Is needed to load and save the history of the emojis.\n */\n personId?: string;\n /**\n * Placeholder for the input field\n */\n placeholder?: string | ReactElement;\n /**\n * Sets the alignment of the popup to a fixed value. If this value is not set, the component\n * calculates the best position on its own. Use the imported 'PopupAlignment' enum to set this\n * value.\n */\n popupAlignment?: PopupAlignment;\n /**\n * Element that is rendered before the input field but the placeholder is still visible.\n */\n prefixElement?: string;\n /**\n * Element that is rendered inside the EmojiInput on the right side.\n */\n rightElement?: ReactNode;\n /**\n * Whether the placeholder should be shown after the input has focus.\n */\n shouldHidePlaceholderOnFocus?: boolean;\n /**\n * Prevents the EmojiPickerPopup icon from being displayed\n */\n shouldPreventEmojiPicker?: boolean;\n /**\n * The plain text value of the input field. Instead of HTML elements BB codes must be used at\n * this point. These are then converted by the input field into corresponding HTML elements.\n */\n value: string;\n};\n\nexport type EmojiInputRef = {\n insertTextAtCursorPosition: (text: string) => void;\n replaceText: (searchText: string, replaceText: string, options?: ReplaceTextOptions) => void;\n startProgress: (durationInSeconds: number) => void;\n stopProgress: () => void;\n focus: () => void;\n blur: () => void;\n};\n\nconst EmojiInput = forwardRef<EmojiInputRef, EmojiInputProps>(\n (\n {\n accessToken,\n height,\n inputId,\n isDisabled,\n maxHeight = '190px',\n onBlur,\n onFocus,\n onInput,\n onKeyDown,\n onPrefixElementRemove,\n onPopupVisibilityChange,\n personId,\n placeholder,\n popupAlignment,\n prefixElement,\n rightElement,\n shouldHidePlaceholderOnFocus = false,\n shouldPreventEmojiPicker,\n value,\n onCursorPositionChange,\n },\n ref,\n ) => {\n const [isTouch] = useState(getIsTouch());\n const [plainTextValue, setPlainTextValue] = useState(value);\n const [hasFocus, setHasFocus] = useState(false);\n const [progressDuration, setProgressDuration] = useState(0);\n const [labelWidth, setLabelWidth] = useState(0);\n const [isPopupVisible, setIsPopupVisible] = useState(false);\n const [isPrefixAnimationFinished, setIsPrefixAnimationFinished] = useState(!prefixElement);\n const [prefixElementWidth, setPrefixElementWidth] = useState<number | undefined>();\n const [emojiShortNames, setEmojiShortNames] = useState<{ [p: string]: string }>({});\n const [emojiRegShortNames, setEmojiRegShortNames] = useState<RegExp>(/./);\n\n const areaProvider = useContext(AreaContext);\n\n const editorRef = useRef<HTMLDivElement>(null);\n const prefixElementRef = useRef<HTMLDivElement>(null);\n const hasPrefixRendered = useRef(false);\n const hasPrefixChanged = useRef(false);\n const shouldDeleteOneMoreBackwards = useRef(false);\n const shouldDeleteOneMoreForwards = useRef(false);\n\n const valueRef = useRef(value);\n\n useCursorPosition(editorRef, onCursorPositionChange, { isDisabled });\n\n const { browser } = getDevice();\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n useEffect(() => {\n void loadEmojiShortList().then(({ shortNameList, regShortnames }) => {\n setEmojiShortNames(shortNameList);\n setEmojiRegShortNames(regShortnames);\n });\n }, []);\n\n /**\n * This function updates the content of the 'contentEditable' element if the new text is\n * different from the previous content. So this is only true if, for example, a text like \":-)\"\n * has been replaced to the corresponding emoji.\n *\n * When updating the HTML, the current cursor position is saved before replacing the content, so\n * that it can be set again afterward.\n */\n const handleUpdateHTML = useCallback(\n (html: string) => {\n if (!editorRef.current) {\n return;\n }\n\n let newInnerHTML = convertEmojisToUnicode(\n html,\n emojiRegShortNames,\n emojiShortNames,\n );\n\n newInnerHTML = convertTextToHTML(newInnerHTML);\n\n if (newInnerHTML !== editorRef.current.innerHTML) {\n saveSelection(editorRef.current, { shouldIgnoreEmptyTextNodes: true });\n\n editorRef.current.innerHTML = newInnerHTML;\n\n restoreSelection(editorRef.current);\n }\n },\n [emojiRegShortNames, emojiShortNames],\n );\n\n const handleBeforeInput = useCallback(\n (event: FormEvent<HTMLDivElement>) => {\n if (!editorRef.current) {\n return;\n }\n\n if (isDisabled) {\n event.preventDefault();\n event.stopPropagation();\n\n return;\n }\n\n const { data, type } = event.nativeEvent as InputEvent;\n\n if (type === 'textInput' && data && data.includes('\\n')) {\n event.preventDefault();\n event.stopPropagation();\n\n const text = convertEmojisToUnicode(data, emojiRegShortNames, emojiShortNames);\n\n insertTextAtCursorPosition({ editorElement: editorRef.current, text });\n\n const newEvent = new Event('input', { bubbles: true });\n\n editorRef.current.dispatchEvent(newEvent);\n }\n },\n [emojiRegShortNames, emojiShortNames, isDisabled],\n );\n\n /**\n * This function handles the 'input' events of the 'contentEditable' element and also passes the\n * respective event up accordingly if the 'onInput' property is a function.\n */\n const handleInput = useCallback(\n (event: ChangeEvent<HTMLDivElement>) => {\n if (!editorRef.current) {\n return;\n }\n\n if (isDisabled) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n if (shouldDeleteOneMoreBackwards.current) {\n shouldDeleteOneMoreBackwards.current = false;\n shouldDeleteOneMoreForwards.current = false;\n\n event.preventDefault();\n event.stopPropagation();\n\n // Remove content and set cursor to the right position\n insertInvisibleCursorMarker();\n\n return;\n }\n\n if (shouldDeleteOneMoreForwards.current) {\n shouldDeleteOneMoreBackwards.current = false;\n shouldDeleteOneMoreForwards.current = false;\n\n event.preventDefault();\n event.stopPropagation();\n\n // noinspection JSDeprecatedSymbols\n document.execCommand('forwardDelete', false);\n\n return;\n }\n\n handleUpdateHTML(editorRef.current.innerHTML);\n\n const text = convertHTMLToText(editorRef.current.innerHTML);\n\n setPlainTextValue(text);\n\n if (typeof onInput === 'function') {\n onInput(event, text);\n }\n\n insertCursorAtMarker(editorRef);\n },\n [handleUpdateHTML, isDisabled, onInput],\n );\n\n const handleKeyDown = useCallback(\n (event: TmpKeyboardEvent<HTMLDivElement>) => {\n if (isDisabled) {\n event.preventDefault();\n event.stopPropagation();\n\n return;\n }\n\n if (event.key === 'Enter' && isPopupVisible) {\n event.preventDefault();\n\n return;\n }\n\n if (typeof onKeyDown === 'function') {\n onKeyDown(event);\n }\n\n if (event.key === 'Enter' && !event.isPropagationStopped() && editorRef.current) {\n event.preventDefault();\n\n // noinspection JSDeprecatedSymbols\n document.execCommand('insertLineBreak', false);\n }\n\n if (event.key === 'Enter') {\n requestAnimationFrame(() => {\n if (editorRef.current) scrollCursorIntoView(editorRef.current);\n });\n }\n\n if (\n event.key === 'Backspace' ||\n event.key === 'Delete' ||\n event.key === 'Unidentified'\n ) {\n const charCodeThatWillBeDeleted = getCharCodeThatWillBeDeleted(event);\n\n if (charCodeThatWillBeDeleted === 8203) {\n if (event.key === 'Backspace' || event.key === 'Unidentified') {\n shouldDeleteOneMoreBackwards.current = true;\n } else {\n shouldDeleteOneMoreForwards.current = true;\n }\n }\n }\n },\n [isDisabled, isPopupVisible, onKeyDown],\n );\n\n const handlePopupVisibility = useCallback(\n (isVisible: boolean) => {\n setIsPopupVisible(isVisible);\n\n if (editorRef.current && isVisible) {\n saveSelection(editorRef.current);\n }\n\n if (typeof onPopupVisibilityChange === 'function') {\n onPopupVisibilityChange(isVisible);\n }\n },\n [onPopupVisibilityChange],\n );\n\n /**\n * This function prevents formatting from being adopted when texts are inserted. To do this, the\n * plain text is read from the event after the default behavior has been prevented. The plain\n * text is then inserted at the correct position in the input field using document.execCommand('insertHTML')\n */\n const handlePaste = useCallback(\n (event: ClipboardEvent<HTMLDivElement>) => {\n if (editorRef.current) {\n event.preventDefault();\n\n if (isDisabled) {\n event.stopPropagation();\n\n return;\n }\n\n // This ensures, that only the copied text is inserted and not its HTML formatting.\n let text = event.clipboardData.getData('text/plain');\n\n text = convertEmojisToUnicode(text, emojiRegShortNames, emojiShortNames);\n\n /* This ensures, that valid HTML in the inserted text is not interpreted as such. e.g. if the user\n pasted the text '<b>test</b>' (not as formatted html), the <b> tags need to be escaped, to\n prevent it from being interpreted as html. */\n text = escapeHTML(text);\n\n // Insert an invisible control character at the end of the text to place the cursor in the correct position after insertion.\n if (text.includes('\\n')) {\n text += '\\u200C';\n }\n\n // This deprecated function is used, because it causes the inserted content to be added to the undo stack.\n // If the text were to be inserted directly into the 'innerHTML' of the editor element, the undo stack would not be updated.\n // In that case on CTRL+Z the inserted text would not be removed.\n document.execCommand('insertHTML', false, text);\n\n const newEvent = new Event('input', { bubbles: true });\n\n editorRef.current.dispatchEvent(newEvent);\n }\n },\n [emojiRegShortNames, emojiShortNames, isDisabled],\n );\n\n /**\n * This function prevents formatting from being adopted when texts are dropped. To do this, the\n * plain text is read from the event after the default behavior has been prevented. The plain\n * text is then inserted at the correct position in the input field using document.execCommand('insertHTML')\n */\n const handleDrop = useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n if (editorRef.current) {\n event.preventDefault();\n\n if (isDisabled) {\n event.stopPropagation();\n\n return;\n }\n\n // This ensures, that only the dropped text is inserted and not its HTML formatting.\n let text = event.dataTransfer?.getData('text');\n\n if (!text) {\n return;\n }\n\n text = convertEmojisToUnicode(text, emojiRegShortNames, emojiShortNames);\n\n /* This ensures, that valid HTML in the inserted text is not interpreted as such. e.g. if the user\n drops the text '<b>test</b>' (not as formatted html), the <b> tags need to be escaped, to\n prevent it from being interpreted as html. */\n text = escapeHTML(text);\n\n // This deprecated function is used, because it causes the inserted content to be added to the undo stack.\n // If the text were to be inserted directly into the 'innerHTML' of the editor element, the undo stack would not be updated.\n // In that case on CTRL+Z the inserted text would not be removed.\n document.execCommand('insertHTML', false, text);\n\n const newEvent = new Event('input', { bubbles: true });\n\n editorRef.current.dispatchEvent(newEvent);\n }\n },\n [emojiRegShortNames, emojiShortNames, isDisabled],\n );\n\n /**\n * This function uses the 'insertTextAtCursorPosition' function to insert the emoji at the\n * correct position in the editor element.\n *\n * At the end an 'input' event is dispatched, so that the function 'handleInput' is triggered,\n * which in turn executes the 'onInput' function from the props. So this serves to ensure that\n * the event is also passed through to the top when inserting via the popup.\n */\n const handlePopupSelect = useCallback((emoji: string) => {\n if (editorRef.current) {\n insertTextAtCursorPosition({\n editorElement: editorRef.current,\n text: emoji,\n shouldUseSavedSelection: true,\n });\n\n const event = new Event('input', { bubbles: true });\n\n editorRef.current.dispatchEvent(event);\n }\n }, []);\n\n useEffect(() => {\n if (typeof onPrefixElementRemove !== 'function') {\n return;\n }\n\n if (!hasPrefixRendered.current) {\n return;\n }\n\n const convertedText = convertHTMLToText(editorRef.current?.innerHTML ?? '').replace(\n ' ',\n ' ',\n );\n const convertedPrefix = prefixElement && prefixElement.replace(' ', ' ');\n\n if (\n (convertedPrefix &&\n convertedText.includes(convertedPrefix) &&\n convertedText.length > convertedPrefix.length) ||\n convertedPrefix === convertedText\n ) {\n return;\n }\n\n if (hasPrefixChanged.current) {\n hasPrefixChanged.current = false;\n\n return;\n }\n\n onPrefixElementRemove();\n hasPrefixRendered.current = false;\n }, [onPrefixElementRemove, plainTextValue.length, prefixElement]);\n\n useEffect(() => {\n if (typeof prefixElement === 'string') {\n hasPrefixChanged.current = true;\n }\n }, [prefixElement]);\n\n useEffect(() => {\n if (value !== plainTextValue) {\n setPlainTextValue(value);\n\n handleUpdateHTML(value);\n }\n }, [handleUpdateHTML, plainTextValue, value]);\n\n // This effect is used to call the 'handleUpdateHTML' function once after the component has been\n // rendered. This is necessary because the 'contentEditable' element otherwise does not display\n // the HTML content correctly when the component is rendered for the first time.\n useIsomorphicLayoutEffect(() => {\n handleUpdateHTML(valueRef.current);\n }, [handleUpdateHTML]);\n\n const handleInsertTextAtCursorPosition = useCallback((text: string) => {\n if (editorRef.current) {\n insertTextAtCursorPosition({ editorElement: editorRef.current, text });\n\n const newEvent = new Event('input', { bubbles: true });\n\n editorRef.current.dispatchEvent(newEvent);\n }\n }, []);\n\n const handleReplaceText = useCallback(\n (searchText: string, pasteText: string, options?: ReplaceTextOptions) => {\n if (editorRef.current) {\n replaceText({\n editorElement: editorRef.current,\n searchText,\n pasteText,\n options,\n });\n\n insertPseudoMarker();\n\n const newEvent = new Event('input', { bubbles: true });\n\n editorRef.current.dispatchEvent(newEvent);\n }\n },\n [],\n );\n\n const handleStartProgress = useCallback((duration: number) => {\n setProgressDuration(duration);\n }, []);\n\n const handleStopProgress = useCallback(() => {\n setProgressDuration(0);\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n insertTextAtCursorPosition: handleInsertTextAtCursorPosition,\n replaceText: handleReplaceText,\n startProgress: handleStartProgress,\n stopProgress: handleStopProgress,\n focus: () => editorRef.current?.focus(),\n blur: () => editorRef.current?.blur(),\n }),\n [\n handleInsertTextAtCursorPosition,\n handleReplaceText,\n handleStartProgress,\n handleStopProgress,\n ],\n );\n\n useEffect(() => {\n /**\n * This function ensures that the input field does not lose focus when the popup is opened\n * or an emoji is selected in it. For this purpose the corresponding elements get the class\n * 'prevent-lose-focus'.\n *\n * The class can also be set to any other elements that should also not cause the input\n * field to lose focus.\n */\n const handlePreventLoseFocus = (event: MouseEvent) => {\n const element = event.target as Element;\n\n if (\n element.classList.contains('prevent-lose-focus') ||\n element.parentElement?.classList.contains('prevent-lose-focus') ||\n element.parentElement?.parentElement?.classList.contains('prevent-lose-focus')\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n document.body.addEventListener('mousedown', handlePreventLoseFocus);\n\n return () => {\n document.body.removeEventListener('mousedown', handlePreventLoseFocus);\n };\n }, []);\n\n const shouldShowPlaceholder = useMemo(() => {\n if (!isPrefixAnimationFinished) {\n return false;\n }\n\n const isJustPrefixElement =\n prefixElement && convertTextToHTML(prefixElement) === editorRef.current?.innerHTML;\n\n const shouldRenderPlaceholder =\n (prefixElement && !plainTextValue) ||\n (prefixElement ? prefixElementWidth && prefixElementWidth > 0 : true);\n\n switch (true) {\n case (!plainTextValue || isJustPrefixElement) &&\n shouldHidePlaceholderOnFocus &&\n !hasFocus:\n case (!plainTextValue || isJustPrefixElement) && !shouldHidePlaceholderOnFocus:\n return shouldRenderPlaceholder;\n case (!plainTextValue || isJustPrefixElement) &&\n shouldHidePlaceholderOnFocus &&\n hasFocus:\n return false;\n default:\n return false;\n }\n }, [\n isPrefixAnimationFinished,\n hasFocus,\n plainTextValue,\n prefixElement,\n shouldHidePlaceholderOnFocus,\n prefixElementWidth,\n ]);\n\n useEffect(() => {\n if (prefixElement) {\n setIsPrefixAnimationFinished(false);\n }\n }, [prefixElement]);\n\n const handleFocus = (event: FocusEvent<HTMLDivElement>) => {\n if (typeof onFocus === 'function' && !isDisabled) {\n onFocus(event);\n }\n\n setHasFocus(true);\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n if (typeof onBlur === 'function' && !isDisabled) {\n onBlur(event);\n }\n\n setHasFocus(false);\n };\n\n useEffect(() => {\n if (editorRef.current && prefixElement) {\n const text = convertEmojisToUnicode(\n prefixElement,\n emojiRegShortNames,\n emojiShortNames,\n );\n\n insertTextAtCursorPosition({ editorElement: editorRef.current, text });\n\n handleUpdateHTML(prefixElement);\n hasPrefixRendered.current = true;\n }\n }, [emojiRegShortNames, emojiShortNames, handleUpdateHTML, prefixElement]);\n\n useEffect(() => {\n if (\n prefixElementRef.current &&\n prefixElement &&\n convertTextToHTML(prefixElement) === editorRef.current?.innerHTML\n ) {\n setPrefixElementWidth(prefixElementRef.current.offsetWidth + 2);\n } else {\n setPrefixElementWidth(undefined);\n }\n }, [plainTextValue, prefixElement]);\n\n useEffect(() => {\n const handleResize = () => {\n if (editorRef.current) {\n setLabelWidth(editorRef.current.offsetWidth);\n }\n };\n\n const resizeObserver = new ResizeObserver(handleResize);\n\n if (editorRef.current) {\n resizeObserver.observe(editorRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n useEffect(() => {\n const blurElement = () => {\n if (\n editorRef.current &&\n document.activeElement === editorRef.current &&\n isDisabled\n ) {\n editorRef.current.blur();\n }\n };\n\n document.addEventListener('focus', blurElement, true);\n\n return () => {\n document.removeEventListener('focus', blurElement, true);\n };\n }, [isDisabled]);\n\n return (\n <StyledEmojiInput $isDisabled={isDisabled} $shouldChangeColor={shouldChangeColor}>\n <AnimatePresence initial>\n {progressDuration > 0 && (\n <StyledMotionEmojiInputProgress\n animate={{ width: '100%' }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 1, width: '0%' }}\n transition={{\n width: {\n ease: 'linear',\n duration: progressDuration,\n },\n opacity: {\n type: 'tween',\n duration: 0.3,\n },\n }}\n />\n )}\n </AnimatePresence>\n <StyledEmojiInputContent>\n {prefixElement && (\n <PrefixElement\n key={prefixElement}\n element={prefixElement}\n prefixElementRef={prefixElementRef}\n setIsPrefixAnimationFinished={setIsPrefixAnimationFinished}\n />\n )}\n <StyledMotionEmojiInputEditor\n $browser={browser?.name as BrowserName}\n animate={{ maxHeight: height ?? maxHeight, minHeight: height ?? '26px' }}\n contentEditable\n id={inputId}\n onBeforeInput={handleBeforeInput}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n onDrop={handleDrop}\n ref={editorRef}\n $shouldShowContent={isPrefixAnimationFinished}\n transition={{ type: 'tween', duration: 0.2 }}\n />\n\n {shouldShowPlaceholder && (\n <StyledEmojiInputLabel\n $maxWidth={labelWidth}\n $offsetWidth={prefixElementWidth}\n >\n {placeholder}\n </StyledEmojiInputLabel>\n )}\n {!isTouch && !shouldPreventEmojiPicker && (\n <EmojiPickerPopup\n accessToken={accessToken}\n onSelect={handlePopupSelect}\n onPopupVisibilityChange={handlePopupVisibility}\n personId={personId}\n />\n )}\n </StyledEmojiInputContent>\n {rightElement && (\n <StyledEmojiInputRightWrapper>{rightElement}</StyledEmojiInputRightWrapper>\n )}\n </StyledEmojiInput>\n );\n },\n);\n\nEmojiInput.displayName = 'EmojiInput';\n\nexport default EmojiInput;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StyledMotionEmojiInputProgress = exports.StyledMotionEmojiInputEditor = exports.StyledEmojiInputRightWrapper = exports.StyledEmojiInputLabel = exports.StyledEmojiInputContent = exports.StyledEmojiInput = void 0;
|
|
7
|
+
var _react = require("motion/react");
|
|
8
|
+
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
9
|
+
var _font = require("../../utils/font");
|
|
10
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
11
|
+
const StyledEmojiInput = exports.StyledEmojiInput = _styledComponents.default.div`
|
|
12
|
+
align-items: center;
|
|
13
|
+
background-color: ${({
|
|
14
|
+
theme,
|
|
15
|
+
$shouldChangeColor
|
|
16
|
+
}) => theme.colorMode === 'classic' || $shouldChangeColor ? theme['000'] : theme['100']};
|
|
17
|
+
border-radius: 3px;
|
|
18
|
+
display: flex;
|
|
19
|
+
border: 1px solid rgba(160, 160, 160, 0.3);
|
|
20
|
+
min-height: 42px;
|
|
21
|
+
opacity: ${({
|
|
22
|
+
$isDisabled
|
|
23
|
+
}) => $isDisabled ? 0.5 : 1};
|
|
24
|
+
pointer-events: ${({
|
|
25
|
+
$isDisabled
|
|
26
|
+
}) => $isDisabled ? 'none' : 'initial'};
|
|
27
|
+
position: relative;
|
|
28
|
+
transition: opacity 0.3s ease;
|
|
29
|
+
`;
|
|
30
|
+
const StyledMotionEmojiInputProgress = exports.StyledMotionEmojiInputProgress = (0, _styledComponents.default)(_react.motion.div)`
|
|
31
|
+
background-color: ${({
|
|
32
|
+
theme
|
|
33
|
+
}) => theme['402']};
|
|
34
|
+
height: 100%;
|
|
35
|
+
position: absolute;
|
|
36
|
+
z-index: 2;
|
|
37
|
+
border-radius: 3px;
|
|
38
|
+
`;
|
|
39
|
+
const StyledEmojiInputContent = exports.StyledEmojiInputContent = _styledComponents.default.div`
|
|
40
|
+
align-items: end;
|
|
41
|
+
border-radius: 3px;
|
|
42
|
+
display: flex;
|
|
43
|
+
flex: 1 1 auto;
|
|
44
|
+
gap: 10px;
|
|
45
|
+
padding: 8px 10px;
|
|
46
|
+
z-index: 3;
|
|
47
|
+
`;
|
|
48
|
+
const StyledMotionEmojiInputEditor = exports.StyledMotionEmojiInputEditor = (0, _styledComponents.default)(_react.motion.div)`
|
|
49
|
+
color: ${({
|
|
50
|
+
theme,
|
|
51
|
+
$shouldShowContent
|
|
52
|
+
}) => $shouldShowContent ? theme.text : theme['100']};
|
|
53
|
+
flex: 1 1 auto;
|
|
54
|
+
font-family: ${_font.getFontFamily};
|
|
55
|
+
overflow-y: scroll;
|
|
56
|
+
overflow-x: hidden;
|
|
57
|
+
word-break: break-word;
|
|
58
|
+
|
|
59
|
+
// This fixes a bug where the field is not editable in certain browsers.
|
|
60
|
+
// This is for example the case on iOS 15 or older.
|
|
61
|
+
-webkit-user-modify: read-write;
|
|
62
|
+
-webkit-user-select: text;
|
|
63
|
+
|
|
64
|
+
lc_mention,
|
|
65
|
+
nerIgnore,
|
|
66
|
+
nerReplace {
|
|
67
|
+
font-weight: bold;
|
|
68
|
+
|
|
69
|
+
span {
|
|
70
|
+
opacity: 0.5;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Styles for custom scrollbar
|
|
75
|
+
${({
|
|
76
|
+
$browser,
|
|
77
|
+
theme
|
|
78
|
+
}) => $browser === 'firefox' ? (0, _styledComponents.css)`
|
|
79
|
+
scrollbar-color: rgba(${theme['text-rgb']}, 0.15) transparent;
|
|
80
|
+
scrollbar-width: thin;
|
|
81
|
+
` : (0, _styledComponents.css)`
|
|
82
|
+
&::-webkit-scrollbar {
|
|
83
|
+
width: 5px;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
&::-webkit-scrollbar-track {
|
|
87
|
+
background-color: transparent;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
&::-webkit-scrollbar-button {
|
|
91
|
+
background-color: transparent;
|
|
92
|
+
height: 5px;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
&::-webkit-scrollbar-thumb {
|
|
96
|
+
background-color: rgba(${theme['text-rgb']}, 0.15);
|
|
97
|
+
border-radius: 20px;
|
|
98
|
+
}
|
|
99
|
+
`}
|
|
100
|
+
`;
|
|
101
|
+
const StyledEmojiInputRightWrapper = exports.StyledEmojiInputRightWrapper = _styledComponents.default.div`
|
|
102
|
+
align-self: stretch;
|
|
103
|
+
border-bottom-right-radius: 3px;
|
|
104
|
+
border-top-right-radius: 3px;
|
|
105
|
+
flex: 0 0 auto;
|
|
106
|
+
overflow: hidden;
|
|
107
|
+
`;
|
|
108
|
+
const StyledEmojiInputLabel = exports.StyledEmojiInputLabel = _styledComponents.default.label`
|
|
109
|
+
color: rgba(${({
|
|
110
|
+
theme
|
|
111
|
+
}) => theme['text-rgb']}, 0.45);
|
|
112
|
+
left: ${({
|
|
113
|
+
$offsetWidth
|
|
114
|
+
}) => $offsetWidth ? `${$offsetWidth + 10}px` : '10px'};
|
|
115
|
+
top: 12px;
|
|
116
|
+
align-items: baseline;
|
|
117
|
+
display: flex;
|
|
118
|
+
flex: 0 0 auto;
|
|
119
|
+
gap: 4px;
|
|
120
|
+
line-height: 1.3;
|
|
121
|
+
pointer-events: none;
|
|
122
|
+
position: absolute;
|
|
123
|
+
user-select: none;
|
|
124
|
+
white-space: nowrap;
|
|
125
|
+
max-width: ${({
|
|
126
|
+
$maxWidth,
|
|
127
|
+
$offsetWidth
|
|
128
|
+
}) => `${$maxWidth - ($offsetWidth ?? 0)}px`};
|
|
129
|
+
overflow: hidden;
|
|
130
|
+
`;
|
|
131
|
+
//# sourceMappingURL=EmojiInput.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmojiInput.styles.js","names":["_react","require","_styledComponents","_interopRequireWildcard","_font","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","StyledEmojiInput","exports","styled","div","theme","$shouldChangeColor","colorMode","$isDisabled","StyledMotionEmojiInputProgress","motion","StyledEmojiInputContent","StyledMotionEmojiInputEditor","$shouldShowContent","text","getFontFamily","$browser","css","StyledEmojiInputRightWrapper","StyledEmojiInputLabel","label","$offsetWidth","$maxWidth"],"sources":["../../../../src/components/emoji-input/EmojiInput.styles.ts"],"sourcesContent":["import type { BrowserName, WithTheme } from '@chayns-components/core';\nimport { motion } from 'motion/react';\nimport styled, { css } from 'styled-components';\nimport { getFontFamily } from '../../utils/font';\n\ntype StyledEmojiInputProps = WithTheme<{ $isDisabled?: boolean; $shouldChangeColor: boolean }>;\n\nexport const StyledEmojiInput = styled.div<StyledEmojiInputProps>`\n align-items: center;\n background-color: ${({ theme, $shouldChangeColor }: StyledEmojiInputProps) =>\n theme.colorMode === 'classic' || $shouldChangeColor ? theme['000'] : theme['100']};\n border-radius: 3px;\n display: flex;\n border: 1px solid rgba(160, 160, 160, 0.3);\n min-height: 42px;\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n pointer-events: ${({ $isDisabled }) => ($isDisabled ? 'none' : 'initial')};\n position: relative;\n transition: opacity 0.3s ease;\n`;\n\ntype StyledMotionEmojiInputProgressProps = WithTheme<unknown>;\n\nexport const StyledMotionEmojiInputProgress = styled(\n motion.div,\n)<StyledMotionEmojiInputProgressProps>`\n background-color: ${({ theme }: StyledMotionEmojiInputProgressProps) => theme['402']};\n height: 100%;\n position: absolute;\n z-index: 2;\n border-radius: 3px;\n`;\n\nexport const StyledEmojiInputContent = styled.div`\n align-items: end;\n border-radius: 3px;\n display: flex;\n flex: 1 1 auto;\n gap: 10px;\n padding: 8px 10px;\n z-index: 3;\n`;\n\ntype StyledEmojiInputEditorProps = WithTheme<{\n $shouldShowContent: boolean;\n $browser: BrowserName;\n}>;\n\nexport const StyledMotionEmojiInputEditor = styled(motion.div)<StyledEmojiInputEditorProps>`\n color: ${({ theme, $shouldShowContent }: StyledEmojiInputEditorProps) =>\n $shouldShowContent ? theme.text : theme['100']};\n flex: 1 1 auto;\n font-family: ${getFontFamily};\n overflow-y: scroll;\n overflow-x: hidden;\n word-break: break-word;\n\n // This fixes a bug where the field is not editable in certain browsers.\n // This is for example the case on iOS 15 or older.\n -webkit-user-modify: read-write;\n -webkit-user-select: text;\n\n lc_mention,\n nerIgnore,\n nerReplace {\n font-weight: bold;\n\n span {\n opacity: 0.5;\n }\n }\n\n // Styles for custom scrollbar\n ${({ $browser, theme }: StyledEmojiInputEditorProps) =>\n $browser === 'firefox'\n ? css`\n scrollbar-color: rgba(${theme['text-rgb']}, 0.15) transparent;\n scrollbar-width: thin;\n `\n : css`\n &::-webkit-scrollbar {\n width: 5px;\n }\n\n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n\n &::-webkit-scrollbar-button {\n background-color: transparent;\n height: 5px;\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: rgba(${theme['text-rgb']}, 0.15);\n border-radius: 20px;\n }\n `}\n`;\n\nexport const StyledEmojiInputRightWrapper = styled.div`\n align-self: stretch;\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n flex: 0 0 auto;\n overflow: hidden;\n`;\n\ntype StyledEmojiInputLabelProps = WithTheme<{\n $maxWidth: number;\n $offsetWidth?: number;\n}>;\n\nexport const StyledEmojiInputLabel = styled.label<StyledEmojiInputLabelProps>`\n color: rgba(${({ theme }: StyledEmojiInputLabelProps) => theme['text-rgb']}, 0.45);\n left: ${({ $offsetWidth }) => ($offsetWidth ? `${$offsetWidth + 10}px` : '10px')};\n top: 12px;\n align-items: baseline;\n display: flex;\n flex: 0 0 auto;\n gap: 4px;\n line-height: 1.3;\n pointer-events: none;\n position: absolute;\n user-select: none;\n white-space: nowrap;\n max-width: ${({ $maxWidth, $offsetWidth }) => `${$maxWidth - ($offsetWidth ?? 0)}px`};\n overflow: hidden;\n`;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _text = require("../../../utils/text");
|
|
9
|
+
var _PrefixElement = require("./PrefixElement.styles");
|
|
10
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
11
|
+
const PrefixElement = ({
|
|
12
|
+
prefixElementRef,
|
|
13
|
+
element,
|
|
14
|
+
setIsPrefixAnimationFinished
|
|
15
|
+
}) => {
|
|
16
|
+
const [shouldShow, setShouldShow] = (0, _react.useState)(true);
|
|
17
|
+
const [prefixText, setPrefixText] = (0, _react.useState)('');
|
|
18
|
+
(0, _react.useEffect)(() => {
|
|
19
|
+
if (prefixElementRef.current) {
|
|
20
|
+
setPrefixText(prefixElementRef.current.textContent ?? '');
|
|
21
|
+
}
|
|
22
|
+
}, [prefixElementRef]);
|
|
23
|
+
const handleAnimationEnd = (0, _react.useCallback)(index => {
|
|
24
|
+
if (index === prefixText.length - 1) {
|
|
25
|
+
setShouldShow(false);
|
|
26
|
+
setIsPrefixAnimationFinished(true);
|
|
27
|
+
}
|
|
28
|
+
}, [prefixText.length, setIsPrefixAnimationFinished]);
|
|
29
|
+
const content = (0, _react.useMemo)(() => prefixText.split('').map((letter, index) => /*#__PURE__*/_react.default.createElement(_PrefixElement.StyledPrefixElementLetter, {
|
|
30
|
+
onAnimationEnd: () => handleAnimationEnd(index),
|
|
31
|
+
$index: index
|
|
32
|
+
}, letter)), [handleAnimationEnd, prefixText]);
|
|
33
|
+
return /*#__PURE__*/_react.default.createElement(_PrefixElement.StyledPrefixElement, {
|
|
34
|
+
$shouldShow: shouldShow
|
|
35
|
+
}, /*#__PURE__*/_react.default.createElement(_PrefixElement.StyledPrefixElementPseudo, {
|
|
36
|
+
ref: prefixElementRef,
|
|
37
|
+
dangerouslySetInnerHTML: {
|
|
38
|
+
__html: (0, _text.convertTextToHTML)(element)
|
|
39
|
+
}
|
|
40
|
+
}), shouldShow && /*#__PURE__*/_react.default.createElement(_PrefixElement.StyledPrefixElementLetterWrapper, null, content));
|
|
41
|
+
};
|
|
42
|
+
PrefixElement.displayName = 'PrefixElement';
|
|
43
|
+
var _default = exports.default = PrefixElement;
|
|
44
|
+
//# sourceMappingURL=PrefixElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrefixElement.js","names":["_react","_interopRequireWildcard","require","_text","_PrefixElement","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","PrefixElement","prefixElementRef","element","setIsPrefixAnimationFinished","shouldShow","setShouldShow","useState","prefixText","setPrefixText","useEffect","current","textContent","handleAnimationEnd","useCallback","index","length","content","useMemo","split","map","letter","createElement","StyledPrefixElementLetter","onAnimationEnd","$index","StyledPrefixElement","$shouldShow","StyledPrefixElementPseudo","ref","dangerouslySetInnerHTML","__html","convertTextToHTML","StyledPrefixElementLetterWrapper","displayName","_default","exports"],"sources":["../../../../../src/components/emoji-input/prefix-element/PrefixElement.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useState,\n type Dispatch,\n type FC,\n type RefObject,\n type SetStateAction,\n} from 'react';\nimport { convertTextToHTML } from '../../../utils/text';\nimport {\n StyledPrefixElement,\n StyledPrefixElementLetter,\n StyledPrefixElementLetterWrapper,\n StyledPrefixElementPseudo,\n} from './PrefixElement.styles';\n\nexport type PrefixElementProps = {\n prefixElementRef: RefObject<HTMLDivElement>;\n element: string;\n setIsPrefixAnimationFinished: Dispatch<SetStateAction<boolean>>;\n};\n\nconst PrefixElement: FC<PrefixElementProps> = ({\n prefixElementRef,\n element,\n setIsPrefixAnimationFinished,\n}) => {\n const [shouldShow, setShouldShow] = useState(true);\n const [prefixText, setPrefixText] = useState('');\n\n useEffect(() => {\n if (prefixElementRef.current) {\n setPrefixText(prefixElementRef.current.textContent ?? '');\n }\n }, [prefixElementRef]);\n\n const handleAnimationEnd = useCallback(\n (index: number) => {\n if (index === prefixText.length - 1) {\n setShouldShow(false);\n setIsPrefixAnimationFinished(true);\n }\n },\n [prefixText.length, setIsPrefixAnimationFinished],\n );\n\n const content = useMemo(\n () =>\n prefixText.split('').map((letter, index) => (\n <StyledPrefixElementLetter\n onAnimationEnd={() => handleAnimationEnd(index)}\n $index={index}\n >\n {letter}\n </StyledPrefixElementLetter>\n )),\n [handleAnimationEnd, prefixText],\n );\n\n return (\n <StyledPrefixElement $shouldShow={shouldShow}>\n <StyledPrefixElementPseudo\n ref={prefixElementRef}\n dangerouslySetInnerHTML={{ __html: convertTextToHTML(element) }}\n />\n {shouldShow && (\n <StyledPrefixElementLetterWrapper>{content}</StyledPrefixElementLetterWrapper>\n )}\n </StyledPrefixElement>\n );\n};\n\nPrefixElement.displayName = 'PrefixElement';\n\nexport default PrefixElement;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StyledPrefixElementPseudo = exports.StyledPrefixElementLetterWrapper = exports.StyledPrefixElementLetter = exports.StyledPrefixElement = void 0;
|
|
7
|
+
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
8
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
9
|
+
const StyledPrefixElement = exports.StyledPrefixElement = _styledComponents.default.div`
|
|
10
|
+
position: absolute;
|
|
11
|
+
`;
|
|
12
|
+
const StyledPrefixElementPseudo = exports.StyledPrefixElementPseudo = _styledComponents.default.div`
|
|
13
|
+
visibility: hidden;
|
|
14
|
+
`;
|
|
15
|
+
const StyledPrefixElementLetterWrapper = exports.StyledPrefixElementLetterWrapper = _styledComponents.default.div`
|
|
16
|
+
transform: translateY(-2px);
|
|
17
|
+
`;
|
|
18
|
+
const waviy = (0, _styledComponents.keyframes)`
|
|
19
|
+
0%, 40% {
|
|
20
|
+
background: linear-gradient(to right, rgb(15, 109, 126), rgb(15, 109, 126), rgb(115, 190, 204), rgb(15, 109, 126));
|
|
21
|
+
background-clip: text;
|
|
22
|
+
transform: translateY(0) scale(1);
|
|
23
|
+
opacity: 1;
|
|
24
|
+
}
|
|
25
|
+
20% {
|
|
26
|
+
transform: translateY(-2px) scale(1.2);
|
|
27
|
+
opacity: 1;
|
|
28
|
+
}
|
|
29
|
+
100% {
|
|
30
|
+
-webkit-text-fill-color: ${({
|
|
31
|
+
theme
|
|
32
|
+
}) => theme.text};
|
|
33
|
+
transform: translateY(0) scale(1);
|
|
34
|
+
opacity: 1;
|
|
35
|
+
}
|
|
36
|
+
`;
|
|
37
|
+
const backgroundPan = (0, _styledComponents.keyframes)`
|
|
38
|
+
0% {
|
|
39
|
+
background-position: 0 center;
|
|
40
|
+
}
|
|
41
|
+
100% {
|
|
42
|
+
background-position: -200% center;
|
|
43
|
+
}
|
|
44
|
+
`;
|
|
45
|
+
const StyledPrefixElementLetter = exports.StyledPrefixElementLetter = _styledComponents.default.span`
|
|
46
|
+
background-clip: text;
|
|
47
|
+
-webkit-text-fill-color: transparent;
|
|
48
|
+
background-color: ${({
|
|
49
|
+
theme
|
|
50
|
+
}) => theme.text};
|
|
51
|
+
opacity: 0;
|
|
52
|
+
|
|
53
|
+
animation:
|
|
54
|
+
${waviy} 0.4s forwards,
|
|
55
|
+
${backgroundPan} 0.1s linear infinite;
|
|
56
|
+
animation-delay: calc(0.03s * ${({
|
|
57
|
+
$index
|
|
58
|
+
}) => $index});
|
|
59
|
+
|
|
60
|
+
font-weight: ${({
|
|
61
|
+
$index
|
|
62
|
+
}) => $index > 0 ? 'bold' : 'normal'};
|
|
63
|
+
`;
|
|
64
|
+
//# sourceMappingURL=PrefixElement.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrefixElement.styles.js","names":["_styledComponents","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","StyledPrefixElement","exports","styled","div","StyledPrefixElementPseudo","StyledPrefixElementLetterWrapper","waviy","keyframes","theme","text","backgroundPan","StyledPrefixElementLetter","span","$index"],"sources":["../../../../../src/components/emoji-input/prefix-element/PrefixElement.styles.ts"],"sourcesContent":["import type { WithTheme } from '@chayns-components/core';\nimport styled, { keyframes } from 'styled-components';\n\ntype StyledPrefixElementProps = WithTheme<{\n $shouldShow: boolean;\n}>;\n\nexport const StyledPrefixElement = styled.div<StyledPrefixElementProps>`\n position: absolute;\n`;\n\nexport const StyledPrefixElementPseudo = styled.div`\n visibility: hidden;\n`;\n\nexport const StyledPrefixElementLetterWrapper = styled.div`\n transform: translateY(-2px);\n`;\n\ntype StyledPrefixElementLetterProps = WithTheme<{\n $index: number;\n}>;\n\nconst waviy = keyframes`\n 0%, 40% {\n background: linear-gradient(to right, rgb(15, 109, 126), rgb(15, 109, 126), rgb(115, 190, 204), rgb(15, 109, 126));\n background-clip: text;\n transform: translateY(0) scale(1);\n opacity: 1;\n }\n 20% {\n transform: translateY(-2px) scale(1.2);\n opacity: 1;\n }\n 100% {\n -webkit-text-fill-color: ${({ theme }: WithTheme<unknown>) => theme.text};\n transform: translateY(0) scale(1);\n opacity: 1;\n }\n`;\n\nconst backgroundPan = keyframes`\n 0% {\n background-position: 0 center;\n }\n 100% {\n background-position: -200% center;\n }\n`;\n\nexport const StyledPrefixElementLetter = styled.span<StyledPrefixElementLetterProps>`\n background-clip: text;\n -webkit-text-fill-color: transparent;\n background-color: ${({ theme }: StyledPrefixElementLetterProps) => theme.text};\n opacity: 0;\n\n animation:\n ${waviy} 0.4s forwards,\n ${backgroundPan} 0.1s linear infinite;\n animation-delay: calc(0.03s * ${({ $index }) => $index});\n\n font-weight: ${({ $index }) => ($index > 0 ? 'bold' : 'normal')};\n`;\n"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAsD,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAM/C,MAAMkB,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAGE,yBAAM,CAACC,GAA6B;AACvE;AACA,CAAC;AAEM,MAAMC,yBAAyB,GAAAH,OAAA,CAAAG,yBAAA,GAAGF,yBAAM,CAACC,GAAG;AACnD;AACA,CAAC;AAEM,MAAME,gCAAgC,GAAAJ,OAAA,CAAAI,gCAAA,GAAGH,yBAAM,CAACC,GAAG;AAC1D;AACA,CAAC;AAMD,MAAMG,KAAK,GAAG,IAAAC,2BAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,CAAC;EAAEC;AAA0B,CAAC,KAAKA,KAAK,CAACC,IAAI;AAChF;AACA;AACA;AACA,CAAC;AAED,MAAMC,aAAa,GAAG,IAAAH,2BAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAEM,MAAMI,yBAAyB,GAAAV,OAAA,CAAAU,yBAAA,GAAGT,yBAAM,CAACU,IAAoC;AACpF;AACA;AACA,wBAAwB,CAAC;EAAEJ;AAAsC,CAAC,KAAKA,KAAK,CAACC,IAAI;AACjF;AACA;AACA;AACA,UAAUH,KAAK;AACf,UAAUI,aAAa;AACvB,oCAAoC,CAAC;EAAEG;AAAO,CAAC,KAAKA,MAAM;AAC1D;AACA,mBAAmB,CAAC;EAAEA;AAAO,CAAC,KAAMA,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,QAAS;AACnE,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _core = require("@chayns-components/core");
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _EmojiPickerCategories = _interopRequireDefault(require("./emoji-picker-categories/EmojiPickerCategories"));
|
|
10
|
+
var _EmojiPickerEmojis = _interopRequireDefault(require("./emoji-picker-emojis/EmojiPickerEmojis"));
|
|
11
|
+
var _EmojiPicker = require("./EmojiPicker.styles");
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
const FirstEmojiSlug = 'smileys_emotion';
|
|
15
|
+
const EmojiPicker = ({
|
|
16
|
+
accessToken,
|
|
17
|
+
onSelect,
|
|
18
|
+
personId
|
|
19
|
+
}) => {
|
|
20
|
+
const [searchString, setSearchString] = (0, _react.useState)('');
|
|
21
|
+
const [selectedCategory, setSelectedCategory] = (0, _react.useState)(FirstEmojiSlug);
|
|
22
|
+
const handleCategorySelect = (0, _react.useCallback)(category => {
|
|
23
|
+
setSearchString('');
|
|
24
|
+
setSelectedCategory(category);
|
|
25
|
+
}, []);
|
|
26
|
+
const handleSearchChange = (0, _react.useCallback)(event => {
|
|
27
|
+
setSearchString(event.target.value);
|
|
28
|
+
}, []);
|
|
29
|
+
return /*#__PURE__*/_react.default.createElement(_EmojiPicker.StyledEmojiPicker, null, /*#__PURE__*/_react.default.createElement(_core.Input, {
|
|
30
|
+
onChange: handleSearchChange,
|
|
31
|
+
placeholder: "Suchen",
|
|
32
|
+
value: searchString
|
|
33
|
+
}), /*#__PURE__*/_react.default.createElement(_EmojiPickerEmojis.default, {
|
|
34
|
+
accessToken: accessToken,
|
|
35
|
+
onSelect: onSelect,
|
|
36
|
+
personId: personId,
|
|
37
|
+
searchString: searchString,
|
|
38
|
+
selectedCategory: selectedCategory
|
|
39
|
+
}), /*#__PURE__*/_react.default.createElement(_EmojiPickerCategories.default, {
|
|
40
|
+
onSelect: handleCategorySelect,
|
|
41
|
+
searchString: searchString,
|
|
42
|
+
selectedCategory: selectedCategory
|
|
43
|
+
}));
|
|
44
|
+
};
|
|
45
|
+
EmojiPicker.displayName = 'EmojiPicker';
|
|
46
|
+
var _default = exports.default = EmojiPicker;
|
|
47
|
+
//# sourceMappingURL=EmojiPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmojiPicker.js","names":["_core","require","_react","_interopRequireWildcard","_EmojiPickerCategories","_interopRequireDefault","_EmojiPickerEmojis","_EmojiPicker","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FirstEmojiSlug","EmojiPicker","accessToken","onSelect","personId","searchString","setSearchString","useState","selectedCategory","setSelectedCategory","handleCategorySelect","useCallback","category","handleSearchChange","event","target","value","createElement","StyledEmojiPicker","Input","onChange","placeholder","displayName","_default","exports"],"sources":["../../../../src/components/emoji-picker/EmojiPicker.tsx"],"sourcesContent":["import { Input } from '@chayns-components/core';\nimport React, { ChangeEvent, FC, useCallback, useState } from 'react';\nimport type { Category } from '../../types/category';\nimport EmojiPickerCategories from './emoji-picker-categories/EmojiPickerCategories';\nimport EmojiPickerEmojis from './emoji-picker-emojis/EmojiPickerEmojis';\nimport { StyledEmojiPicker } from './EmojiPicker.styles';\n\nexport type EmojiPickerProps = {\n /**\n * Access token of the logged-in user. Is needed to load and save the history of the emojis.\n */\n accessToken?: string;\n /**\n * Function executed when an emoji is selected in the popup\n * @param {string} emoji - Emoji that was selected\n */\n onSelect: (emoji: string) => void;\n /**\n * Person id of the logged-in user. Is needed to load and save the history of the emojis.\n */\n personId?: string;\n};\n\nconst FirstEmojiSlug = 'smileys_emotion';\n\nconst EmojiPicker: FC<EmojiPickerProps> = ({ accessToken, onSelect, personId }) => {\n const [searchString, setSearchString] = useState('');\n const [selectedCategory, setSelectedCategory] = useState(FirstEmojiSlug as Category);\n\n const handleCategorySelect = useCallback((category: Category) => {\n setSearchString('');\n setSelectedCategory(category);\n }, []);\n\n const handleSearchChange = useCallback((event: ChangeEvent<HTMLInputElement>) => {\n setSearchString(event.target.value);\n }, []);\n\n return (\n <StyledEmojiPicker>\n <Input onChange={handleSearchChange} placeholder=\"Suchen\" value={searchString} />\n <EmojiPickerEmojis\n accessToken={accessToken}\n onSelect={onSelect}\n personId={personId}\n searchString={searchString}\n selectedCategory={selectedCategory}\n />\n <EmojiPickerCategories\n onSelect={handleCategorySelect}\n searchString={searchString}\n selectedCategory={selectedCategory}\n />\n </StyledEmojiPicker>\n );\n};\n\nEmojiPicker.displayName = 'EmojiPicker';\n\nexport default EmojiPicker;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,13 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.emojiPickerSize = exports.StyledEmojiPicker = void 0;
|
|
7
7
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
8
|
-
function _interopRequireDefault(
|
|
9
|
-
const emojiPickerSize = {
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
const emojiPickerSize = exports.emojiPickerSize = {
|
|
10
10
|
height: 285,
|
|
11
11
|
width: 350
|
|
12
12
|
};
|
|
13
|
-
exports.
|
|
14
|
-
const StyledEmojiPicker = _styledComponents.default.div`
|
|
13
|
+
const StyledEmojiPicker = exports.StyledEmojiPicker = _styledComponents.default.div`
|
|
15
14
|
align-items: center;
|
|
16
15
|
display: flex;
|
|
17
16
|
flex-direction: column;
|
|
@@ -21,5 +20,4 @@ const StyledEmojiPicker = _styledComponents.default.div`
|
|
|
21
20
|
width: ${emojiPickerSize.width}px;
|
|
22
21
|
user-select: none;
|
|
23
22
|
`;
|
|
24
|
-
exports.StyledEmojiPicker = StyledEmojiPicker;
|
|
25
23
|
//# sourceMappingURL=EmojiPicker.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmojiPicker.styles.js","names":["_styledComponents","_interopRequireDefault","require","e","__esModule","default","emojiPickerSize","exports","height","width","StyledEmojiPicker","styled","div"],"sources":["../../../../src/components/emoji-picker/EmojiPicker.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const emojiPickerSize = {\n height: 285,\n width: 350,\n};\n\nexport const StyledEmojiPicker = styled.div`\n align-items: center;\n display: flex;\n flex-direction: column;\n height: ${emojiPickerSize.height}px;\n justify-content: center;\n padding: 10px 22px;\n width: ${emojiPickerSize.width}px;\n user-select: none;\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhC,MAAMG,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG;EAC3BE,MAAM,EAAE,GAAG;EACXC,KAAK,EAAE;AACX,CAAC;AAEM,MAAMC,iBAAiB,GAAAH,OAAA,CAAAG,iBAAA,GAAGC,yBAAM,CAACC,GAAG;AAC3C;AACA;AACA;AACA,cAAcN,eAAe,CAACE,MAAM;AACpC;AACA;AACA,aAAaF,eAAe,CAACG,KAAK;AAClC;AACA,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _categories = require("../../../constants/categories");
|
|
9
|
+
var _EmojiPickerCategories = require("./EmojiPickerCategories.styles");
|
|
10
|
+
var _core = require("@chayns-components/core");
|
|
11
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
12
|
+
const EmojiPickerCategories = ({
|
|
13
|
+
onSelect,
|
|
14
|
+
searchString,
|
|
15
|
+
selectedCategory
|
|
16
|
+
}) => {
|
|
17
|
+
const [focusedIndex, setFocusedIndex] = (0, _react.useState)(1);
|
|
18
|
+
const [shouldPreventListener, ref] = (0, _core.useIsMeasuredClone)();
|
|
19
|
+
const categoryRef = (0, _react.useRef)(null);
|
|
20
|
+
const combinedRef = (0, _core.useCombinedRefs)(categoryRef, ref);
|
|
21
|
+
const isSearchStringGiven = searchString.trim() !== '';
|
|
22
|
+
const handleSelect = (0, _react.useCallback)(slug => {
|
|
23
|
+
onSelect(slug);
|
|
24
|
+
}, [onSelect]);
|
|
25
|
+
(0, _react.useEffect)(() => {
|
|
26
|
+
const handleKeyDown = event => {
|
|
27
|
+
if (shouldPreventListener) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (event.key === 'Tab' || event.key === 'Tab' && event.shiftKey) {
|
|
31
|
+
var _categoryRef$current;
|
|
32
|
+
event.preventDefault();
|
|
33
|
+
const children = (_categoryRef$current = categoryRef.current) === null || _categoryRef$current === void 0 ? void 0 : _categoryRef$current.children;
|
|
34
|
+
if (children && children.length > 0) {
|
|
35
|
+
let newIndex = focusedIndex !== null ? focusedIndex : 0;
|
|
36
|
+
if (event.key === 'Tab' && event.shiftKey) {
|
|
37
|
+
newIndex = (newIndex - 1) % children.length;
|
|
38
|
+
} else if (event.key === 'Tab') {
|
|
39
|
+
newIndex = (newIndex + 1) % children.length;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// remove focus from the old element
|
|
43
|
+
if (focusedIndex !== null) {
|
|
44
|
+
const prevElement = children[focusedIndex];
|
|
45
|
+
prevElement.tabIndex = -1;
|
|
46
|
+
}
|
|
47
|
+
if (newIndex < 0) {
|
|
48
|
+
newIndex = children.length - 1;
|
|
49
|
+
} else if (newIndex > children.length - 1) {
|
|
50
|
+
newIndex = 0;
|
|
51
|
+
}
|
|
52
|
+
setFocusedIndex(newIndex);
|
|
53
|
+
|
|
54
|
+
// Set focus to the element
|
|
55
|
+
const newElement = children[newIndex];
|
|
56
|
+
newElement.tabIndex = 0;
|
|
57
|
+
newElement.focus();
|
|
58
|
+
if (!newElement) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const {
|
|
62
|
+
id
|
|
63
|
+
} = newElement;
|
|
64
|
+
handleSelect(id);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
document.addEventListener('keydown', handleKeyDown);
|
|
69
|
+
return () => {
|
|
70
|
+
document.removeEventListener('keydown', handleKeyDown);
|
|
71
|
+
};
|
|
72
|
+
}, [focusedIndex, handleSelect, shouldPreventListener]);
|
|
73
|
+
const handleClick = (0, _react.useCallback)(slug => {
|
|
74
|
+
handleSelect(slug);
|
|
75
|
+
}, [handleSelect]);
|
|
76
|
+
const categories = (0, _react.useMemo)(() => Object.keys(_categories.CATEGORY_EMOJIS).map(slug => {
|
|
77
|
+
const isSelected = selectedCategory === slug && !isSearchStringGiven;
|
|
78
|
+
return /*#__PURE__*/_react.default.createElement(_EmojiPickerCategories.StyledMotionEmojiPickerCategory, {
|
|
79
|
+
animate: {
|
|
80
|
+
filter: `grayscale(${isSelected ? 0 : 0.75})`,
|
|
81
|
+
opacity: isSelected ? 1 : 0.5
|
|
82
|
+
},
|
|
83
|
+
className: "prevent-lose-focus",
|
|
84
|
+
initial: false,
|
|
85
|
+
key: slug,
|
|
86
|
+
id: slug,
|
|
87
|
+
onClick: () => handleClick(slug),
|
|
88
|
+
transition: {
|
|
89
|
+
duration: 0.2
|
|
90
|
+
}
|
|
91
|
+
}, _categories.CATEGORY_EMOJIS[slug]);
|
|
92
|
+
}), [handleClick, isSearchStringGiven, selectedCategory]);
|
|
93
|
+
return /*#__PURE__*/_react.default.createElement(_EmojiPickerCategories.StyledEmojiPickerCategories, {
|
|
94
|
+
ref: combinedRef
|
|
95
|
+
}, categories);
|
|
96
|
+
};
|
|
97
|
+
EmojiPickerCategories.displayName = 'EmojiPickerCategories';
|
|
98
|
+
var _default = exports.default = EmojiPickerCategories;
|
|
99
|
+
//# sourceMappingURL=EmojiPickerCategories.js.map
|