@chayns-components/emoji-input 5.0.0-beta.78 → 5.0.0-beta.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/lib/api/item-storage/get.d.ts +8 -0
  2. package/lib/api/item-storage/get.js +37 -0
  3. package/lib/api/item-storage/get.js.map +1 -0
  4. package/lib/api/item-storage/put.d.ts +9 -0
  5. package/lib/api/item-storage/put.js +42 -0
  6. package/lib/api/item-storage/put.js.map +1 -0
  7. package/lib/components/emoji-input/EmojiInput.d.ts +8 -0
  8. package/lib/components/emoji-input/EmojiInput.js +10 -6
  9. package/lib/components/emoji-input/EmojiInput.js.map +1 -1
  10. package/lib/components/emoji-picker/EmojiPicker.d.ts +8 -0
  11. package/lib/components/emoji-picker/EmojiPicker.js +5 -1
  12. package/lib/components/emoji-picker/EmojiPicker.js.map +1 -1
  13. package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js +25 -19
  14. package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js.map +1 -1
  15. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.d.ts +2 -0
  16. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js +73 -16
  17. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js.map +1 -1
  18. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.d.ts +0 -1
  19. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js +2 -12
  20. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js.map +1 -1
  21. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.d.ts +8 -0
  22. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js +105 -0
  23. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js.map +1 -0
  24. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.d.ts +1 -0
  25. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.js +20 -0
  26. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.js.map +1 -0
  27. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.d.ts +15 -0
  28. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js +72 -0
  29. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js.map +1 -0
  30. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.d.ts +11 -0
  31. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js +105 -0
  32. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js.map +1 -0
  33. package/lib/components/emoji-picker-popup/EmojiPickerPopup.d.ts +8 -0
  34. package/lib/components/emoji-picker-popup/EmojiPickerPopup.js +6 -2
  35. package/lib/components/emoji-picker-popup/EmojiPickerPopup.js.map +1 -1
  36. package/lib/constants/alignment.d.ts +4 -0
  37. package/lib/constants/alignment.js +7 -1
  38. package/lib/constants/alignment.js.map +1 -1
  39. package/lib/constants/categories.d.ts +1 -0
  40. package/lib/constants/categories.js +1 -0
  41. package/lib/constants/categories.js.map +1 -1
  42. package/lib/constants/externalServerUrl.d.ts +1 -0
  43. package/lib/constants/externalServerUrl.js +9 -0
  44. package/lib/constants/externalServerUrl.js.map +1 -0
  45. package/lib/hooks/emojiHistory.d.ts +22 -0
  46. package/lib/hooks/emojiHistory.js +91 -0
  47. package/lib/hooks/emojiHistory.js.map +1 -0
  48. package/lib/types/api.d.ts +4 -0
  49. package/lib/types/api.js +6 -0
  50. package/lib/types/api.js.map +1 -0
  51. package/lib/types/category.d.ts +1 -1
  52. package/lib/types/category.js.map +1 -1
  53. package/lib/utils/emoji.d.ts +1 -0
  54. package/lib/utils/emoji.js +15 -1
  55. package/lib/utils/emoji.js.map +1 -1
  56. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"EmojiPickerPopup.js","names":["_Icon","_interopRequireDefault","require","_framerMotion","_react","_interopRequireWildcard","_alignment","_EmojiPicker","_EmojiPicker2","_EmojiPickerPopup","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","EmojiPickerPopup","_ref","alignment","onPopupVisibilityChange","onSelect","internalAlignment","setInternalAlignment","useState","PopupAlignment","TopLeft","shouldShowPopup","setShouldShowPopup","position","setPosition","contentRef","useRef","handleHide","useCallback","handleDocumentClick","event","_contentRef$current","current","contains","target","preventDefault","stopPropagation","handlePopupIconClick","height","left","top","width","currentTarget","getBoundingClientRect","newInternalAlignment","emojiPickerSize","BottomRight","BottomLeft","TopRight","newPosition","useEffect","document","addEventListener","window","removeEventListener","exitAndInitialY","createElement","StyledEmojiPickerPopup","AnimatePresence","initial","StyledMotionEmojiPickerPopupContent","animate","opacity","y","exit","ref","style","transition","type","className","icons","onClick","size","displayName","_default","exports"],"sources":["../../../src/components/emoji-picker-popup/EmojiPickerPopup.tsx"],"sourcesContent":["import Icon from '@chayns-components/core/lib/components/icon/Icon';\nimport { AnimatePresence } from 'framer-motion';\nimport React, { FC, MouseEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport { PopupAlignment } from '../../constants/alignment';\nimport EmojiPicker from '../emoji-picker/EmojiPicker';\nimport { emojiPickerSize } from '../emoji-picker/EmojiPicker.styles';\nimport {\n StyledEmojiPickerPopup,\n StyledMotionEmojiPickerPopupContent,\n} from './EmojiPickerPopup.styles';\n\nexport type EmojiPickerPopupProps = {\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 alignment?: PopupAlignment;\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 * 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\nexport type PopupPosition = {\n bottom?: number;\n left?: number;\n right?: number;\n top?: number;\n};\n\nconst EmojiPickerPopup: FC<EmojiPickerPopupProps> = ({\n alignment,\n onPopupVisibilityChange,\n onSelect,\n}) => {\n const [internalAlignment, setInternalAlignment] = useState<PopupAlignment>(\n PopupAlignment.TopLeft\n );\n const [shouldShowPopup, setShouldShowPopup] = useState(false);\n const [position, setPosition] = useState({} as PopupPosition);\n\n const contentRef = useRef<HTMLDivElement>(null);\n\n const handleHide = useCallback(() => {\n setShouldShowPopup(false);\n }, []);\n\n const handleDocumentClick = useCallback<EventListener>(\n (event) => {\n if (!contentRef.current?.contains(event.target as Node)) {\n event.preventDefault();\n event.stopPropagation();\n\n handleHide();\n }\n },\n [handleHide]\n );\n\n const handlePopupIconClick = useCallback(\n (event: MouseEvent<HTMLSpanElement>) => {\n if (shouldShowPopup) {\n setShouldShowPopup(false);\n\n return;\n }\n\n const { height, left, top, width } = event.currentTarget.getBoundingClientRect();\n\n let newInternalAlignment: PopupAlignment | undefined = alignment;\n\n if (typeof newInternalAlignment !== 'number') {\n if (top < emojiPickerSize.height + 16) {\n if (left < emojiPickerSize.width + 16) {\n newInternalAlignment = PopupAlignment.BottomRight;\n } else {\n newInternalAlignment = PopupAlignment.BottomLeft;\n }\n } else if (left < emojiPickerSize.width + 16) {\n newInternalAlignment = PopupAlignment.TopRight;\n } else {\n newInternalAlignment = PopupAlignment.TopLeft;\n }\n }\n\n let newPosition: PopupPosition = {};\n\n switch (newInternalAlignment) {\n case PopupAlignment.BottomLeft:\n newPosition = { left: 8 + width - emojiPickerSize.width, top: 12 + height };\n break;\n case PopupAlignment.BottomRight:\n newPosition = { left: -10, top: 12 + height };\n break;\n case PopupAlignment.TopLeft:\n newPosition = {\n left: 8 + width - emojiPickerSize.width,\n top: -12 - emojiPickerSize.height,\n };\n break;\n case PopupAlignment.TopRight:\n newPosition = { left: -10, top: -12 - emojiPickerSize.height };\n break;\n default:\n break;\n }\n\n setInternalAlignment(newInternalAlignment);\n setPosition(newPosition);\n setShouldShowPopup(true);\n },\n [alignment, shouldShowPopup]\n );\n\n useEffect(() => {\n if (shouldShowPopup) {\n document.addEventListener('click', handleDocumentClick, true);\n window.addEventListener('blur', handleHide);\n }\n\n return () => {\n document.removeEventListener('click', handleDocumentClick, true);\n window.removeEventListener('blur', handleHide);\n };\n }, [handleDocumentClick, handleHide, shouldShowPopup]);\n\n useEffect(() => {\n if (typeof onPopupVisibilityChange === 'function') {\n onPopupVisibilityChange(shouldShowPopup);\n }\n }, [onPopupVisibilityChange, shouldShowPopup]);\n\n const exitAndInitialY =\n internalAlignment === PopupAlignment.TopLeft ||\n internalAlignment === PopupAlignment.TopRight\n ? -16\n : 16;\n\n return (\n <StyledEmojiPickerPopup>\n <AnimatePresence initial={false}>\n {shouldShowPopup && (\n <StyledMotionEmojiPickerPopupContent\n alignment={internalAlignment}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: exitAndInitialY }}\n initial={{ opacity: 0, y: exitAndInitialY }}\n key=\"emojiPickerPopupContent\"\n ref={contentRef}\n style={position}\n transition={{ type: 'tween' }}\n >\n <EmojiPicker onSelect={onSelect} />\n </StyledMotionEmojiPickerPopupContent>\n )}\n </AnimatePresence>\n <Icon\n className=\"prevent-lose-focus\"\n icons={['far fa-smile']}\n onClick={handlePopupIconClick}\n size={18}\n />\n </StyledEmojiPickerPopup>\n );\n};\n\nEmojiPickerPopup.displayName = 'EmojiPickerPopup';\n\nexport default EmojiPickerPopup;\n"],"mappings":"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"}
1
+ {"version":3,"file":"EmojiPickerPopup.js","names":["_Icon","_interopRequireDefault","require","_framerMotion","_react","_interopRequireWildcard","_alignment","_EmojiPicker","_EmojiPicker2","_EmojiPickerPopup","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","EmojiPickerPopup","_ref","accessToken","alignment","onPopupVisibilityChange","onSelect","personId","internalAlignment","setInternalAlignment","useState","PopupAlignment","TopLeft","shouldShowPopup","setShouldShowPopup","position","setPosition","contentRef","useRef","handleHide","useCallback","handleDocumentClick","event","_contentRef$current","current","contains","target","preventDefault","stopPropagation","handlePopupIconClick","height","left","top","width","currentTarget","getBoundingClientRect","newInternalAlignment","emojiPickerSize","BottomRight","BottomLeft","TopRight","newPosition","useEffect","document","addEventListener","window","removeEventListener","exitAndInitialY","createElement","StyledEmojiPickerPopup","AnimatePresence","initial","StyledMotionEmojiPickerPopupContent","animate","opacity","y","exit","ref","style","transition","type","className","icons","onClick","size","displayName","_default","exports"],"sources":["../../../src/components/emoji-picker-popup/EmojiPickerPopup.tsx"],"sourcesContent":["import Icon from '@chayns-components/core/lib/components/icon/Icon';\nimport { AnimatePresence } from 'framer-motion';\nimport React, { FC, MouseEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport { PopupAlignment } from '../../constants/alignment';\nimport EmojiPicker from '../emoji-picker/EmojiPicker';\nimport { emojiPickerSize } from '../emoji-picker/EmojiPicker.styles';\nimport {\n StyledEmojiPickerPopup,\n StyledMotionEmojiPickerPopupContent,\n} from './EmojiPickerPopup.styles';\n\nexport type EmojiPickerPopupProps = {\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 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 alignment?: PopupAlignment;\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 * 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\nexport type PopupPosition = {\n bottom?: number;\n left?: number;\n right?: number;\n top?: number;\n};\n\nconst EmojiPickerPopup: FC<EmojiPickerPopupProps> = ({\n accessToken,\n alignment,\n onPopupVisibilityChange,\n onSelect,\n personId,\n}) => {\n const [internalAlignment, setInternalAlignment] = useState<PopupAlignment>(\n PopupAlignment.TopLeft\n );\n const [shouldShowPopup, setShouldShowPopup] = useState(false);\n const [position, setPosition] = useState({} as PopupPosition);\n\n const contentRef = useRef<HTMLDivElement>(null);\n\n const handleHide = useCallback(() => {\n setShouldShowPopup(false);\n }, []);\n\n const handleDocumentClick = useCallback<EventListener>(\n (event) => {\n if (!contentRef.current?.contains(event.target as Node)) {\n event.preventDefault();\n event.stopPropagation();\n\n handleHide();\n }\n },\n [handleHide]\n );\n\n const handlePopupIconClick = useCallback(\n (event: MouseEvent<HTMLSpanElement>) => {\n if (shouldShowPopup) {\n setShouldShowPopup(false);\n\n return;\n }\n\n const { height, left, top, width } = event.currentTarget.getBoundingClientRect();\n\n let newInternalAlignment: PopupAlignment | undefined = alignment;\n\n if (typeof newInternalAlignment !== 'number') {\n if (top < emojiPickerSize.height + 16) {\n if (left < emojiPickerSize.width + 16) {\n newInternalAlignment = PopupAlignment.BottomRight;\n } else {\n newInternalAlignment = PopupAlignment.BottomLeft;\n }\n } else if (left < emojiPickerSize.width + 16) {\n newInternalAlignment = PopupAlignment.TopRight;\n } else {\n newInternalAlignment = PopupAlignment.TopLeft;\n }\n }\n\n let newPosition: PopupPosition = {};\n\n switch (newInternalAlignment) {\n case PopupAlignment.BottomLeft:\n newPosition = { left: 8 + width - emojiPickerSize.width, top: 12 + height };\n break;\n case PopupAlignment.BottomRight:\n newPosition = { left: -10, top: 12 + height };\n break;\n case PopupAlignment.TopLeft:\n newPosition = {\n left: 8 + width - emojiPickerSize.width,\n top: -12 - emojiPickerSize.height,\n };\n break;\n case PopupAlignment.TopRight:\n newPosition = { left: -10, top: -12 - emojiPickerSize.height };\n break;\n default:\n break;\n }\n\n setInternalAlignment(newInternalAlignment);\n setPosition(newPosition);\n setShouldShowPopup(true);\n },\n [alignment, shouldShowPopup]\n );\n\n useEffect(() => {\n if (shouldShowPopup) {\n document.addEventListener('click', handleDocumentClick, true);\n window.addEventListener('blur', handleHide);\n }\n\n return () => {\n document.removeEventListener('click', handleDocumentClick, true);\n window.removeEventListener('blur', handleHide);\n };\n }, [handleDocumentClick, handleHide, shouldShowPopup]);\n\n useEffect(() => {\n if (typeof onPopupVisibilityChange === 'function') {\n onPopupVisibilityChange(shouldShowPopup);\n }\n }, [onPopupVisibilityChange, shouldShowPopup]);\n\n const exitAndInitialY =\n internalAlignment === PopupAlignment.TopLeft ||\n internalAlignment === PopupAlignment.TopRight\n ? -16\n : 16;\n\n return (\n <StyledEmojiPickerPopup>\n <AnimatePresence initial={false}>\n {shouldShowPopup && (\n <StyledMotionEmojiPickerPopupContent\n alignment={internalAlignment}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: exitAndInitialY }}\n initial={{ opacity: 0, y: exitAndInitialY }}\n key=\"emojiPickerPopupContent\"\n ref={contentRef}\n style={position}\n transition={{ type: 'tween' }}\n >\n <EmojiPicker\n accessToken={accessToken}\n onSelect={onSelect}\n personId={personId}\n />\n </StyledMotionEmojiPickerPopupContent>\n )}\n </AnimatePresence>\n <Icon\n className=\"prevent-lose-focus\"\n icons={['far fa-smile']}\n onClick={handlePopupIconClick}\n size={18}\n />\n </StyledEmojiPickerPopup>\n );\n};\n\nEmojiPickerPopup.displayName = 'EmojiPickerPopup';\n\nexport default EmojiPickerPopup;\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,uBAAA,CAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AACA,IAAAO,iBAAA,GAAAP,OAAA;AAGmC,SAAAQ,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAN,wBAAAU,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAAA,SAAApB,uBAAAc,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAoCnC,MAAMiB,gBAA2C,GAAGC,IAAA,IAM9C;EAAA,IAN+C;IACjDC,WAAW;IACXC,SAAS;IACTC,uBAAuB;IACvBC,QAAQ;IACRC;EACJ,CAAC,GAAAL,IAAA;EACG,MAAM,CAACM,iBAAiB,EAAEC,oBAAoB,CAAC,GAAG,IAAAC,eAAQ,EACtDC,yBAAc,CAACC,OAAO,CACzB;EACD,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAG,IAAAJ,eAAQ,EAAC,KAAK,CAAC;EAC7D,MAAM,CAACK,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAN,eAAQ,EAAC,CAAC,CAAC,CAAkB;EAE7D,MAAMO,UAAU,GAAG,IAAAC,aAAM,EAAiB,IAAI,CAAC;EAE/C,MAAMC,UAAU,GAAG,IAAAC,kBAAW,EAAC,MAAM;IACjCN,kBAAkB,CAAC,KAAK,CAAC;EAC7B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMO,mBAAmB,GAAG,IAAAD,kBAAW,EAClCE,KAAK,IAAK;IAAA,IAAAC,mBAAA;IACP,IAAI,GAAAA,mBAAA,GAACN,UAAU,CAACO,OAAO,cAAAD,mBAAA,eAAlBA,mBAAA,CAAoBE,QAAQ,CAACH,KAAK,CAACI,MAAM,CAAS,GAAE;MACrDJ,KAAK,CAACK,cAAc,EAAE;MACtBL,KAAK,CAACM,eAAe,EAAE;MAEvBT,UAAU,EAAE;IAChB;EACJ,CAAC,EACD,CAACA,UAAU,CAAC,CACf;EAED,MAAMU,oBAAoB,GAAG,IAAAT,kBAAW,EACnCE,KAAkC,IAAK;IACpC,IAAIT,eAAe,EAAE;MACjBC,kBAAkB,CAAC,KAAK,CAAC;MAEzB;IACJ;IAEA,MAAM;MAAEgB,MAAM;MAAEC,IAAI;MAAEC,GAAG;MAAEC;IAAM,CAAC,GAAGX,KAAK,CAACY,aAAa,CAACC,qBAAqB,EAAE;IAEhF,IAAIC,oBAAgD,GAAGhC,SAAS;IAEhE,IAAI,OAAOgC,oBAAoB,KAAK,QAAQ,EAAE;MAC1C,IAAIJ,GAAG,GAAGK,6BAAe,CAACP,MAAM,GAAG,EAAE,EAAE;QACnC,IAAIC,IAAI,GAAGM,6BAAe,CAACJ,KAAK,GAAG,EAAE,EAAE;UACnCG,oBAAoB,GAAGzB,yBAAc,CAAC2B,WAAW;QACrD,CAAC,MAAM;UACHF,oBAAoB,GAAGzB,yBAAc,CAAC4B,UAAU;QACpD;MACJ,CAAC,MAAM,IAAIR,IAAI,GAAGM,6BAAe,CAACJ,KAAK,GAAG,EAAE,EAAE;QAC1CG,oBAAoB,GAAGzB,yBAAc,CAAC6B,QAAQ;MAClD,CAAC,MAAM;QACHJ,oBAAoB,GAAGzB,yBAAc,CAACC,OAAO;MACjD;IACJ;IAEA,IAAI6B,WAA0B,GAAG,CAAC,CAAC;IAEnC,QAAQL,oBAAoB;MACxB,KAAKzB,yBAAc,CAAC4B,UAAU;QAC1BE,WAAW,GAAG;UAAEV,IAAI,EAAE,CAAC,GAAGE,KAAK,GAAGI,6BAAe,CAACJ,KAAK;UAAED,GAAG,EAAE,EAAE,GAAGF;QAAO,CAAC;QAC3E;MACJ,KAAKnB,yBAAc,CAAC2B,WAAW;QAC3BG,WAAW,GAAG;UAAEV,IAAI,EAAE,CAAC,EAAE;UAAEC,GAAG,EAAE,EAAE,GAAGF;QAAO,CAAC;QAC7C;MACJ,KAAKnB,yBAAc,CAACC,OAAO;QACvB6B,WAAW,GAAG;UACVV,IAAI,EAAE,CAAC,GAAGE,KAAK,GAAGI,6BAAe,CAACJ,KAAK;UACvCD,GAAG,EAAE,CAAC,EAAE,GAAGK,6BAAe,CAACP;QAC/B,CAAC;QACD;MACJ,KAAKnB,yBAAc,CAAC6B,QAAQ;QACxBC,WAAW,GAAG;UAAEV,IAAI,EAAE,CAAC,EAAE;UAAEC,GAAG,EAAE,CAAC,EAAE,GAAGK,6BAAe,CAACP;QAAO,CAAC;QAC9D;MACJ;QACI;IAAM;IAGdrB,oBAAoB,CAAC2B,oBAAoB,CAAC;IAC1CpB,WAAW,CAACyB,WAAW,CAAC;IACxB3B,kBAAkB,CAAC,IAAI,CAAC;EAC5B,CAAC,EACD,CAACV,SAAS,EAAES,eAAe,CAAC,CAC/B;EAED,IAAA6B,gBAAS,EAAC,MAAM;IACZ,IAAI7B,eAAe,EAAE;MACjB8B,QAAQ,CAACC,gBAAgB,CAAC,OAAO,EAAEvB,mBAAmB,EAAE,IAAI,CAAC;MAC7DwB,MAAM,CAACD,gBAAgB,CAAC,MAAM,EAAEzB,UAAU,CAAC;IAC/C;IAEA,OAAO,MAAM;MACTwB,QAAQ,CAACG,mBAAmB,CAAC,OAAO,EAAEzB,mBAAmB,EAAE,IAAI,CAAC;MAChEwB,MAAM,CAACC,mBAAmB,CAAC,MAAM,EAAE3B,UAAU,CAAC;IAClD,CAAC;EACL,CAAC,EAAE,CAACE,mBAAmB,EAAEF,UAAU,EAAEN,eAAe,CAAC,CAAC;EAEtD,IAAA6B,gBAAS,EAAC,MAAM;IACZ,IAAI,OAAOrC,uBAAuB,KAAK,UAAU,EAAE;MAC/CA,uBAAuB,CAACQ,eAAe,CAAC;IAC5C;EACJ,CAAC,EAAE,CAACR,uBAAuB,EAAEQ,eAAe,CAAC,CAAC;EAE9C,MAAMkC,eAAe,GACjBvC,iBAAiB,KAAKG,yBAAc,CAACC,OAAO,IAC5CJ,iBAAiB,KAAKG,yBAAc,CAAC6B,QAAQ,GACvC,CAAC,EAAE,GACH,EAAE;EAEZ,oBACInE,MAAA,CAAAa,OAAA,CAAA8D,aAAA,CAACtE,iBAAA,CAAAuE,sBAAsB,qBACnB5E,MAAA,CAAAa,OAAA,CAAA8D,aAAA,CAAC5E,aAAA,CAAA8E,eAAe;IAACC,OAAO,EAAE;EAAM,GAC3BtC,eAAe,iBACZxC,MAAA,CAAAa,OAAA,CAAA8D,aAAA,CAACtE,iBAAA,CAAA0E,mCAAmC;IAChChD,SAAS,EAAEI,iBAAkB;IAC7B6C,OAAO,EAAE;MAAEC,OAAO,EAAE,CAAC;MAAEC,CAAC,EAAE;IAAE,CAAE;IAC9BC,IAAI,EAAE;MAAEF,OAAO,EAAE,CAAC;MAAEC,CAAC,EAAER;IAAgB,CAAE;IACzCI,OAAO,EAAE;MAAEG,OAAO,EAAE,CAAC;MAAEC,CAAC,EAAER;IAAgB,CAAE;IAC5CpD,GAAG,EAAC,yBAAyB;IAC7B8D,GAAG,EAAExC,UAAW;IAChByC,KAAK,EAAE3C,QAAS;IAChB4C,UAAU,EAAE;MAAEC,IAAI,EAAE;IAAQ;EAAE,gBAE9BvF,MAAA,CAAAa,OAAA,CAAA8D,aAAA,CAACxE,YAAA,CAAAU,OAAW;IACRiB,WAAW,EAAEA,WAAY;IACzBG,QAAQ,EAAEA,QAAS;IACnBC,QAAQ,EAAEA;EAAS,EACrB,CAET,CACa,eAClBlC,MAAA,CAAAa,OAAA,CAAA8D,aAAA,CAAC/E,KAAA,CAAAiB,OAAI;IACD2E,SAAS,EAAC,oBAAoB;IAC9BC,KAAK,EAAE,CAAC,cAAc,CAAE;IACxBC,OAAO,EAAElC,oBAAqB;IAC9BmC,IAAI,EAAE;EAAG,EACX,CACmB;AAEjC,CAAC;AAED/D,gBAAgB,CAACgE,WAAW,GAAG,kBAAkB;AAAC,IAAAC,QAAA,GAEnCjE,gBAAgB;AAAAkE,OAAA,CAAAjF,OAAA,GAAAgF,QAAA"}
@@ -1,3 +1,7 @@
1
+ export declare enum AnchorAlignment {
2
+ Bottom = 0,
3
+ Top = 1
4
+ }
1
5
  export declare enum PopupAlignment {
2
6
  TopLeft = 0,
3
7
  BottomLeft = 1,
@@ -3,7 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.PopupAlignment = void 0;
6
+ exports.PopupAlignment = exports.AnchorAlignment = void 0;
7
+ let AnchorAlignment;
8
+ exports.AnchorAlignment = AnchorAlignment;
9
+ (function (AnchorAlignment) {
10
+ AnchorAlignment[AnchorAlignment["Bottom"] = 0] = "Bottom";
11
+ AnchorAlignment[AnchorAlignment["Top"] = 1] = "Top";
12
+ })(AnchorAlignment || (exports.AnchorAlignment = AnchorAlignment = {}));
7
13
  let PopupAlignment;
8
14
  exports.PopupAlignment = PopupAlignment;
9
15
  (function (PopupAlignment) {
@@ -1 +1 @@
1
- {"version":3,"file":"alignment.js","names":["PopupAlignment","exports"],"sources":["../../src/constants/alignment.ts"],"sourcesContent":["export enum PopupAlignment {\n TopLeft,\n BottomLeft,\n TopRight,\n BottomRight,\n}\n"],"mappings":";;;;;;IAAYA,cAAc;AAAAC,OAAA,CAAAD,cAAA,GAAAA,cAAA;AAAA,WAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;AAAA,GAAdA,cAAc,KAAAC,OAAA,CAAAD,cAAA,GAAdA,cAAc"}
1
+ {"version":3,"file":"alignment.js","names":["AnchorAlignment","exports","PopupAlignment"],"sources":["../../src/constants/alignment.ts"],"sourcesContent":["export enum AnchorAlignment {\n Bottom,\n Top,\n}\n\nexport enum PopupAlignment {\n TopLeft,\n BottomLeft,\n TopRight,\n BottomRight,\n}\n"],"mappings":";;;;;;IAAYA,eAAe;AAAAC,OAAA,CAAAD,eAAA,GAAAA,eAAA;AAAA,WAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;AAAA,GAAfA,eAAe,KAAAC,OAAA,CAAAD,eAAA,GAAfA,eAAe;AAAA,IAKfE,cAAc;AAAAD,OAAA,CAAAC,cAAA,GAAAA,cAAA;AAAA,WAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;AAAA,GAAdA,cAAc,KAAAD,OAAA,CAAAC,cAAA,GAAdA,cAAc"}
@@ -1,4 +1,5 @@
1
1
  export declare const CATEGORY_EMOJIS: {
2
+ history: string;
2
3
  smileys_emotion: string;
3
4
  people_body: string;
4
5
  animals_nature: string;
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.CATEGORY_EMOJIS = void 0;
7
7
  const CATEGORY_EMOJIS = {
8
+ history: '🕘',
8
9
  smileys_emotion: '😀',
9
10
  people_body: '👦',
10
11
  animals_nature: '🐶',
@@ -1 +1 @@
1
- {"version":3,"file":"categories.js","names":["CATEGORY_EMOJIS","smileys_emotion","people_body","animals_nature","food_drink","travel_places","activities","objects","symbols","flags","exports"],"sources":["../../src/constants/categories.ts"],"sourcesContent":["export const CATEGORY_EMOJIS = {\n smileys_emotion: '😀',\n people_body: '👦',\n animals_nature: '🐶',\n food_drink: '🍔',\n travel_places: '🏠',\n activities: '⚽',\n objects: '💡',\n symbols: '🔣',\n flags: '🏴',\n};\n"],"mappings":";;;;;;AAAO,MAAMA,eAAe,GAAG;EAC3BC,eAAe,EAAE,IAAI;EACrBC,WAAW,EAAE,IAAI;EACjBC,cAAc,EAAE,IAAI;EACpBC,UAAU,EAAE,IAAI;EAChBC,aAAa,EAAE,IAAI;EACnBC,UAAU,EAAE,GAAG;EACfC,OAAO,EAAE,IAAI;EACbC,OAAO,EAAE,IAAI;EACbC,KAAK,EAAE;AACX,CAAC;AAACC,OAAA,CAAAV,eAAA,GAAAA,eAAA"}
1
+ {"version":3,"file":"categories.js","names":["CATEGORY_EMOJIS","history","smileys_emotion","people_body","animals_nature","food_drink","travel_places","activities","objects","symbols","flags","exports"],"sources":["../../src/constants/categories.ts"],"sourcesContent":["export const CATEGORY_EMOJIS = {\n history: '🕘',\n smileys_emotion: '😀',\n people_body: '👦',\n animals_nature: '🐶',\n food_drink: '🍔',\n travel_places: '🏠',\n activities: '⚽',\n objects: '💡',\n symbols: '🔣',\n flags: '🏴',\n};\n"],"mappings":";;;;;;AAAO,MAAMA,eAAe,GAAG;EAC3BC,OAAO,EAAE,IAAI;EACbC,eAAe,EAAE,IAAI;EACrBC,WAAW,EAAE,IAAI;EACjBC,cAAc,EAAE,IAAI;EACpBC,UAAU,EAAE,IAAI;EAChBC,aAAa,EAAE,IAAI;EACnBC,UAAU,EAAE,GAAG;EACfC,OAAO,EAAE,IAAI;EACbC,OAAO,EAAE,IAAI;EACbC,KAAK,EAAE;AACX,CAAC;AAACC,OAAA,CAAAX,eAAA,GAAAA,eAAA"}
@@ -0,0 +1 @@
1
+ export declare const ITEM_STORAGE_BASE_URL = "https://cube.tobit.cloud/item-storage/api/v1.0/schemes";
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ITEM_STORAGE_BASE_URL = void 0;
7
+ const ITEM_STORAGE_BASE_URL = 'https://cube.tobit.cloud/item-storage/api/v1.0/schemes';
8
+ exports.ITEM_STORAGE_BASE_URL = ITEM_STORAGE_BASE_URL;
9
+ //# sourceMappingURL=externalServerUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"externalServerUrl.js","names":["ITEM_STORAGE_BASE_URL","exports"],"sources":["../../src/constants/externalServerUrl.ts"],"sourcesContent":["export const ITEM_STORAGE_BASE_URL = 'https://cube.tobit.cloud/item-storage/api/v1.0/schemes';\n"],"mappings":";;;;;;AAAO,MAAMA,qBAAqB,GAAG,wDAAwD;AAACC,OAAA,CAAAD,qBAAA,GAAAA,qBAAA"}
@@ -0,0 +1,22 @@
1
+ import type { Category } from '../types/category';
2
+ export interface HistoryItem {
3
+ count: number;
4
+ emoji: string;
5
+ modifiedTime: string;
6
+ name: string;
7
+ skin_tone_support: boolean;
8
+ }
9
+ interface UseEmojiHistoryOptions {
10
+ accessToken?: string;
11
+ personId?: string;
12
+ selectedCategory: Category;
13
+ }
14
+ export declare const useEmojiHistory: ({ accessToken, personId, selectedCategory, }: UseEmojiHistoryOptions) => {
15
+ addOrUpdateEmojiInHistory: ({ emoji, name, skin_tone_support, }: {
16
+ emoji: string;
17
+ name: string;
18
+ skin_tone_support: boolean;
19
+ }) => Promise<void>;
20
+ historyEmojis: HistoryItem[];
21
+ };
22
+ export {};
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useEmojiHistory = void 0;
7
+ var _react = require("react");
8
+ var _get = require("../api/item-storage/get");
9
+ var _put = require("../api/item-storage/put");
10
+ const useEmojiHistory = _ref => {
11
+ let {
12
+ accessToken,
13
+ personId,
14
+ selectedCategory
15
+ } = _ref;
16
+ const [historyEmojis, setHistoryEmojis] = (0, _react.useState)([]);
17
+ const tempHistoryEmojis = (0, _react.useRef)(null);
18
+ const addOrUpdateEmojiInHistory = (0, _react.useCallback)(async _ref2 => {
19
+ var _tempHistoryEmojis$cu, _historyItem$count, _historyItem;
20
+ let {
21
+ emoji,
22
+ name,
23
+ skin_tone_support
24
+ } = _ref2;
25
+ if (typeof accessToken !== 'string' || typeof personId !== 'string') {
26
+ return;
27
+ }
28
+ const newHistoryEmojis = Array.from((_tempHistoryEmojis$cu = tempHistoryEmojis.current) !== null && _tempHistoryEmojis$cu !== void 0 ? _tempHistoryEmojis$cu : historyEmojis);
29
+ const historyItemIndex = newHistoryEmojis.findIndex(item => item.emoji === emoji);
30
+ let historyItem;
31
+ if (historyItemIndex > -1) {
32
+ [historyItem] = newHistoryEmojis.splice(historyItemIndex, 1);
33
+ }
34
+ newHistoryEmojis.push({
35
+ count: ((_historyItem$count = (_historyItem = historyItem) === null || _historyItem === void 0 ? void 0 : _historyItem.count) !== null && _historyItem$count !== void 0 ? _historyItem$count : 0) + 1,
36
+ emoji,
37
+ modifiedTime: new Date().toISOString(),
38
+ name,
39
+ skin_tone_support
40
+ });
41
+ newHistoryEmojis.sort((a, b) => {
42
+ if (a.count === b.count) {
43
+ return new Date(b.modifiedTime).getTime() - new Date(a.modifiedTime).getTime();
44
+ }
45
+ return b.count - a.count;
46
+ });
47
+ const {
48
+ data
49
+ } = await (0, _put.putEmojiHistory)({
50
+ accessToken,
51
+ personId,
52
+ value: newHistoryEmojis.slice(0, 50)
53
+ });
54
+ if (data) {
55
+ if (selectedCategory === 'history') {
56
+ tempHistoryEmojis.current = data;
57
+ } else {
58
+ tempHistoryEmojis.current = null;
59
+ setHistoryEmojis(data);
60
+ }
61
+ }
62
+ }, [accessToken, historyEmojis, personId, selectedCategory]);
63
+ const loadHistoryEmojis = (0, _react.useCallback)(async () => {
64
+ if (typeof accessToken !== 'string' || typeof personId !== 'string') {
65
+ return;
66
+ }
67
+ const {
68
+ data
69
+ } = await (0, _get.getEmojiHistory)({
70
+ accessToken,
71
+ personId
72
+ });
73
+ if (data) {
74
+ setHistoryEmojis(data);
75
+ }
76
+ }, [accessToken, personId]);
77
+ (0, _react.useEffect)(() => {
78
+ void loadHistoryEmojis();
79
+ }, [loadHistoryEmojis]);
80
+ (0, _react.useEffect)(() => {
81
+ if (selectedCategory !== 'history' && tempHistoryEmojis.current) {
82
+ setHistoryEmojis(tempHistoryEmojis.current);
83
+ }
84
+ }, [selectedCategory]);
85
+ return {
86
+ addOrUpdateEmojiInHistory,
87
+ historyEmojis: historyEmojis.slice(0, 25)
88
+ };
89
+ };
90
+ exports.useEmojiHistory = useEmojiHistory;
91
+ //# sourceMappingURL=emojiHistory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emojiHistory.js","names":["_react","require","_get","_put","useEmojiHistory","_ref","accessToken","personId","selectedCategory","historyEmojis","setHistoryEmojis","useState","tempHistoryEmojis","useRef","addOrUpdateEmojiInHistory","useCallback","_ref2","_tempHistoryEmojis$cu","_historyItem$count","_historyItem","emoji","name","skin_tone_support","newHistoryEmojis","Array","from","current","historyItemIndex","findIndex","item","historyItem","splice","push","count","modifiedTime","Date","toISOString","sort","a","b","getTime","data","putEmojiHistory","value","slice","loadHistoryEmojis","getEmojiHistory","useEffect","exports"],"sources":["../../src/hooks/emojiHistory.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { getEmojiHistory } from '../api/item-storage/get';\nimport { putEmojiHistory } from '../api/item-storage/put';\nimport type { Category } from '../types/category';\n\nexport interface HistoryItem {\n count: number;\n emoji: string;\n modifiedTime: string;\n name: string;\n skin_tone_support: boolean;\n}\n\ninterface UseEmojiHistoryOptions {\n accessToken?: string;\n personId?: string;\n selectedCategory: Category;\n}\n\nexport const useEmojiHistory = ({\n accessToken,\n personId,\n selectedCategory,\n}: UseEmojiHistoryOptions) => {\n const [historyEmojis, setHistoryEmojis] = useState<HistoryItem[]>([]);\n\n const tempHistoryEmojis = useRef<HistoryItem[] | null>(null);\n\n const addOrUpdateEmojiInHistory = useCallback(\n async ({\n emoji,\n name,\n skin_tone_support,\n }: {\n emoji: string;\n name: string;\n skin_tone_support: boolean;\n }) => {\n if (typeof accessToken !== 'string' || typeof personId !== 'string') {\n return;\n }\n\n const newHistoryEmojis = Array.from(tempHistoryEmojis.current ?? historyEmojis);\n\n const historyItemIndex = newHistoryEmojis.findIndex((item) => item.emoji === emoji);\n\n let historyItem;\n\n if (historyItemIndex > -1) {\n [historyItem] = newHistoryEmojis.splice(historyItemIndex, 1);\n }\n\n newHistoryEmojis.push({\n count: (historyItem?.count ?? 0) + 1,\n emoji,\n modifiedTime: new Date().toISOString(),\n name,\n skin_tone_support,\n });\n\n newHistoryEmojis.sort((a, b) => {\n if (a.count === b.count) {\n return new Date(b.modifiedTime).getTime() - new Date(a.modifiedTime).getTime();\n }\n\n return b.count - a.count;\n });\n\n const { data } = await putEmojiHistory({\n accessToken,\n personId,\n value: newHistoryEmojis.slice(0, 50),\n });\n\n if (data) {\n if (selectedCategory === 'history') {\n tempHistoryEmojis.current = data;\n } else {\n tempHistoryEmojis.current = null;\n\n setHistoryEmojis(data);\n }\n }\n },\n [accessToken, historyEmojis, personId, selectedCategory]\n );\n\n const loadHistoryEmojis = useCallback(async () => {\n if (typeof accessToken !== 'string' || typeof personId !== 'string') {\n return;\n }\n\n const { data } = await getEmojiHistory({ accessToken, personId });\n\n if (data) {\n setHistoryEmojis(data);\n }\n }, [accessToken, personId]);\n\n useEffect(() => {\n void loadHistoryEmojis();\n }, [loadHistoryEmojis]);\n\n useEffect(() => {\n if (selectedCategory !== 'history' && tempHistoryEmojis.current) {\n setHistoryEmojis(tempHistoryEmojis.current);\n }\n }, [selectedCategory]);\n\n return { addOrUpdateEmojiInHistory, historyEmojis: historyEmojis.slice(0, 25) };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AAiBO,MAAMG,eAAe,GAAGC,IAAA,IAID;EAAA,IAJE;IAC5BC,WAAW;IACXC,QAAQ;IACRC;EACoB,CAAC,GAAAH,IAAA;EACrB,MAAM,CAACI,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAAC,eAAQ,EAAgB,EAAE,CAAC;EAErE,MAAMC,iBAAiB,GAAG,IAAAC,aAAM,EAAuB,IAAI,CAAC;EAE5D,MAAMC,yBAAyB,GAAG,IAAAC,kBAAW,EACzC,MAAAC,KAAA,IAQM;IAAA,IAAAC,qBAAA,EAAAC,kBAAA,EAAAC,YAAA;IAAA,IARC;MACHC,KAAK;MACLC,IAAI;MACJC;IAKJ,CAAC,GAAAN,KAAA;IACG,IAAI,OAAOV,WAAW,KAAK,QAAQ,IAAI,OAAOC,QAAQ,KAAK,QAAQ,EAAE;MACjE;IACJ;IAEA,MAAMgB,gBAAgB,GAAGC,KAAK,CAACC,IAAI,EAAAR,qBAAA,GAACL,iBAAiB,CAACc,OAAO,cAAAT,qBAAA,cAAAA,qBAAA,GAAIR,aAAa,CAAC;IAE/E,MAAMkB,gBAAgB,GAAGJ,gBAAgB,CAACK,SAAS,CAAEC,IAAI,IAAKA,IAAI,CAACT,KAAK,KAAKA,KAAK,CAAC;IAEnF,IAAIU,WAAW;IAEf,IAAIH,gBAAgB,GAAG,CAAC,CAAC,EAAE;MACvB,CAACG,WAAW,CAAC,GAAGP,gBAAgB,CAACQ,MAAM,CAACJ,gBAAgB,EAAE,CAAC,CAAC;IAChE;IAEAJ,gBAAgB,CAACS,IAAI,CAAC;MAClBC,KAAK,EAAE,EAAAf,kBAAA,IAAAC,YAAA,GAACW,WAAW,cAAAX,YAAA,uBAAXA,YAAA,CAAac,KAAK,cAAAf,kBAAA,cAAAA,kBAAA,GAAI,CAAC,IAAI,CAAC;MACpCE,KAAK;MACLc,YAAY,EAAE,IAAIC,IAAI,EAAE,CAACC,WAAW,EAAE;MACtCf,IAAI;MACJC;IACJ,CAAC,CAAC;IAEFC,gBAAgB,CAACc,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK;MAC5B,IAAID,CAAC,CAACL,KAAK,KAAKM,CAAC,CAACN,KAAK,EAAE;QACrB,OAAO,IAAIE,IAAI,CAACI,CAAC,CAACL,YAAY,CAAC,CAACM,OAAO,EAAE,GAAG,IAAIL,IAAI,CAACG,CAAC,CAACJ,YAAY,CAAC,CAACM,OAAO,EAAE;MAClF;MAEA,OAAOD,CAAC,CAACN,KAAK,GAAGK,CAAC,CAACL,KAAK;IAC5B,CAAC,CAAC;IAEF,MAAM;MAAEQ;IAAK,CAAC,GAAG,MAAM,IAAAC,oBAAe,EAAC;MACnCpC,WAAW;MACXC,QAAQ;MACRoC,KAAK,EAAEpB,gBAAgB,CAACqB,KAAK,CAAC,CAAC,EAAE,EAAE;IACvC,CAAC,CAAC;IAEF,IAAIH,IAAI,EAAE;MACN,IAAIjC,gBAAgB,KAAK,SAAS,EAAE;QAChCI,iBAAiB,CAACc,OAAO,GAAGe,IAAI;MACpC,CAAC,MAAM;QACH7B,iBAAiB,CAACc,OAAO,GAAG,IAAI;QAEhChB,gBAAgB,CAAC+B,IAAI,CAAC;MAC1B;IACJ;EACJ,CAAC,EACD,CAACnC,WAAW,EAAEG,aAAa,EAAEF,QAAQ,EAAEC,gBAAgB,CAAC,CAC3D;EAED,MAAMqC,iBAAiB,GAAG,IAAA9B,kBAAW,EAAC,YAAY;IAC9C,IAAI,OAAOT,WAAW,KAAK,QAAQ,IAAI,OAAOC,QAAQ,KAAK,QAAQ,EAAE;MACjE;IACJ;IAEA,MAAM;MAAEkC;IAAK,CAAC,GAAG,MAAM,IAAAK,oBAAe,EAAC;MAAExC,WAAW;MAAEC;IAAS,CAAC,CAAC;IAEjE,IAAIkC,IAAI,EAAE;MACN/B,gBAAgB,CAAC+B,IAAI,CAAC;IAC1B;EACJ,CAAC,EAAE,CAACnC,WAAW,EAAEC,QAAQ,CAAC,CAAC;EAE3B,IAAAwC,gBAAS,EAAC,MAAM;IACZ,KAAKF,iBAAiB,EAAE;EAC5B,CAAC,EAAE,CAACA,iBAAiB,CAAC,CAAC;EAEvB,IAAAE,gBAAS,EAAC,MAAM;IACZ,IAAIvC,gBAAgB,KAAK,SAAS,IAAII,iBAAiB,CAACc,OAAO,EAAE;MAC7DhB,gBAAgB,CAACE,iBAAiB,CAACc,OAAO,CAAC;IAC/C;EACJ,CAAC,EAAE,CAAClB,gBAAgB,CAAC,CAAC;EAEtB,OAAO;IAAEM,yBAAyB;IAAEL,aAAa,EAAEA,aAAa,CAACmC,KAAK,CAAC,CAAC,EAAE,EAAE;EAAE,CAAC;AACnF,CAAC;AAACI,OAAA,CAAA5C,eAAA,GAAAA,eAAA"}
@@ -0,0 +1,4 @@
1
+ export interface ApiFunctionResult<T = null> {
2
+ data?: T;
3
+ status?: number;
4
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","names":[],"sources":["../../src/types/api.ts"],"sourcesContent":["export interface ApiFunctionResult<T = null> {\n data?: T;\n status?: number;\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- export type Category = 'smileys_emotion' | 'people_body' | 'animals_nature' | 'food_drink' | 'travel_places' | 'activities' | 'objects' | 'symbols' | 'flags';
1
+ export type Category = 'history' | 'smileys_emotion' | 'people_body' | 'animals_nature' | 'food_drink' | 'travel_places' | 'activities' | 'objects' | 'symbols' | 'flags';
@@ -1 +1 @@
1
- {"version":3,"file":"category.js","names":[],"sources":["../../src/types/category.ts"],"sourcesContent":["export type Category =\n | 'smileys_emotion'\n | 'people_body'\n | 'animals_nature'\n | 'food_drink'\n | 'travel_places'\n | 'activities'\n | 'objects'\n | 'symbols'\n | 'flags';\n"],"mappings":""}
1
+ {"version":3,"file":"category.js","names":[],"sources":["../../src/types/category.ts"],"sourcesContent":["export type Category =\n | 'history'\n | 'smileys_emotion'\n | 'people_body'\n | 'animals_nature'\n | 'food_drink'\n | 'travel_places'\n | 'activities'\n | 'objects'\n | 'symbols'\n | 'flags';\n"],"mappings":""}
@@ -1 +1,2 @@
1
1
  export declare const convertAsciiToUnicode: (text: string) => string;
2
+ export declare const addSkinToneToEmoji: (emoji: string, skinTone: string) => string;
@@ -3,7 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.convertAsciiToUnicode = void 0;
6
+ exports.convertAsciiToUnicode = exports.addSkinToneToEmoji = void 0;
7
+ var _dataByEmoji = _interopRequireDefault(require("unicode-emoji-json/data-by-emoji.json"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
9
  const asciiList = {
8
10
  '*\\0/*': '1f646',
9
11
  '*\\O/*': '1f646',
@@ -188,4 +190,16 @@ const convertAsciiToUnicode = text => {
188
190
  });
189
191
  };
190
192
  exports.convertAsciiToUnicode = convertAsciiToUnicode;
193
+ const addSkinToneToEmoji = (emoji, skinTone) => emoji.split('\u{200D}').map(rawEmoji => {
194
+ var _emojiList$rawEmoji;
195
+ const parts = [rawEmoji.replace(/\ufe0f/, '')];
196
+
197
+ // @ts-expect-error: Difficult to type external json file
198
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
199
+ if ((_emojiList$rawEmoji = _dataByEmoji.default[rawEmoji]) !== null && _emojiList$rawEmoji !== void 0 && _emojiList$rawEmoji.skin_tone_support) {
200
+ parts.push(skinTone);
201
+ }
202
+ return parts.join('');
203
+ }).join('\u{200D}');
204
+ exports.addSkinToneToEmoji = addSkinToneToEmoji;
191
205
  //# sourceMappingURL=emoji.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"emoji.js","names":["asciiList","O_O","asciiRegexp","regAscii","RegExp","convert","unicode","indexOf","parts","s","split","i","length","part","parseInt","hi","Math","floor","lo","String","fromCharCode","push","join","unescapeHTML","text","unescaped","replace","match","_unescaped$match","convertAsciiToUnicode","entire","m1","m2","m3","toUpperCase","exports"],"sources":["../../src/utils/emoji.ts"],"sourcesContent":["const asciiList: { [key: string]: string } = {\n '*\\\\0/*': '1f646',\n '*\\\\O/*': '1f646',\n '-___-': '1f611',\n \":'-)\": '1f602',\n \"':-)\": '1f605',\n \"':-D\": '1f605',\n '>:-)': '1f606',\n \"':-(\": '1f613',\n '>:-(': '1f620',\n \":'-(\": '1f622',\n 'O:-)': '1f607',\n '0:-3': '1f607',\n '0:-)': '1f607',\n '0;^)': '1f607',\n 'O;-)': '1f607',\n '0;-)': '1f607',\n 'O:-3': '1f607',\n '-__-': '1f611',\n ':-Þ': '1f61b',\n '</3': '1f494',\n \":')\": '1f602',\n ':-D': '1f603',\n \"':)\": '1f605',\n \"'=)\": '1f605',\n \"':D\": '1f605',\n \"'=D\": '1f605',\n '>:)': '1f606',\n '>;)': '1f606',\n '>=)': '1f606',\n ';-)': '1f609',\n '*-)': '1f609',\n ';-]': '1f609',\n ';^)': '1f609',\n \"':(\": '1f613',\n \"'=(\": '1f613',\n ':-*': '1f618',\n ':^*': '1f618',\n '>:P': '1f61c',\n 'X-P': '1f61c',\n '>:[': '1f61e',\n ':-(': '1f61e',\n ':-[': '1f61e',\n '>:(': '1f620',\n \":'(\": '1f622',\n ';-(': '1f622',\n '>.<': '1f623',\n '#-)': '1f635',\n '%-)': '1f635',\n 'X-)': '1f635',\n '\\\\0/': '1f646',\n '\\\\O/': '1f646',\n '0:3': '1f607',\n '0:)': '1f607',\n 'O:)': '1f607',\n 'O=)': '1f607',\n 'O:3': '1f607',\n 'B-)': '1f60e',\n '8-)': '1f60e',\n 'B-D': '1f60e',\n '8-D': '1f60e',\n '-_-': '1f611',\n '>:\\\\': '1f615',\n '>:/': '1f615',\n ':-/': '1f615',\n ':-.': '1f615',\n ':-P': '1f61b',\n ':Þ': '1f61b',\n ':-b': '1f61b',\n ':-O': '1f62e',\n O_O: '1f62e',\n '>:O': '1f62e',\n ':-X': '1f636',\n ':-#': '1f636',\n ':-)': '1f642',\n '(y)': '1f44d',\n '<3': '2764-fe0f',\n '=D': '1f603',\n ';)': '1f609',\n '*)': '1f609',\n ';]': '1f609',\n ';D': '1f609',\n ':*': '1f618',\n '=*': '1f618',\n ':(': '1f61e',\n ':[': '1f61e',\n '=(': '1f61e',\n ':@': '1f620',\n ';(': '1f622',\n 'D:': '1f628',\n ':$': '1f633',\n '=$': '1f633',\n '#)': '1f635',\n '%)': '1f635',\n 'X)': '1f635',\n 'B)': '1f60e',\n '8)': '1f60e',\n ':/': '1f615',\n ':\\\\': '1f615',\n '=/': '1f615',\n '=\\\\': '1f615',\n ':L': '1f615',\n '=L': '1f615',\n ':P': '1f61b',\n '=P': '1f61b',\n ':b': '1f61b',\n ':O': '1f62e',\n ':X': '1f636',\n ':#': '1f636',\n '=X': '1f636',\n '=#': '1f636',\n ':)': '1f642',\n '=]': '1f642',\n '=)': '1f642',\n ':]': '1f642',\n ':D': '1f604',\n};\n\nconst asciiRegexp =\n \"(\\\\*\\\\\\\\0\\\\/\\\\*|\\\\*\\\\\\\\O\\\\/\\\\*|\\\\-___\\\\-|\\\\:'\\\\-\\\\)|'\\\\:\\\\-\\\\)|'\\\\:\\\\-D|\\\\>\\\\:\\\\-\\\\)|>\\\\:\\\\-\\\\)|'\\\\:\\\\-\\\\(|\\\\>\\\\:\\\\-\\\\(|>\\\\:\\\\-\\\\(|\\\\:'\\\\-\\\\(|O\\\\:\\\\-\\\\)|0\\\\:\\\\-3|0\\\\:\\\\-\\\\)|0;\\\\^\\\\)|O;\\\\-\\\\)|0;\\\\-\\\\)|O\\\\:\\\\-3|\\\\-__\\\\-|\\\\:\\\\-Þ|\\\\:\\\\-Þ|\\\\<\\\\/3|<\\\\/3|\\\\:'\\\\)|\\\\:\\\\-D|'\\\\:\\\\)|'\\\\=\\\\)|'\\\\:D|'\\\\=D|\\\\>\\\\:\\\\)|>\\\\:\\\\)|\\\\>;\\\\)|>;\\\\)|\\\\>\\\\=\\\\)|>\\\\=\\\\)|;\\\\-\\\\)|\\\\*\\\\-\\\\)|;\\\\-\\\\]|;\\\\^\\\\)|'\\\\:\\\\(|'\\\\=\\\\(|\\\\:\\\\-\\\\*|\\\\:\\\\^\\\\*|\\\\>\\\\:P|>\\\\:P|X\\\\-P|\\\\>\\\\:\\\\[|>\\\\:\\\\[|\\\\:\\\\-\\\\(|\\\\:\\\\-\\\\[|\\\\>\\\\:\\\\(|>\\\\:\\\\(|\\\\:'\\\\(|;\\\\-\\\\(|\\\\>\\\\.\\\\<|>\\\\.<|#\\\\-\\\\)|%\\\\-\\\\)|X\\\\-\\\\)|\\\\\\\\0\\\\/|\\\\\\\\O\\\\/|0\\\\:3|0\\\\:\\\\)|O\\\\:\\\\)|O\\\\=\\\\)|O\\\\:3|B\\\\-\\\\)|8\\\\-\\\\)|B\\\\-D|8\\\\-D|\\\\-_\\\\-|\\\\>\\\\:\\\\\\\\|>\\\\:\\\\\\\\|\\\\>\\\\:\\\\/|>\\\\:\\\\/|\\\\:\\\\-\\\\/|\\\\:\\\\-\\\\.|\\\\:\\\\-P|\\\\:Þ|\\\\:Þ|\\\\:\\\\-b|\\\\:\\\\-O|O_O|\\\\>\\\\:O|>\\\\:O|\\\\:\\\\-X|\\\\:\\\\-#|\\\\:\\\\-\\\\)|\\\\(y\\\\)|\\\\<3|<3|\\\\=D|;\\\\)|\\\\*\\\\)|;\\\\]|;D|\\\\:\\\\*|\\\\=\\\\*|\\\\:\\\\(|\\\\:\\\\[|\\\\=\\\\(|\\\\:@|;\\\\(|D\\\\:|\\\\:\\\\$|\\\\=\\\\$|#\\\\)|%\\\\)|X\\\\)|B\\\\)|8\\\\)|\\\\:\\\\/|\\\\:\\\\\\\\|\\\\=\\\\/|\\\\=\\\\\\\\|\\\\:L|\\\\=L|\\\\:P|\\\\=P|\\\\:b|\\\\:O|\\\\:X|\\\\:#|\\\\=X|\\\\=#|\\\\:\\\\)|\\\\=\\\\]|\\\\=\\\\)|\\\\:\\\\]|\\\\:D)\";\n\nconst regAscii = new RegExp(\n `<object[^>]*>.*?</object>|<span[^>]*>.*?</span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|((\\\\s|^)${asciiRegexp}(?=\\\\s|$|[!,.?]))`,\n 'gi'\n);\n\nconst convert = (unicode: string) => {\n if (unicode.indexOf('-') > -1) {\n const parts = [];\n\n const s = unicode.split('-');\n\n for (let i = 0; i < s.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n let part: number | string = parseInt(s[i]!, 16);\n\n if (part >= 0x10000 && part <= 0x10ffff) {\n const hi = Math.floor((part - 0x10000) / 0x400) + 0xd800;\n const lo = ((part - 0x10000) % 0x400) + 0xdc00;\n\n part = String.fromCharCode(hi) + String.fromCharCode(lo);\n } else {\n part = String.fromCharCode(part);\n }\n\n parts.push(part);\n }\n\n return parts.join('');\n }\n\n const s = parseInt(unicode, 16);\n\n if (s >= 0x10000 && s <= 0x10ffff) {\n const hi = Math.floor((s - 0x10000) / 0x400) + 0xd800;\n const lo = ((s - 0x10000) % 0x400) + 0xdc00;\n\n return String.fromCharCode(hi) + String.fromCharCode(lo);\n }\n\n return String.fromCharCode(s);\n};\n\nconst unescapeHTML = (text: string) => {\n const unescaped: { [key: string]: string } = {\n '&amp;': '&',\n '&#38;': '&',\n '&#x26;': '&',\n '&lt;': '<',\n '&#60;': '<',\n '&#x3C;': '<',\n '&gt;': '>',\n '&#62;': '>',\n '&#x3E;': '>',\n '&quot;': '\"',\n '&#34;': '\"',\n '&#x22;': '\"',\n '&apos;': \"'\",\n '&#39;': \"'\",\n '&#x27;': \"'\",\n };\n\n return text.replace(\n /&(?:amp|#38|#x26|lt|#60|#x3C|gt|#62|#x3E|apos|#39|#x27|quot|#34|#x22);/gi,\n (match) => unescaped[match] ?? match\n );\n};\n\nexport const convertAsciiToUnicode = (text: string): string => {\n let unicode: string;\n\n return text.replace(regAscii, (entire, m1, m2, m3) => {\n if (typeof m3 === 'undefined' || m3 === '' || !(unescapeHTML(m3 as string) in asciiList)) {\n return entire;\n }\n\n // eslint-disable-next-line no-param-reassign\n m3 = unescapeHTML(m3 as string);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n unicode = asciiList[m3 as string]!.toUpperCase();\n\n return (m2 as string) + convert(unicode);\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"emoji.js","names":["_dataByEmoji","_interopRequireDefault","require","obj","__esModule","default","asciiList","O_O","asciiRegexp","regAscii","RegExp","convert","unicode","indexOf","parts","s","split","i","length","part","parseInt","hi","Math","floor","lo","String","fromCharCode","push","join","unescapeHTML","text","unescaped","replace","match","_unescaped$match","convertAsciiToUnicode","entire","m1","m2","m3","toUpperCase","exports","addSkinToneToEmoji","emoji","skinTone","map","rawEmoji","_emojiList$rawEmoji","emojiList","skin_tone_support"],"sources":["../../src/utils/emoji.ts"],"sourcesContent":["import emojiList from 'unicode-emoji-json/data-by-emoji.json';\n\nconst asciiList: { [key: string]: string } = {\n '*\\\\0/*': '1f646',\n '*\\\\O/*': '1f646',\n '-___-': '1f611',\n \":'-)\": '1f602',\n \"':-)\": '1f605',\n \"':-D\": '1f605',\n '>:-)': '1f606',\n \"':-(\": '1f613',\n '>:-(': '1f620',\n \":'-(\": '1f622',\n 'O:-)': '1f607',\n '0:-3': '1f607',\n '0:-)': '1f607',\n '0;^)': '1f607',\n 'O;-)': '1f607',\n '0;-)': '1f607',\n 'O:-3': '1f607',\n '-__-': '1f611',\n ':-Þ': '1f61b',\n '</3': '1f494',\n \":')\": '1f602',\n ':-D': '1f603',\n \"':)\": '1f605',\n \"'=)\": '1f605',\n \"':D\": '1f605',\n \"'=D\": '1f605',\n '>:)': '1f606',\n '>;)': '1f606',\n '>=)': '1f606',\n ';-)': '1f609',\n '*-)': '1f609',\n ';-]': '1f609',\n ';^)': '1f609',\n \"':(\": '1f613',\n \"'=(\": '1f613',\n ':-*': '1f618',\n ':^*': '1f618',\n '>:P': '1f61c',\n 'X-P': '1f61c',\n '>:[': '1f61e',\n ':-(': '1f61e',\n ':-[': '1f61e',\n '>:(': '1f620',\n \":'(\": '1f622',\n ';-(': '1f622',\n '>.<': '1f623',\n '#-)': '1f635',\n '%-)': '1f635',\n 'X-)': '1f635',\n '\\\\0/': '1f646',\n '\\\\O/': '1f646',\n '0:3': '1f607',\n '0:)': '1f607',\n 'O:)': '1f607',\n 'O=)': '1f607',\n 'O:3': '1f607',\n 'B-)': '1f60e',\n '8-)': '1f60e',\n 'B-D': '1f60e',\n '8-D': '1f60e',\n '-_-': '1f611',\n '>:\\\\': '1f615',\n '>:/': '1f615',\n ':-/': '1f615',\n ':-.': '1f615',\n ':-P': '1f61b',\n ':Þ': '1f61b',\n ':-b': '1f61b',\n ':-O': '1f62e',\n O_O: '1f62e',\n '>:O': '1f62e',\n ':-X': '1f636',\n ':-#': '1f636',\n ':-)': '1f642',\n '(y)': '1f44d',\n '<3': '2764-fe0f',\n '=D': '1f603',\n ';)': '1f609',\n '*)': '1f609',\n ';]': '1f609',\n ';D': '1f609',\n ':*': '1f618',\n '=*': '1f618',\n ':(': '1f61e',\n ':[': '1f61e',\n '=(': '1f61e',\n ':@': '1f620',\n ';(': '1f622',\n 'D:': '1f628',\n ':$': '1f633',\n '=$': '1f633',\n '#)': '1f635',\n '%)': '1f635',\n 'X)': '1f635',\n 'B)': '1f60e',\n '8)': '1f60e',\n ':/': '1f615',\n ':\\\\': '1f615',\n '=/': '1f615',\n '=\\\\': '1f615',\n ':L': '1f615',\n '=L': '1f615',\n ':P': '1f61b',\n '=P': '1f61b',\n ':b': '1f61b',\n ':O': '1f62e',\n ':X': '1f636',\n ':#': '1f636',\n '=X': '1f636',\n '=#': '1f636',\n ':)': '1f642',\n '=]': '1f642',\n '=)': '1f642',\n ':]': '1f642',\n ':D': '1f604',\n};\n\nconst asciiRegexp =\n \"(\\\\*\\\\\\\\0\\\\/\\\\*|\\\\*\\\\\\\\O\\\\/\\\\*|\\\\-___\\\\-|\\\\:'\\\\-\\\\)|'\\\\:\\\\-\\\\)|'\\\\:\\\\-D|\\\\>\\\\:\\\\-\\\\)|>\\\\:\\\\-\\\\)|'\\\\:\\\\-\\\\(|\\\\>\\\\:\\\\-\\\\(|>\\\\:\\\\-\\\\(|\\\\:'\\\\-\\\\(|O\\\\:\\\\-\\\\)|0\\\\:\\\\-3|0\\\\:\\\\-\\\\)|0;\\\\^\\\\)|O;\\\\-\\\\)|0;\\\\-\\\\)|O\\\\:\\\\-3|\\\\-__\\\\-|\\\\:\\\\-Þ|\\\\:\\\\-Þ|\\\\<\\\\/3|<\\\\/3|\\\\:'\\\\)|\\\\:\\\\-D|'\\\\:\\\\)|'\\\\=\\\\)|'\\\\:D|'\\\\=D|\\\\>\\\\:\\\\)|>\\\\:\\\\)|\\\\>;\\\\)|>;\\\\)|\\\\>\\\\=\\\\)|>\\\\=\\\\)|;\\\\-\\\\)|\\\\*\\\\-\\\\)|;\\\\-\\\\]|;\\\\^\\\\)|'\\\\:\\\\(|'\\\\=\\\\(|\\\\:\\\\-\\\\*|\\\\:\\\\^\\\\*|\\\\>\\\\:P|>\\\\:P|X\\\\-P|\\\\>\\\\:\\\\[|>\\\\:\\\\[|\\\\:\\\\-\\\\(|\\\\:\\\\-\\\\[|\\\\>\\\\:\\\\(|>\\\\:\\\\(|\\\\:'\\\\(|;\\\\-\\\\(|\\\\>\\\\.\\\\<|>\\\\.<|#\\\\-\\\\)|%\\\\-\\\\)|X\\\\-\\\\)|\\\\\\\\0\\\\/|\\\\\\\\O\\\\/|0\\\\:3|0\\\\:\\\\)|O\\\\:\\\\)|O\\\\=\\\\)|O\\\\:3|B\\\\-\\\\)|8\\\\-\\\\)|B\\\\-D|8\\\\-D|\\\\-_\\\\-|\\\\>\\\\:\\\\\\\\|>\\\\:\\\\\\\\|\\\\>\\\\:\\\\/|>\\\\:\\\\/|\\\\:\\\\-\\\\/|\\\\:\\\\-\\\\.|\\\\:\\\\-P|\\\\:Þ|\\\\:Þ|\\\\:\\\\-b|\\\\:\\\\-O|O_O|\\\\>\\\\:O|>\\\\:O|\\\\:\\\\-X|\\\\:\\\\-#|\\\\:\\\\-\\\\)|\\\\(y\\\\)|\\\\<3|<3|\\\\=D|;\\\\)|\\\\*\\\\)|;\\\\]|;D|\\\\:\\\\*|\\\\=\\\\*|\\\\:\\\\(|\\\\:\\\\[|\\\\=\\\\(|\\\\:@|;\\\\(|D\\\\:|\\\\:\\\\$|\\\\=\\\\$|#\\\\)|%\\\\)|X\\\\)|B\\\\)|8\\\\)|\\\\:\\\\/|\\\\:\\\\\\\\|\\\\=\\\\/|\\\\=\\\\\\\\|\\\\:L|\\\\=L|\\\\:P|\\\\=P|\\\\:b|\\\\:O|\\\\:X|\\\\:#|\\\\=X|\\\\=#|\\\\:\\\\)|\\\\=\\\\]|\\\\=\\\\)|\\\\:\\\\]|\\\\:D)\";\n\nconst regAscii = new RegExp(\n `<object[^>]*>.*?</object>|<span[^>]*>.*?</span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|((\\\\s|^)${asciiRegexp}(?=\\\\s|$|[!,.?]))`,\n 'gi'\n);\n\nconst convert = (unicode: string) => {\n if (unicode.indexOf('-') > -1) {\n const parts = [];\n\n const s = unicode.split('-');\n\n for (let i = 0; i < s.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n let part: number | string = parseInt(s[i]!, 16);\n\n if (part >= 0x10000 && part <= 0x10ffff) {\n const hi = Math.floor((part - 0x10000) / 0x400) + 0xd800;\n const lo = ((part - 0x10000) % 0x400) + 0xdc00;\n\n part = String.fromCharCode(hi) + String.fromCharCode(lo);\n } else {\n part = String.fromCharCode(part);\n }\n\n parts.push(part);\n }\n\n return parts.join('');\n }\n\n const s = parseInt(unicode, 16);\n\n if (s >= 0x10000 && s <= 0x10ffff) {\n const hi = Math.floor((s - 0x10000) / 0x400) + 0xd800;\n const lo = ((s - 0x10000) % 0x400) + 0xdc00;\n\n return String.fromCharCode(hi) + String.fromCharCode(lo);\n }\n\n return String.fromCharCode(s);\n};\n\nconst unescapeHTML = (text: string) => {\n const unescaped: { [key: string]: string } = {\n '&amp;': '&',\n '&#38;': '&',\n '&#x26;': '&',\n '&lt;': '<',\n '&#60;': '<',\n '&#x3C;': '<',\n '&gt;': '>',\n '&#62;': '>',\n '&#x3E;': '>',\n '&quot;': '\"',\n '&#34;': '\"',\n '&#x22;': '\"',\n '&apos;': \"'\",\n '&#39;': \"'\",\n '&#x27;': \"'\",\n };\n\n return text.replace(\n /&(?:amp|#38|#x26|lt|#60|#x3C|gt|#62|#x3E|apos|#39|#x27|quot|#34|#x22);/gi,\n (match) => unescaped[match] ?? match\n );\n};\n\nexport const convertAsciiToUnicode = (text: string): string => {\n let unicode: string;\n\n return text.replace(regAscii, (entire, m1, m2, m3) => {\n if (typeof m3 === 'undefined' || m3 === '' || !(unescapeHTML(m3 as string) in asciiList)) {\n return entire;\n }\n\n // eslint-disable-next-line no-param-reassign\n m3 = unescapeHTML(m3 as string);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n unicode = asciiList[m3 as string]!.toUpperCase();\n\n return (m2 as string) + convert(unicode);\n });\n};\n\nexport const addSkinToneToEmoji = (emoji: string, skinTone: string): string =>\n emoji\n .split('\\u{200D}')\n .map((rawEmoji) => {\n const parts = [rawEmoji.replace(/\\ufe0f/, '')];\n\n // @ts-expect-error: Difficult to type external json file\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (emojiList[rawEmoji]?.skin_tone_support) {\n parts.push(skinTone);\n }\n\n return parts.join('');\n })\n .join('\\u{200D}');\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chayns-components/emoji-input",
3
- "version": "5.0.0-beta.78",
3
+ "version": "5.0.0-beta.80",
4
4
  "description": "Input field that supports HTML elements and emojis",
5
5
  "keywords": [
6
6
  "chayns",
@@ -68,5 +68,5 @@
68
68
  "publishConfig": {
69
69
  "access": "public"
70
70
  },
71
- "gitHead": "7f9ac216285904f1de551d32a82bd20c32043dd2"
71
+ "gitHead": "64681d2a52f5feeb5db86235d4f26c6162ead172"
72
72
  }