@chayns-components/emoji-input 5.0.0-beta.100

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 (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +45 -0
  3. package/lib/api/item-storage/get.d.ts +8 -0
  4. package/lib/api/item-storage/get.js +37 -0
  5. package/lib/api/item-storage/get.js.map +1 -0
  6. package/lib/api/item-storage/put.d.ts +9 -0
  7. package/lib/api/item-storage/put.js +42 -0
  8. package/lib/api/item-storage/put.js.map +1 -0
  9. package/lib/components/emoji-input/EmojiInput.d.ts +49 -0
  10. package/lib/components/emoji-input/EmojiInput.js +157 -0
  11. package/lib/components/emoji-input/EmojiInput.js.map +1 -0
  12. package/lib/components/emoji-input/EmojiInput.styles.d.ts +13 -0
  13. package/lib/components/emoji-input/EmojiInput.styles.js +145 -0
  14. package/lib/components/emoji-input/EmojiInput.styles.js.map +1 -0
  15. package/lib/components/emoji-picker/EmojiPicker.d.ts +18 -0
  16. package/lib/components/emoji-picker/EmojiPicker.js +51 -0
  17. package/lib/components/emoji-picker/EmojiPicker.js.map +1 -0
  18. package/lib/components/emoji-picker/EmojiPicker.styles.d.ts +5 -0
  19. package/lib/components/emoji-picker/EmojiPicker.styles.js +25 -0
  20. package/lib/components/emoji-picker/EmojiPicker.styles.js.map +1 -0
  21. package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.d.ts +9 -0
  22. package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js +51 -0
  23. package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.js.map +1 -0
  24. package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.d.ts +2 -0
  25. package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.js +27 -0
  26. package/lib/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.js.map +1 -0
  27. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.d.ts +11 -0
  28. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js +131 -0
  29. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js.map +1 -0
  30. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.d.ts +7 -0
  31. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js +99 -0
  32. package/lib/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.js.map +1 -0
  33. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.d.ts +9 -0
  34. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js +116 -0
  35. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js.map +1 -0
  36. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.d.ts +1 -0
  37. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.js +21 -0
  38. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.styles.js.map +1 -0
  39. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.d.ts +18 -0
  40. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js +74 -0
  41. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.js.map +1 -0
  42. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.d.ts +11 -0
  43. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js +104 -0
  44. package/lib/components/emoji-picker/emoji-picker-emojis/emoji/skin-tone-popup/SkinTonePopup.styles.js.map +1 -0
  45. package/lib/components/emoji-picker-popup/EmojiPickerPopup.d.ts +36 -0
  46. package/lib/components/emoji-picker-popup/EmojiPickerPopup.js +150 -0
  47. package/lib/components/emoji-picker-popup/EmojiPickerPopup.js.map +1 -0
  48. package/lib/components/emoji-picker-popup/EmojiPickerPopup.styles.d.ts +7 -0
  49. package/lib/components/emoji-picker-popup/EmojiPickerPopup.styles.js +97 -0
  50. package/lib/components/emoji-picker-popup/EmojiPickerPopup.styles.js.map +1 -0
  51. package/lib/constants/alignment.d.ts +10 -0
  52. package/lib/constants/alignment.js +21 -0
  53. package/lib/constants/alignment.js.map +1 -0
  54. package/lib/constants/categories.d.ts +12 -0
  55. package/lib/constants/categories.js +20 -0
  56. package/lib/constants/categories.js.map +1 -0
  57. package/lib/constants/emoji-de-DE.json +3827 -0
  58. package/lib/constants/emoji.d.ts +8 -0
  59. package/lib/constants/emoji.js +3808 -0
  60. package/lib/constants/emoji.js.map +1 -0
  61. package/lib/constants/externalServerUrl.d.ts +1 -0
  62. package/lib/constants/externalServerUrl.js +9 -0
  63. package/lib/constants/externalServerUrl.js.map +1 -0
  64. package/lib/hooks/emojiHistory.d.ts +22 -0
  65. package/lib/hooks/emojiHistory.js +91 -0
  66. package/lib/hooks/emojiHistory.js.map +1 -0
  67. package/lib/index.d.ts +5 -0
  68. package/lib/index.js +42 -0
  69. package/lib/index.js.map +1 -0
  70. package/lib/types/api.d.ts +4 -0
  71. package/lib/types/api.js +6 -0
  72. package/lib/types/api.js.map +1 -0
  73. package/lib/types/category.d.ts +1 -0
  74. package/lib/types/category.js +6 -0
  75. package/lib/types/category.js.map +1 -0
  76. package/lib/utils/emoji.d.ts +2 -0
  77. package/lib/utils/emoji.js +96 -0
  78. package/lib/utils/emoji.js.map +1 -0
  79. package/lib/utils/environment.d.ts +9 -0
  80. package/lib/utils/environment.js +33 -0
  81. package/lib/utils/environment.js.map +1 -0
  82. package/lib/utils/font.d.ts +1 -0
  83. package/lib/utils/font.js +17 -0
  84. package/lib/utils/font.js.map +1 -0
  85. package/lib/utils/insert.d.ts +19 -0
  86. package/lib/utils/insert.js +50 -0
  87. package/lib/utils/insert.js.map +1 -0
  88. package/lib/utils/selection.d.ts +2 -0
  89. package/lib/utils/selection.js +43 -0
  90. package/lib/utils/selection.js.map +1 -0
  91. package/package.json +72 -0
@@ -0,0 +1,51 @@
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 _dataByGroup = _interopRequireDefault(require("unicode-emoji-json/data-by-group.json"));
10
+ var _EmojiPickerCategories = _interopRequireDefault(require("./emoji-picker-categories/EmojiPickerCategories"));
11
+ var _EmojiPickerEmojis = _interopRequireDefault(require("./emoji-picker-emojis/EmojiPickerEmojis"));
12
+ var _EmojiPicker = require("./EmojiPicker.styles");
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+ const EmojiPicker = _ref => {
17
+ var _emojiCategories$;
18
+ let {
19
+ accessToken,
20
+ onSelect,
21
+ personId
22
+ } = _ref;
23
+ const [searchString, setSearchString] = (0, _react.useState)('');
24
+ const [selectedCategory, setSelectedCategory] = (0, _react.useState)((_emojiCategories$ = _dataByGroup.default[0]) === null || _emojiCategories$ === void 0 ? void 0 : _emojiCategories$.slug);
25
+ const handleCategorySelect = (0, _react.useCallback)(category => {
26
+ setSearchString('');
27
+ setSelectedCategory(category);
28
+ }, []);
29
+ const handleSearchChange = (0, _react.useCallback)(event => {
30
+ setSearchString(event.target.value);
31
+ }, []);
32
+ return /*#__PURE__*/_react.default.createElement(_EmojiPicker.StyledEmojiPicker, null, /*#__PURE__*/_react.default.createElement(_core.Input, {
33
+ onChange: handleSearchChange,
34
+ placeholder: "Suchen",
35
+ value: searchString
36
+ }), /*#__PURE__*/_react.default.createElement(_EmojiPickerEmojis.default, {
37
+ accessToken: accessToken,
38
+ onSelect: onSelect,
39
+ personId: personId,
40
+ searchString: searchString,
41
+ selectedCategory: selectedCategory
42
+ }), /*#__PURE__*/_react.default.createElement(_EmojiPickerCategories.default, {
43
+ onSelect: handleCategorySelect,
44
+ searchString: searchString,
45
+ selectedCategory: selectedCategory
46
+ }));
47
+ };
48
+ EmojiPicker.displayName = 'EmojiPicker';
49
+ var _default = EmojiPicker;
50
+ exports.default = _default;
51
+ //# sourceMappingURL=EmojiPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmojiPicker.js","names":["_core","require","_react","_interopRequireWildcard","_dataByGroup","_interopRequireDefault","_EmojiPickerCategories","_EmojiPickerEmojis","_EmojiPicker","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","EmojiPicker","_ref","_emojiCategories$","accessToken","onSelect","personId","searchString","setSearchString","useState","selectedCategory","setSelectedCategory","emojiCategories","slug","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 emojiCategories from 'unicode-emoji-json/data-by-group.json';\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};\nconst EmojiPicker: FC<EmojiPickerProps> = ({ accessToken, onSelect, personId }) => {\n const [searchString, setSearchString] = useState('');\n const [selectedCategory, setSelectedCategory] = useState(emojiCategories[0]?.slug 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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"}
@@ -0,0 +1,5 @@
1
+ export declare const emojiPickerSize: {
2
+ height: number;
3
+ width: number;
4
+ };
5
+ export declare const StyledEmojiPicker: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.emojiPickerSize = exports.StyledEmojiPicker = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ const emojiPickerSize = {
10
+ height: 285,
11
+ width: 350
12
+ };
13
+ exports.emojiPickerSize = emojiPickerSize;
14
+ const StyledEmojiPicker = _styledComponents.default.div`
15
+ align-items: center;
16
+ display: flex;
17
+ flex-direction: column;
18
+ height: ${emojiPickerSize.height}px;
19
+ justify-content: center;
20
+ padding: 10px 22px;
21
+ width: ${emojiPickerSize.width}px;
22
+ user-select: none;
23
+ `;
24
+ exports.StyledEmojiPicker = StyledEmojiPicker;
25
+ //# sourceMappingURL=EmojiPicker.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmojiPicker.styles.js","names":["_styledComponents","_interopRequireDefault","require","obj","__esModule","default","emojiPickerSize","height","width","exports","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,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEhC,MAAMG,eAAe,GAAG;EAC3BC,MAAM,EAAE,GAAG;EACXC,KAAK,EAAE;AACX,CAAC;AAACC,OAAA,CAAAH,eAAA,GAAAA,eAAA;AAEK,MAAMI,iBAAiB,GAAGC,yBAAM,CAACC,GAAI;AAC5C;AACA;AACA;AACA,cAAcN,eAAe,CAACC,MAAO;AACrC;AACA;AACA,aAAaD,eAAe,CAACE,KAAM;AACnC;AACA,CAAC;AAACC,OAAA,CAAAC,iBAAA,GAAAA,iBAAA"}
@@ -0,0 +1,9 @@
1
+ import { FC } from 'react';
2
+ import type { Category } from '../../../types/category';
3
+ export type EmojiPickerCategoriesProps = {
4
+ onSelect: (category: Category) => void;
5
+ searchString: string;
6
+ selectedCategory: Category;
7
+ };
8
+ declare const EmojiPickerCategories: FC<EmojiPickerCategoriesProps>;
9
+ export default EmojiPickerCategories;
@@ -0,0 +1,51 @@
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 _dataByGroup = _interopRequireDefault(require("unicode-emoji-json/data-by-group.json"));
9
+ var _categories = require("../../../constants/categories");
10
+ var _EmojiPickerCategories = require("./EmojiPickerCategories.styles");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
+ const EmojiPickerCategories = _ref => {
15
+ let {
16
+ onSelect,
17
+ searchString,
18
+ selectedCategory
19
+ } = _ref;
20
+ const isSearchStringGiven = searchString.trim() !== '';
21
+ const categories = (0, _react.useMemo)(() => {
22
+ const categorySlugs = _dataByGroup.default.map(_ref2 => {
23
+ let {
24
+ slug
25
+ } = _ref2;
26
+ return slug;
27
+ });
28
+ categorySlugs.unshift('history');
29
+ return categorySlugs.map(slug => {
30
+ const isSelected = selectedCategory === slug && !isSearchStringGiven;
31
+ return /*#__PURE__*/_react.default.createElement(_EmojiPickerCategories.StyledMotionEmojiPickerCategory, {
32
+ animate: {
33
+ filter: `grayscale(${isSelected ? 0 : 0.75})`,
34
+ opacity: isSelected ? 1 : 0.5
35
+ },
36
+ className: "prevent-lose-focus",
37
+ initial: false,
38
+ key: slug,
39
+ onClick: () => onSelect(slug),
40
+ transition: {
41
+ duration: 0.2
42
+ }
43
+ }, _categories.CATEGORY_EMOJIS[slug]);
44
+ });
45
+ }, [isSearchStringGiven, onSelect, selectedCategory]);
46
+ return /*#__PURE__*/_react.default.createElement(_EmojiPickerCategories.StyledEmojiPickerCategories, null, categories);
47
+ };
48
+ EmojiPickerCategories.displayName = 'EmojiPickerCategories';
49
+ var _default = EmojiPickerCategories;
50
+ exports.default = _default;
51
+ //# sourceMappingURL=EmojiPickerCategories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmojiPickerCategories.js","names":["_react","_interopRequireWildcard","require","_dataByGroup","_interopRequireDefault","_categories","_EmojiPickerCategories","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","EmojiPickerCategories","_ref","onSelect","searchString","selectedCategory","isSearchStringGiven","trim","categories","useMemo","categorySlugs","unicodeEmoji","map","_ref2","slug","unshift","isSelected","createElement","StyledMotionEmojiPickerCategory","animate","filter","opacity","className","initial","onClick","transition","duration","CATEGORY_EMOJIS","StyledEmojiPickerCategories","displayName","_default","exports"],"sources":["../../../../src/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.tsx"],"sourcesContent":["import React, { FC, useMemo } from 'react';\nimport unicodeEmoji from 'unicode-emoji-json/data-by-group.json';\nimport { CATEGORY_EMOJIS } from '../../../constants/categories';\nimport type { Category } from '../../../types/category';\nimport {\n StyledEmojiPickerCategories,\n StyledMotionEmojiPickerCategory,\n} from './EmojiPickerCategories.styles';\n\nexport type EmojiPickerCategoriesProps = {\n onSelect: (category: Category) => void;\n searchString: string;\n selectedCategory: Category;\n};\n\nconst EmojiPickerCategories: FC<EmojiPickerCategoriesProps> = ({\n onSelect,\n searchString,\n selectedCategory,\n}) => {\n const isSearchStringGiven = searchString.trim() !== '';\n\n const categories = useMemo(() => {\n const categorySlugs = unicodeEmoji.map(({ slug }) => slug);\n\n categorySlugs.unshift('history');\n\n return categorySlugs.map((slug) => {\n const isSelected = selectedCategory === slug && !isSearchStringGiven;\n\n return (\n <StyledMotionEmojiPickerCategory\n animate={{\n filter: `grayscale(${isSelected ? 0 : 0.75})`,\n opacity: isSelected ? 1 : 0.5,\n }}\n className=\"prevent-lose-focus\"\n initial={false}\n key={slug}\n onClick={() => onSelect(slug as Category)}\n transition={{ duration: 0.2 }}\n >\n {CATEGORY_EMOJIS[slug as Category]}\n </StyledMotionEmojiPickerCategory>\n );\n });\n }, [isSearchStringGiven, onSelect, selectedCategory]);\n\n return <StyledEmojiPickerCategories>{categories}</StyledEmojiPickerCategories>;\n};\n\nEmojiPickerCategories.displayName = 'EmojiPickerCategories';\n\nexport default EmojiPickerCategories;\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const StyledEmojiPickerCategories: import("styled-components").StyledComponent<"div", any, {}, never>;
2
+ export declare const StyledMotionEmojiPickerCategory: import("styled-components").StyledComponent<import("framer-motion").ForwardRefComponent<HTMLDivElement, import("framer-motion").HTMLMotionProps<"div">>, any, {}, never>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StyledMotionEmojiPickerCategory = exports.StyledEmojiPickerCategories = void 0;
7
+ var _framerMotion = require("framer-motion");
8
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
9
+ var _font = require("../../../utils/font");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const StyledEmojiPickerCategories = _styledComponents.default.div`
12
+ align-items: center;
13
+ border-top: 1px solid rgba(160, 160, 160, 0.3);
14
+ display: flex;
15
+ flex: 0 0 auto;
16
+ justify-content: space-between;
17
+ padding-top: 10px;
18
+ width: 100%;
19
+ `;
20
+ exports.StyledEmojiPickerCategories = StyledEmojiPickerCategories;
21
+ const StyledMotionEmojiPickerCategory = (0, _styledComponents.default)(_framerMotion.motion.div)`
22
+ cursor: pointer;
23
+ font-family: ${_font.getFontFamily};
24
+ font-size: 20px;
25
+ `;
26
+ exports.StyledMotionEmojiPickerCategory = StyledMotionEmojiPickerCategory;
27
+ //# sourceMappingURL=EmojiPickerCategories.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmojiPickerCategories.styles.js","names":["_framerMotion","require","_styledComponents","_interopRequireDefault","_font","obj","__esModule","default","StyledEmojiPickerCategories","styled","div","exports","StyledMotionEmojiPickerCategory","motion","getFontFamily"],"sources":["../../../../src/components/emoji-picker/emoji-picker-categories/EmojiPickerCategories.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport styled from 'styled-components';\nimport { getFontFamily } from '../../../utils/font';\n\nexport const StyledEmojiPickerCategories = styled.div`\n align-items: center;\n border-top: 1px solid rgba(160, 160, 160, 0.3);\n display: flex;\n flex: 0 0 auto;\n justify-content: space-between;\n padding-top: 10px;\n width: 100%;\n`;\n\nexport const StyledMotionEmojiPickerCategory = styled(motion.div)`\n cursor: pointer;\n font-family: ${getFontFamily};\n font-size: 20px;\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAAoD,SAAAE,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE7C,MAAMG,2BAA2B,GAAGC,yBAAM,CAACC,GAAI;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAACC,OAAA,CAAAH,2BAAA,GAAAA,2BAAA;AAEK,MAAMI,+BAA+B,GAAG,IAAAH,yBAAM,EAACI,oBAAM,CAACH,GAAG,CAAE;AAClE;AACA,mBAAmBI,mBAAc;AACjC;AACA,CAAC;AAACH,OAAA,CAAAC,+BAAA,GAAAA,+BAAA"}
@@ -0,0 +1,11 @@
1
+ import { FC } from 'react';
2
+ import type { Category } from '../../../types/category';
3
+ export type EmojiPickerEmojisProps = {
4
+ accessToken?: string;
5
+ onSelect: (emoji: string) => void;
6
+ personId?: string;
7
+ searchString: string;
8
+ selectedCategory: Category;
9
+ };
10
+ declare const EmojiPickerEmojis: FC<EmojiPickerEmojisProps>;
11
+ export default EmojiPickerEmojis;
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _emojilib = _interopRequireDefault(require("emojilib"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _dataByEmoji = _interopRequireDefault(require("unicode-emoji-json/data-by-emoji.json"));
10
+ var _dataByGroup = _interopRequireDefault(require("unicode-emoji-json/data-by-group.json"));
11
+ var _emojiDeDE = _interopRequireDefault(require("../../../constants/emoji-de-DE.json"));
12
+ var _emojiHistory = require("../../../hooks/emojiHistory");
13
+ var _Emoji = _interopRequireDefault(require("./emoji/Emoji"));
14
+ var _EmojiPickerEmojis = require("./EmojiPickerEmojis.styles");
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+ const EmojiPickerEmojis = _ref => {
19
+ let {
20
+ accessToken,
21
+ onSelect,
22
+ personId,
23
+ searchString,
24
+ selectedCategory
25
+ } = _ref;
26
+ const [shouldPreventScroll, setShouldPreventScroll] = (0, _react.useState)(false);
27
+ const {
28
+ addOrUpdateEmojiInHistory,
29
+ historyEmojis
30
+ } = (0, _emojiHistory.useEmojiHistory)({
31
+ accessToken,
32
+ personId,
33
+ selectedCategory
34
+ });
35
+ const handleSelect = (0, _react.useCallback)(_ref2 => {
36
+ let {
37
+ emoji,
38
+ name,
39
+ skin_tone_support
40
+ } = _ref2;
41
+ onSelect(emoji);
42
+ void addOrUpdateEmojiInHistory({
43
+ emoji,
44
+ name,
45
+ skin_tone_support
46
+ });
47
+ }, [addOrUpdateEmojiInHistory, onSelect]);
48
+ const emojis = (0, _react.useMemo)(() => {
49
+ var _emojiCategories$find;
50
+ if (searchString.trim() !== '') {
51
+ const lowerSearchString = searchString.toLowerCase();
52
+ const searchResults = [];
53
+ Object.entries(_dataByEmoji.default).forEach(_ref3 => {
54
+ let [emoji, {
55
+ name,
56
+ skin_tone_support
57
+ }] = _ref3;
58
+ // @ts-expect-error: Type is correct here
59
+ const keywords = _emojilib.default[emoji];
60
+ // @ts-expect-error: Type is correct here
61
+ const germanKeywords = _emojiDeDE.default[emoji];
62
+ if (name.includes(lowerSearchString) || keywords !== null && keywords !== void 0 && keywords.some(keyword => keyword.includes(lowerSearchString)) || germanKeywords !== null && germanKeywords !== void 0 && germanKeywords.some(keyword => keyword.includes(lowerSearchString))) {
63
+ searchResults.push( /*#__PURE__*/_react.default.createElement(_Emoji.default, {
64
+ emoji: emoji,
65
+ isSkinToneSupported: skin_tone_support,
66
+ key: name,
67
+ onPopupVisibilityChange: setShouldPreventScroll,
68
+ onSelect: e => handleSelect({
69
+ emoji: e,
70
+ name,
71
+ skin_tone_support
72
+ })
73
+ }));
74
+ }
75
+ });
76
+ return searchResults;
77
+ }
78
+ if (selectedCategory === 'history') {
79
+ return historyEmojis.map(_ref4 => {
80
+ let {
81
+ emoji,
82
+ name,
83
+ skin_tone_support
84
+ } = _ref4;
85
+ return /*#__PURE__*/_react.default.createElement(_Emoji.default, {
86
+ emoji: emoji,
87
+ key: name,
88
+ onPopupVisibilityChange: setShouldPreventScroll,
89
+ onSelect: e => handleSelect({
90
+ emoji: e,
91
+ name,
92
+ skin_tone_support
93
+ }),
94
+ isSkinToneSupported: false
95
+ });
96
+ });
97
+ }
98
+ return (_emojiCategories$find = _dataByGroup.default.find(_ref5 => {
99
+ let {
100
+ slug
101
+ } = _ref5;
102
+ return slug === selectedCategory;
103
+ })) === null || _emojiCategories$find === void 0 ? void 0 : _emojiCategories$find.emojis.map(_ref6 => {
104
+ let {
105
+ emoji,
106
+ name,
107
+ skin_tone_support
108
+ } = _ref6;
109
+ return /*#__PURE__*/_react.default.createElement(_Emoji.default, {
110
+ emoji: emoji,
111
+ isSkinToneSupported: skin_tone_support,
112
+ key: name,
113
+ onPopupVisibilityChange: setShouldPreventScroll,
114
+ onSelect: e => handleSelect({
115
+ emoji: e,
116
+ name,
117
+ skin_tone_support
118
+ })
119
+ });
120
+ });
121
+ }, [handleSelect, historyEmojis, searchString, selectedCategory]);
122
+ const shouldShowNoContentInfo = !emojis || emojis.length === 0;
123
+ return /*#__PURE__*/_react.default.createElement(_EmojiPickerEmojis.StyledEmojiPickerEmojis, {
124
+ shouldPreventScroll: shouldPreventScroll,
125
+ shouldShowNoContentInfo: shouldShowNoContentInfo
126
+ }, emojis, shouldShowNoContentInfo && /*#__PURE__*/_react.default.createElement(_EmojiPickerEmojis.StyledEmojiPickerEmojisNoContentInfo, null, "Hier werden die zuletzt verwendeten Emojis angezeigt, die \xFCber diese Auswahl gew\xE4hlt wurden."));
127
+ };
128
+ EmojiPickerEmojis.displayName = 'EmojiPickerEmojis';
129
+ var _default = EmojiPickerEmojis;
130
+ exports.default = _default;
131
+ //# sourceMappingURL=EmojiPickerEmojis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmojiPickerEmojis.js","names":["_emojilib","_interopRequireDefault","require","_react","_interopRequireWildcard","_dataByEmoji","_dataByGroup","_emojiDeDE","_emojiHistory","_Emoji","_EmojiPickerEmojis","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","EmojiPickerEmojis","_ref","accessToken","onSelect","personId","searchString","selectedCategory","shouldPreventScroll","setShouldPreventScroll","useState","addOrUpdateEmojiInHistory","historyEmojis","useEmojiHistory","handleSelect","useCallback","_ref2","emoji","name","skin_tone_support","emojis","useMemo","_emojiCategories$find","trim","lowerSearchString","toLowerCase","searchResults","entries","emojiList","forEach","_ref3","keywords","emojiLib","germanKeywords","germanEmojiLib","includes","some","keyword","push","createElement","isSkinToneSupported","onPopupVisibilityChange","e","map","_ref4","emojiCategories","find","_ref5","slug","_ref6","shouldShowNoContentInfo","length","StyledEmojiPickerEmojis","StyledEmojiPickerEmojisNoContentInfo","displayName","_default","exports"],"sources":["../../../../src/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.tsx"],"sourcesContent":["import emojiLib from 'emojilib';\nimport React, { FC, useCallback, useMemo, useState } from 'react';\nimport emojiList from 'unicode-emoji-json/data-by-emoji.json';\nimport emojiCategories from 'unicode-emoji-json/data-by-group.json';\nimport germanEmojiLib from '../../../constants/emoji-de-DE.json';\nimport { useEmojiHistory } from '../../../hooks/emojiHistory';\nimport type { Category } from '../../../types/category';\nimport Emoji from './emoji/Emoji';\nimport {\n StyledEmojiPickerEmojis,\n StyledEmojiPickerEmojisNoContentInfo,\n} from './EmojiPickerEmojis.styles';\n\nexport type EmojiPickerEmojisProps = {\n accessToken?: string;\n onSelect: (emoji: string) => void;\n personId?: string;\n searchString: string;\n selectedCategory: Category;\n};\n\nconst EmojiPickerEmojis: FC<EmojiPickerEmojisProps> = ({\n accessToken,\n onSelect,\n personId,\n searchString,\n selectedCategory,\n}) => {\n const [shouldPreventScroll, setShouldPreventScroll] = useState(false);\n\n const { addOrUpdateEmojiInHistory, historyEmojis } = useEmojiHistory({\n accessToken,\n personId,\n selectedCategory,\n });\n\n const handleSelect = useCallback(\n ({\n emoji,\n name,\n skin_tone_support,\n }: {\n emoji: string;\n name: string;\n skin_tone_support: boolean;\n }) => {\n onSelect(emoji);\n\n void addOrUpdateEmojiInHistory({ emoji, name, skin_tone_support });\n },\n [addOrUpdateEmojiInHistory, onSelect]\n );\n\n const emojis = useMemo(() => {\n if (searchString.trim() !== '') {\n const lowerSearchString = searchString.toLowerCase();\n\n const searchResults: JSX.Element[] = [];\n\n Object.entries(emojiList).forEach(([emoji, { name, skin_tone_support }]) => {\n // @ts-expect-error: Type is correct here\n const keywords = emojiLib[emoji] as string[] | undefined;\n // @ts-expect-error: Type is correct here\n const germanKeywords = germanEmojiLib[emoji] as string[] | undefined;\n\n if (\n name.includes(lowerSearchString) ||\n keywords?.some((keyword) => keyword.includes(lowerSearchString)) ||\n germanKeywords?.some((keyword) => keyword.includes(lowerSearchString))\n ) {\n searchResults.push(\n <Emoji\n emoji={emoji}\n isSkinToneSupported={skin_tone_support}\n key={name}\n onPopupVisibilityChange={setShouldPreventScroll}\n onSelect={(e) => handleSelect({ emoji: e, name, skin_tone_support })}\n />\n );\n }\n });\n\n return searchResults;\n }\n\n if (selectedCategory === 'history') {\n return historyEmojis.map(({ emoji, name, skin_tone_support }) => (\n <Emoji\n emoji={emoji}\n key={name}\n onPopupVisibilityChange={setShouldPreventScroll}\n onSelect={(e) => handleSelect({ emoji: e, name, skin_tone_support })}\n isSkinToneSupported={false}\n />\n ));\n }\n\n return emojiCategories\n .find(({ slug }) => slug === selectedCategory)\n ?.emojis.map(({ emoji, name, skin_tone_support }) => (\n <Emoji\n emoji={emoji}\n isSkinToneSupported={skin_tone_support}\n key={name}\n onPopupVisibilityChange={setShouldPreventScroll}\n onSelect={(e) => handleSelect({ emoji: e, name, skin_tone_support })}\n />\n ));\n }, [handleSelect, historyEmojis, searchString, selectedCategory]);\n\n const shouldShowNoContentInfo = !emojis || emojis.length === 0;\n\n return (\n <StyledEmojiPickerEmojis\n shouldPreventScroll={shouldPreventScroll}\n shouldShowNoContentInfo={shouldShowNoContentInfo}\n >\n {emojis}\n {shouldShowNoContentInfo && (\n <StyledEmojiPickerEmojisNoContentInfo>\n Hier werden die zuletzt verwendeten Emojis angezeigt, die über diese Auswahl\n gewählt wurden.\n </StyledEmojiPickerEmojisNoContentInfo>\n )}\n </StyledEmojiPickerEmojis>\n );\n};\n\nEmojiPickerEmojis.displayName = 'EmojiPickerEmojis';\n\nexport default EmojiPickerEmojis;\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare const StyledEmojiPickerEmojis: import("styled-components").StyledComponent<"div", any, {
2
+ shouldPreventScroll: boolean;
3
+ shouldShowNoContentInfo: boolean;
4
+ } & {
5
+ theme: import("@chayns-components/core/lib/components/color-scheme-provider/ColorSchemeProvider").Theme;
6
+ }, never>;
7
+ export declare const StyledEmojiPickerEmojisNoContentInfo: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StyledEmojiPickerEmojisNoContentInfo = exports.StyledEmojiPickerEmojis = void 0;
7
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
8
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
9
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
10
+ const StyledEmojiPickerEmojis = _styledComponents.default.div`
11
+ display: ${_ref => {
12
+ let {
13
+ shouldShowNoContentInfo
14
+ } = _ref;
15
+ return shouldShowNoContentInfo ? 'flex' : 'grid';
16
+ }};
17
+ flex: 1 1 auto;
18
+ grid-template-columns: repeat(auto-fill, minmax(48px, 1fr));
19
+ grid-template-rows: min-content;
20
+ overflow-y: ${_ref2 => {
21
+ let {
22
+ shouldPreventScroll
23
+ } = _ref2;
24
+ return shouldPreventScroll ? 'hidden' : 'scroll';
25
+ }};
26
+ padding: 5px 0 5px 5px;
27
+ position: relative;
28
+ width: 100%;
29
+
30
+ ${_ref3 => {
31
+ let {
32
+ shouldShowNoContentInfo
33
+ } = _ref3;
34
+ return shouldShowNoContentInfo && (0, _styledComponents.css)`
35
+ align-items: center;
36
+ `;
37
+ }}
38
+
39
+ ${_ref4 => {
40
+ let {
41
+ shouldPreventScroll
42
+ } = _ref4;
43
+ return shouldPreventScroll && (0, _styledComponents.css)`
44
+ padding-right: 5px;
45
+ `;
46
+ }}
47
+
48
+ // Styles for custom scrollbar
49
+ ::-webkit-scrollbar {
50
+ width: 5px;
51
+ }
52
+
53
+ ::-webkit-scrollbar-track {
54
+ background-color: transparent;
55
+ }
56
+
57
+ ::-webkit-scrollbar-button {
58
+ background-color: transparent;
59
+ height: 5px;
60
+ }
61
+
62
+ ::-webkit-scrollbar-thumb {
63
+ background-color: rgba(
64
+ ${_ref5 => {
65
+ let {
66
+ theme
67
+ } = _ref5;
68
+ return theme['text-rgb'];
69
+ }},
70
+ 0.15
71
+ );
72
+ border-radius: 20px;
73
+ }
74
+
75
+ // Scrollbar styles for Firefox. The above styles are not supported in Firefox, these styles are
76
+ // only supported in Firefox:
77
+ * {
78
+ scrollbar-color: rgba(
79
+ ${_ref6 => {
80
+ let {
81
+ theme
82
+ } = _ref6;
83
+ return theme['text-rgb'];
84
+ }},
85
+ 0.15
86
+ )
87
+ transparent;
88
+ scrollbar-width: thin;
89
+ }
90
+ `;
91
+ exports.StyledEmojiPickerEmojis = StyledEmojiPickerEmojis;
92
+ const StyledEmojiPickerEmojisNoContentInfo = _styledComponents.default.div`
93
+ font-size: 85%;
94
+ opacity: 0.85;
95
+ padding: 0 12.5%;
96
+ text-align: center;
97
+ `;
98
+ exports.StyledEmojiPickerEmojisNoContentInfo = StyledEmojiPickerEmojisNoContentInfo;
99
+ //# sourceMappingURL=EmojiPickerEmojis.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmojiPickerEmojis.styles.js","names":["_styledComponents","_interopRequireWildcard","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","StyledEmojiPickerEmojis","styled","div","_ref","shouldShowNoContentInfo","_ref2","shouldPreventScroll","_ref3","css","_ref4","_ref5","theme","_ref6","exports","StyledEmojiPickerEmojisNoContentInfo"],"sources":["../../../../src/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.styles.ts"],"sourcesContent":["import type { WithTheme } from '@chayns-components/core';\nimport styled, { css } from 'styled-components';\n\ntype StyledEmojiPickerEmojisProps = WithTheme<{\n shouldPreventScroll: boolean;\n shouldShowNoContentInfo: boolean;\n}>;\n\nexport const StyledEmojiPickerEmojis = styled.div<StyledEmojiPickerEmojisProps>`\n display: ${({ shouldShowNoContentInfo }) => (shouldShowNoContentInfo ? 'flex' : 'grid')};\n flex: 1 1 auto;\n grid-template-columns: repeat(auto-fill, minmax(48px, 1fr));\n grid-template-rows: min-content;\n overflow-y: ${({ shouldPreventScroll }) => (shouldPreventScroll ? 'hidden' : 'scroll')};\n padding: 5px 0 5px 5px;\n position: relative;\n width: 100%;\n\n ${({ shouldShowNoContentInfo }) =>\n shouldShowNoContentInfo &&\n css`\n align-items: center;\n `}\n\n ${({ shouldPreventScroll }) =>\n shouldPreventScroll &&\n css`\n padding-right: 5px;\n `}\n\n // Styles for custom scrollbar\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(\n ${({ theme }: StyledEmojiPickerEmojisProps) => theme['text-rgb']},\n 0.15\n );\n border-radius: 20px;\n }\n\n // Scrollbar styles for Firefox. The above styles are not supported in Firefox, these styles are\n // only supported in Firefox:\n * {\n scrollbar-color: rgba(\n ${({ theme }: StyledEmojiPickerEmojisProps) => theme['text-rgb']},\n 0.15\n )\n transparent;\n scrollbar-width: thin;\n }\n`;\n\nexport const StyledEmojiPickerEmojisNoContentInfo = styled.div`\n font-size: 85%;\n opacity: 0.85;\n padding: 0 12.5%;\n text-align: center;\n`;\n"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAgD,SAAAC,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,SAAAH,wBAAAO,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;AAOzC,MAAMW,uBAAuB,GAAGC,yBAAM,CAACC,GAAkC;AAChF,eAAeC,IAAA;EAAA,IAAC;IAAEC;EAAwB,CAAC,GAAAD,IAAA;EAAA,OAAMC,uBAAuB,GAAG,MAAM,GAAG,MAAM;AAAA,CAAE;AAC5F;AACA;AACA;AACA,kBAAkBC,KAAA;EAAA,IAAC;IAAEC;EAAoB,CAAC,GAAAD,KAAA;EAAA,OAAMC,mBAAmB,GAAG,QAAQ,GAAG,QAAQ;AAAA,CAAE;AAC3F;AACA;AACA;AACA;AACA,MAAMC,KAAA;EAAA,IAAC;IAAEH;EAAwB,CAAC,GAAAG,KAAA;EAAA,OAC1BH,uBAAuB,IACvB,IAAAI,qBAAG,CAAC;AACZ;AACA,SAAS;AAAA,CAAC;AACV;AACA,MAAMC,KAAA;EAAA,IAAC;IAAEH;EAAoB,CAAC,GAAAG,KAAA;EAAA,OACtBH,mBAAmB,IACnB,IAAAE,qBAAG,CAAC;AACZ;AACA,SAAS;AAAA,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcE,KAAA;EAAA,IAAC;IAAEC;EAAoC,CAAC,GAAAD,KAAA;EAAA,OAAKC,KAAK,CAAC,UAAU,CAAC;AAAA,CAAC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkBC,KAAA;EAAA,IAAC;IAAED;EAAoC,CAAC,GAAAC,KAAA;EAAA,OAAKD,KAAK,CAAC,UAAU,CAAC;AAAA,CAAC;AACjF;AACA;AACA;AACA;AACA;AACA,CAAC;AAACE,OAAA,CAAAb,uBAAA,GAAAA,uBAAA;AAEK,MAAMc,oCAAoC,GAAGb,yBAAM,CAACC,GAAI;AAC/D;AACA;AACA;AACA;AACA,CAAC;AAACW,OAAA,CAAAC,oCAAA,GAAAA,oCAAA"}
@@ -0,0 +1,9 @@
1
+ import { FC } from 'react';
2
+ export type EmojiProps = {
3
+ emoji: string;
4
+ isSkinToneSupported: boolean;
5
+ onPopupVisibilityChange: (isVisible: boolean) => void;
6
+ onSelect: (emoji: string) => void;
7
+ };
8
+ declare const Emoji: FC<EmojiProps>;
9
+ export default Emoji;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _framerMotion = require("framer-motion");
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _alignment = require("../../../../constants/alignment");
10
+ var _Emoji = require("./Emoji.styles");
11
+ var _SkinTonePopup = _interopRequireDefault(require("./skin-tone-popup/SkinTonePopup"));
12
+ var _SkinTonePopup2 = require("./skin-tone-popup/SkinTonePopup.styles");
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+ const Emoji = _ref => {
17
+ let {
18
+ emoji,
19
+ isSkinToneSupported,
20
+ onPopupVisibilityChange,
21
+ onSelect
22
+ } = _ref;
23
+ const [shouldShowPopup, setShouldShowPopup] = (0, _react.useState)(false);
24
+ const [skinTonePopupAnchorAlignment, setSkinTonePopupAnchorAlignment] = (0, _react.useState)(_alignment.AnchorAlignment.Top);
25
+ const [skinTonePopupAnchorOffset, setSkinTonePopupAnchorOffset] = (0, _react.useState)(0);
26
+ const [skinTonePopupOverlayPosition, setSkinTonePopupOverlayPosition] = (0, _react.useState)({
27
+ top: 0
28
+ });
29
+ const [skinTonePopupPosition, setSkinTonePopupPosition] = (0, _react.useState)({
30
+ left: 0,
31
+ top: 0
32
+ });
33
+ const handleClick = (0, _react.useCallback)(() => {
34
+ onSelect(emoji);
35
+ }, [emoji, onSelect]);
36
+ const handleContextMenu = (0, _react.useCallback)(event => {
37
+ event.preventDefault();
38
+ event.stopPropagation();
39
+ const {
40
+ currentTarget: element,
41
+ currentTarget: {
42
+ parentElement
43
+ }
44
+ } = event;
45
+ if (parentElement) {
46
+ const {
47
+ height: elementHeight,
48
+ left: elementLeft,
49
+ top: elementTop,
50
+ width: elementWidth
51
+ } = element.getBoundingClientRect();
52
+ const {
53
+ height: parentHeight,
54
+ left: parentLeft,
55
+ top: parentTop,
56
+ width: parentWidth
57
+ } = parentElement.getBoundingClientRect();
58
+ const {
59
+ scrollTop
60
+ } = parentElement;
61
+ let anchorAlignment = _alignment.AnchorAlignment.Top;
62
+ let anchorOffset = 0;
63
+ let left = elementLeft - parentLeft - _SkinTonePopup2.skinTonePopupContentSize.width / 2 + elementWidth / 2;
64
+ let top = elementTop - parentTop + elementHeight + scrollTop;
65
+ const maxLeft = parentWidth - _SkinTonePopup2.skinTonePopupContentSize.width - 12;
66
+ const minLeft = 12;
67
+ if (left < minLeft) {
68
+ anchorOffset = left - minLeft;
69
+ left = minLeft;
70
+ } else if (left > maxLeft) {
71
+ anchorOffset = left - maxLeft;
72
+ left = maxLeft;
73
+ }
74
+ if (top + _SkinTonePopup2.skinTonePopupContentSize.height > parentHeight + scrollTop) {
75
+ anchorAlignment = _alignment.AnchorAlignment.Bottom;
76
+ top -= elementHeight + _SkinTonePopup2.skinTonePopupContentSize.height;
77
+ }
78
+ if (isSkinToneSupported) {
79
+ setSkinTonePopupAnchorAlignment(anchorAlignment);
80
+ setSkinTonePopupAnchorOffset(anchorOffset);
81
+ setSkinTonePopupPosition({
82
+ left,
83
+ top
84
+ });
85
+ setSkinTonePopupOverlayPosition({
86
+ top: scrollTop
87
+ });
88
+ setShouldShowPopup(true);
89
+ }
90
+ }
91
+ }, [isSkinToneSupported]);
92
+ const handleHidePopup = (0, _react.useCallback)(() => setShouldShowPopup(false), []);
93
+ (0, _react.useEffect)(() => {
94
+ onPopupVisibilityChange(shouldShowPopup);
95
+ }, [onPopupVisibilityChange, shouldShowPopup]);
96
+ return /*#__PURE__*/_react.default.createElement(_Emoji.StyledEmoji, {
97
+ className: "prevent-lose-focus",
98
+ onClick: handleClick,
99
+ onContextMenu: handleContextMenu
100
+ }, emoji, /*#__PURE__*/_react.default.createElement(_framerMotion.AnimatePresence, {
101
+ initial: false
102
+ }, shouldShowPopup && /*#__PURE__*/_react.default.createElement(_SkinTonePopup.default, {
103
+ anchorAlignment: skinTonePopupAnchorAlignment,
104
+ anchorOffset: skinTonePopupAnchorOffset,
105
+ emoji: emoji,
106
+ key: emoji,
107
+ onHidePopup: handleHidePopup,
108
+ onSelect: onSelect,
109
+ overlayPosition: skinTonePopupOverlayPosition,
110
+ position: skinTonePopupPosition
111
+ })));
112
+ };
113
+ Emoji.displayName = 'Emoji';
114
+ var _default = Emoji;
115
+ exports.default = _default;
116
+ //# sourceMappingURL=Emoji.js.map