@atlaskit/emoji 67.0.7 → 67.1.0

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 (140) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/api/EmojiResource.js +12 -1
  3. package/dist/cjs/components/common/EmojiActions.js +2 -2
  4. package/dist/cjs/components/hooks.js +8 -5
  5. package/dist/cjs/components/picker/EmojiPickerComponent.js +23 -40
  6. package/dist/cjs/components/picker/EmojiPickerList.js +20 -43
  7. package/dist/cjs/components/picker/EmojiPickerListSearch.js +53 -117
  8. package/dist/cjs/components/picker/VirtualList.js +100 -180
  9. package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +0 -10
  10. package/dist/cjs/i18n/cs.js +35 -34
  11. package/dist/cjs/i18n/da.js +35 -34
  12. package/dist/cjs/i18n/de.js +35 -34
  13. package/dist/cjs/i18n/en.js +35 -34
  14. package/dist/cjs/i18n/en_GB.js +35 -34
  15. package/dist/cjs/i18n/es.js +35 -34
  16. package/dist/cjs/i18n/fi.js +35 -34
  17. package/dist/cjs/i18n/fr.js +35 -34
  18. package/dist/cjs/i18n/hu.js +35 -34
  19. package/dist/cjs/i18n/it.js +35 -34
  20. package/dist/cjs/i18n/ja.js +35 -34
  21. package/dist/cjs/i18n/ko.js +35 -34
  22. package/dist/cjs/i18n/nb.js +35 -34
  23. package/dist/cjs/i18n/nl.js +35 -34
  24. package/dist/cjs/i18n/pl.js +35 -34
  25. package/dist/cjs/i18n/pt_BR.js +35 -34
  26. package/dist/cjs/i18n/ru.js +35 -34
  27. package/dist/cjs/i18n/sv.js +35 -34
  28. package/dist/cjs/i18n/th.js +35 -34
  29. package/dist/cjs/i18n/tr.js +35 -34
  30. package/dist/cjs/i18n/uk.js +35 -34
  31. package/dist/cjs/i18n/vi.js +35 -34
  32. package/dist/cjs/i18n/zh.js +35 -34
  33. package/dist/cjs/i18n/zh_TW.js +35 -34
  34. package/dist/cjs/types.js +7 -1
  35. package/dist/cjs/util/constants.js +4 -2
  36. package/dist/cjs/version.json +1 -1
  37. package/dist/es2019/api/EmojiResource.js +13 -2
  38. package/dist/es2019/components/common/EmojiActions.js +1 -1
  39. package/dist/es2019/components/hooks.js +7 -4
  40. package/dist/es2019/components/picker/EmojiPickerComponent.js +24 -41
  41. package/dist/es2019/components/picker/EmojiPickerList.js +17 -40
  42. package/dist/es2019/components/picker/EmojiPickerListSearch.js +51 -98
  43. package/dist/es2019/components/picker/VirtualList.js +71 -113
  44. package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +0 -10
  45. package/dist/es2019/i18n/cs.js +35 -34
  46. package/dist/es2019/i18n/da.js +35 -34
  47. package/dist/es2019/i18n/de.js +35 -34
  48. package/dist/es2019/i18n/en.js +35 -34
  49. package/dist/es2019/i18n/en_GB.js +35 -34
  50. package/dist/es2019/i18n/es.js +35 -34
  51. package/dist/es2019/i18n/fi.js +35 -34
  52. package/dist/es2019/i18n/fr.js +35 -34
  53. package/dist/es2019/i18n/hu.js +35 -34
  54. package/dist/es2019/i18n/it.js +35 -34
  55. package/dist/es2019/i18n/ja.js +35 -34
  56. package/dist/es2019/i18n/ko.js +35 -34
  57. package/dist/es2019/i18n/nb.js +35 -34
  58. package/dist/es2019/i18n/nl.js +35 -34
  59. package/dist/es2019/i18n/pl.js +35 -34
  60. package/dist/es2019/i18n/pt_BR.js +35 -34
  61. package/dist/es2019/i18n/ru.js +35 -34
  62. package/dist/es2019/i18n/sv.js +35 -34
  63. package/dist/es2019/i18n/th.js +35 -34
  64. package/dist/es2019/i18n/tr.js +35 -34
  65. package/dist/es2019/i18n/uk.js +35 -34
  66. package/dist/es2019/i18n/vi.js +35 -34
  67. package/dist/es2019/i18n/zh.js +35 -34
  68. package/dist/es2019/i18n/zh_TW.js +35 -34
  69. package/dist/es2019/types.js +5 -0
  70. package/dist/es2019/util/constants.js +1 -0
  71. package/dist/es2019/version.json +1 -1
  72. package/dist/esm/api/EmojiResource.js +13 -2
  73. package/dist/esm/components/common/EmojiActions.js +1 -1
  74. package/dist/esm/components/hooks.js +7 -4
  75. package/dist/esm/components/picker/EmojiPickerComponent.js +24 -41
  76. package/dist/esm/components/picker/EmojiPickerList.js +21 -40
  77. package/dist/esm/components/picker/EmojiPickerListSearch.js +51 -117
  78. package/dist/esm/components/picker/VirtualList.js +99 -180
  79. package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +0 -10
  80. package/dist/esm/i18n/cs.js +35 -34
  81. package/dist/esm/i18n/da.js +35 -34
  82. package/dist/esm/i18n/de.js +35 -34
  83. package/dist/esm/i18n/en.js +35 -34
  84. package/dist/esm/i18n/en_GB.js +35 -34
  85. package/dist/esm/i18n/es.js +35 -34
  86. package/dist/esm/i18n/fi.js +35 -34
  87. package/dist/esm/i18n/fr.js +35 -34
  88. package/dist/esm/i18n/hu.js +35 -34
  89. package/dist/esm/i18n/it.js +35 -34
  90. package/dist/esm/i18n/ja.js +35 -34
  91. package/dist/esm/i18n/ko.js +35 -34
  92. package/dist/esm/i18n/nb.js +35 -34
  93. package/dist/esm/i18n/nl.js +35 -34
  94. package/dist/esm/i18n/pl.js +35 -34
  95. package/dist/esm/i18n/pt_BR.js +35 -34
  96. package/dist/esm/i18n/ru.js +35 -34
  97. package/dist/esm/i18n/sv.js +35 -34
  98. package/dist/esm/i18n/th.js +35 -34
  99. package/dist/esm/i18n/tr.js +35 -34
  100. package/dist/esm/i18n/uk.js +35 -34
  101. package/dist/esm/i18n/vi.js +35 -34
  102. package/dist/esm/i18n/zh.js +35 -34
  103. package/dist/esm/i18n/zh_TW.js +35 -34
  104. package/dist/esm/types.js +5 -0
  105. package/dist/esm/util/constants.js +1 -0
  106. package/dist/esm/version.json +1 -1
  107. package/dist/types/components/common/EmojiActions.d.ts +1 -1
  108. package/dist/types/components/hooks.d.ts +1 -1
  109. package/dist/types/components/picker/CategoryTracker.d.ts +2 -2
  110. package/dist/types/components/picker/EmojiPickerList.d.ts +4 -2
  111. package/dist/types/components/picker/EmojiPickerListSearch.d.ts +3 -8
  112. package/dist/types/components/picker/VirtualList.d.ts +5 -24
  113. package/dist/types/i18n/cs.d.ts +34 -34
  114. package/dist/types/i18n/da.d.ts +34 -34
  115. package/dist/types/i18n/de.d.ts +34 -34
  116. package/dist/types/i18n/en.d.ts +34 -34
  117. package/dist/types/i18n/en_GB.d.ts +34 -34
  118. package/dist/types/i18n/es.d.ts +34 -34
  119. package/dist/types/i18n/fi.d.ts +34 -34
  120. package/dist/types/i18n/fr.d.ts +34 -34
  121. package/dist/types/i18n/hu.d.ts +34 -34
  122. package/dist/types/i18n/it.d.ts +34 -34
  123. package/dist/types/i18n/ja.d.ts +34 -34
  124. package/dist/types/i18n/ko.d.ts +34 -34
  125. package/dist/types/i18n/nb.d.ts +34 -34
  126. package/dist/types/i18n/nl.d.ts +34 -34
  127. package/dist/types/i18n/pl.d.ts +34 -34
  128. package/dist/types/i18n/pt_BR.d.ts +34 -34
  129. package/dist/types/i18n/ru.d.ts +34 -34
  130. package/dist/types/i18n/sv.d.ts +34 -34
  131. package/dist/types/i18n/th.d.ts +34 -34
  132. package/dist/types/i18n/tr.d.ts +34 -34
  133. package/dist/types/i18n/uk.d.ts +34 -34
  134. package/dist/types/i18n/vi.d.ts +34 -34
  135. package/dist/types/i18n/zh.d.ts +34 -34
  136. package/dist/types/i18n/zh_TW.d.ts +34 -34
  137. package/dist/types/types.d.ts +5 -0
  138. package/dist/types/util/constants.d.ts +1 -0
  139. package/package.json +5 -4
  140. package/report.api.md +10 -0
@@ -1,107 +1,60 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
1
  /** @jsx jsx */
3
- import React, { PureComponent } from 'react';
2
+ import React, { useLayoutEffect, useRef } from 'react';
4
3
  import { jsx } from '@emotion/react';
5
4
  import TextField from '@atlaskit/textfield';
6
5
  import SearchIcon from '@atlaskit/icon/glyph/search';
7
- import { injectIntl } from 'react-intl-next';
6
+ import { useIntl } from 'react-intl-next';
8
7
  import { messages } from '../i18n';
9
8
  import { input, pickerSearch, searchIcon } from './styles';
9
+ import { EMOJI_SEARCH_DEBOUNCE } from '../../util/constants';
10
+ import { useDebouncedCallback } from 'use-debounce';
10
11
  export const emojiPickerSearchTestId = 'emoji-picker-serach';
11
- class EmojiPickerListSearch extends PureComponent {
12
- constructor(...args) {
13
- super(...args);
14
- _defineProperty(this, "onBlur", () => {
15
- const activeElement = document.activeElement;
16
- // Input lost focus to emoji picker container (happens in IE11 when updating search results)
17
- // See FS-2111
18
- if (activeElement instanceof HTMLElement && activeElement.getAttribute('data-emoji-picker-container')) {
19
- this.restoreInputFocus();
12
+ export const EmojiPickerListSearch = props => {
13
+ const {
14
+ style,
15
+ query,
16
+ onChange
17
+ } = props;
18
+ const textRef = useRef(null);
19
+ const {
20
+ formatMessage
21
+ } = useIntl();
22
+
23
+ // Debounce callback
24
+ const [debouncedSearch] = useDebouncedCallback(value => {
25
+ onChange(value);
26
+ },
27
+ // delay in ms
28
+ EMOJI_SEARCH_DEBOUNCE);
29
+ const handleOnChange = e => {
30
+ debouncedSearch(e.target.value);
31
+ };
32
+ useLayoutEffect(() => {
33
+ requestAnimationFrame(() => {
34
+ if (textRef) {
35
+ var _textRef$current;
36
+ (_textRef$current = textRef.current) === null || _textRef$current === void 0 ? void 0 : _textRef$current.focus();
20
37
  }
21
38
  });
22
- _defineProperty(this, "onChange", e => {
23
- this.saveInputSelection();
24
- this.props.onChange(e);
25
- });
26
- _defineProperty(this, "focusInput", () => {
27
- if (this.inputRef) {
28
- this.inputRef.focus();
29
- }
30
- });
31
- _defineProperty(this, "handleInputRef", input => {
32
- if (input) {
33
- // Defer focus so it give some time to position the popup before
34
- // setting the focus to search input.
35
- // see FS-2056
36
- this.inputRef = input;
37
- if (typeof window === 'undefined') {
38
- return;
39
- }
40
- window.requestAnimationFrame(this.focusInput);
41
- }
42
- });
43
- }
44
- saveInputSelection() {
45
- this.inputSelection = undefined;
46
- if (this.inputRef) {
47
- const {
48
- selectionStart,
49
- selectionEnd,
50
- selectionDirection
51
- } = this.inputRef;
52
- if (selectionStart && selectionEnd && selectionDirection) {
53
- this.inputSelection = {
54
- selectionStart,
55
- selectionEnd,
56
- selectionDirection: selectionDirection
57
- };
58
- }
59
- }
60
- }
61
- restoreInputFocus() {
62
- this.focusInput();
63
- if (this.inputSelection && this.inputRef && this.inputRef.setSelectionRange) {
64
- const {
65
- selectionStart,
66
- selectionEnd,
67
- selectionDirection
68
- } = this.inputSelection;
69
- this.inputRef.setSelectionRange(selectionStart, selectionEnd, selectionDirection);
70
- }
71
- }
72
- render() {
73
- const {
74
- style,
75
- query,
76
- intl
77
- } = this.props;
78
- const {
79
- formatMessage
80
- } = intl;
81
- return jsx("div", {
82
- css: pickerSearch,
83
- style: style
84
- }, jsx(TextField, {
85
- "aria-label": formatMessage(messages.searchLabel),
86
- css: input,
87
- autoComplete: "off",
88
- name: "search",
89
- placeholder: `${formatMessage(messages.searchPlaceholder)}...`,
90
- onChange: this.onChange,
91
- value: query || '',
92
- ref: this.handleInputRef,
93
- isCompact: true,
94
- onBlur: this.onBlur,
95
- elemBeforeInput: jsx("span", {
96
- css: searchIcon
97
- }, jsx(SearchIcon, {
98
- label: ""
99
- })),
100
- testId: emojiPickerSearchTestId
101
- }));
102
- }
103
- }
104
- _defineProperty(EmojiPickerListSearch, "defaultProps", {
105
- style: {}
106
- });
107
- export default injectIntl(EmojiPickerListSearch);
39
+ }, []);
40
+ return jsx("div", {
41
+ css: pickerSearch,
42
+ style: style
43
+ }, jsx(TextField, {
44
+ "aria-label": formatMessage(messages.searchLabel),
45
+ css: input,
46
+ autoComplete: "off",
47
+ name: "search",
48
+ placeholder: `${formatMessage(messages.searchPlaceholder)}...`,
49
+ defaultValue: query || '',
50
+ onChange: handleOnChange,
51
+ isCompact: true,
52
+ elemBeforeInput: jsx("span", {
53
+ css: searchIcon
54
+ }, jsx(SearchIcon, {
55
+ label: ""
56
+ })),
57
+ testId: emojiPickerSearchTestId,
58
+ ref: textRef
59
+ }));
60
+ };
@@ -1,42 +1,41 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
1
  /** @jsx jsx */
3
2
  import { jsx } from '@emotion/react';
4
- import { Virtualizer, observeElementRect, observeElementOffset, elementScroll } from '@tanstack/react-virtual';
5
- import React, { PureComponent, createRef } from 'react';
3
+ import React, { useCallback, useImperativeHandle } from 'react';
6
4
  import { virtualList } from './styles';
5
+ import { useVirtualizer } from '@tanstack/react-virtual';
7
6
  export const virtualListScrollContainerTestId = 'virtual-list-scroll-container';
8
- export class VirtualList extends PureComponent {
9
- /**
10
- * Determine if the component is mounted to the DOM or not
11
- */
12
-
13
- constructor(props) {
14
- super(props);
15
- _defineProperty(this, "_isMounted", false);
16
- this.parentRef = /*#__PURE__*/createRef();
17
- this.rowVirtualizer = new Virtualizer(this.getVirtualizerOptions(props));
18
- }
19
- getVirtualizerOptions(props) {
7
+ export const VirtualList = /*#__PURE__*/React.forwardRef((props, ref) => {
8
+ const parentRef = React.useRef(null);
9
+ const currentIndex = React.useRef(0);
10
+ const {
11
+ rowRenderer,
12
+ onRowsRendered,
13
+ scrollToAlignment,
14
+ width,
15
+ height
16
+ } = props;
17
+ const getVirtualizerOptions = () => {
20
18
  const {
21
19
  rowCount,
22
20
  rowHeight,
23
21
  overscanRowCount
24
22
  } = props;
25
23
  return {
26
- observeElementRect: observeElementRect,
27
- observeElementOffset: observeElementOffset,
28
- scrollToFn: elementScroll,
29
24
  count: rowCount,
30
- getScrollElement: () => this.parentRef.current,
25
+ getScrollElement: () => parentRef.current,
31
26
  estimateSize: rowHeight,
32
27
  overscan: overscanRowCount,
33
28
  onChange: () => {
34
- this.forceUpdateGrid();
29
+ const startIndex = getFirstVisibleListElementIndex();
30
+ onRowsRendered({
31
+ startIndex
32
+ });
35
33
  }
36
34
  };
37
- }
38
- isElementVisible(element) {
39
- const parent = this.parentRef.current;
35
+ };
36
+ const rowVirtualizer = useVirtualizer(getVirtualizerOptions());
37
+ const isElementVisible = element => {
38
+ const parent = parentRef.current;
40
39
  const elementRect = element.getBoundingClientRect();
41
40
  const parentRect = parent.getBoundingClientRect();
42
41
  const elemTop = elementRect.top;
@@ -47,105 +46,64 @@ export class VirtualList extends PureComponent {
47
46
  // Only completely visible elements return true:
48
47
  const isVisible = elemTop >= parentTop && elemBottom <= parentBottom;
49
48
  return isVisible;
50
- }
51
- getFirstVisibleListElementIndex() {
52
- var _this$parentRef$curre, _this$parentRef$curre2;
53
- const virtualList = this.rowVirtualizer.getVirtualItems();
54
- const renderedElements = (_this$parentRef$curre = this.parentRef.current) === null || _this$parentRef$curre === void 0 ? void 0 : (_this$parentRef$curre2 = _this$parentRef$curre.firstChild) === null || _this$parentRef$curre2 === void 0 ? void 0 : _this$parentRef$curre2.childNodes;
49
+ };
50
+ const getFirstVisibleListElementIndex = useCallback(() => {
51
+ var _parentRef$current, _parentRef$current$fi;
52
+ const virtualList = rowVirtualizer.getVirtualItems();
53
+ const renderedElements = (_parentRef$current = parentRef.current) === null || _parentRef$current === void 0 ? void 0 : (_parentRef$current$fi = _parentRef$current.firstChild) === null || _parentRef$current$fi === void 0 ? void 0 : _parentRef$current$fi.childNodes;
55
54
  if (virtualList.length === 0 || !renderedElements || renderedElements.length === 0) {
56
55
  return 0;
57
56
  }
58
-
59
57
  // Convert NodeListOf<ChildNodes> to ChildNodes[]
60
58
  const renderedElementsToArray = Array.from(renderedElements);
61
- const firstVisibleIndex = renderedElementsToArray.findIndex(elem => this.isElementVisible(elem));
59
+ const firstVisibleIndex = renderedElementsToArray.findIndex(elem => isElementVisible(elem));
62
60
  if (firstVisibleIndex !== -1) {
63
61
  var _virtualList$firstVis;
64
62
  return ((_virtualList$firstVis = virtualList[firstVisibleIndex]) === null || _virtualList$firstVis === void 0 ? void 0 : _virtualList$firstVis.index) || 0;
65
63
  }
66
64
  return 0;
67
- }
68
- onRendered() {
69
- const {
70
- onRowsRendered
71
- } = this.props;
72
- this.rowVirtualizer.setOptions(this.getVirtualizerOptions(this.props));
73
- const startIndex = this.getFirstVisibleListElementIndex();
74
- onRowsRendered({
75
- startIndex
76
- });
77
- }
78
- componentDidUpdate() {
79
- this.onRendered();
80
- }
81
- componentDidMount() {
82
- if (this.rowVirtualizer) {
83
- this.rowVirtualizer._didMount();
84
- this.rowVirtualizer._willUpdate();
85
- this._isMounted = true;
86
- }
87
- }
88
- componentWillUnmount() {
89
- this._isMounted = false;
90
- }
91
- scrollToRow(index) {
92
- const {
93
- scrollToAlignment
94
- } = this.props;
95
- if (index !== undefined) {
96
- var _this$rowVirtualizer;
97
- (_this$rowVirtualizer = this.rowVirtualizer) === null || _this$rowVirtualizer === void 0 ? void 0 : _this$rowVirtualizer.scrollToIndex(index, {
98
- align: scrollToAlignment,
99
- smoothScroll: false
100
- });
101
- this.forceUpdateGrid();
65
+ }, [rowVirtualizer]);
66
+
67
+ // Exposing a custom ref handle to the parent component EmojiPickerList to trigger scrollToRow via the listRef
68
+ // https://beta.reactjs.org/reference/react/useImperativeHandle
69
+ useImperativeHandle(ref, () => {
70
+ return {
71
+ scrollToRow(index) {
72
+ // only scroll if row index is defined and has changed
73
+ if (index !== undefined && currentIndex.current !== index) {
74
+ currentIndex.current = index;
75
+ rowVirtualizer.scrollToIndex(index, {
76
+ align: scrollToAlignment,
77
+ smoothScroll: false
78
+ });
79
+ }
80
+ }
81
+ };
82
+ }, [scrollToAlignment, rowVirtualizer]);
83
+ return jsx("div", {
84
+ ref: parentRef,
85
+ role: "grid",
86
+ style: {
87
+ height: `${height}px`,
88
+ width: `${width}px`
89
+ },
90
+ css: virtualList,
91
+ "data-testid": virtualListScrollContainerTestId
92
+ }, jsx("div", {
93
+ style: {
94
+ height: `${rowVirtualizer.getTotalSize()}px`,
95
+ width: '100%',
96
+ position: 'relative'
102
97
  }
103
- }
104
- forceUpdateGrid() {
105
- if (this._isMounted) {
106
- this.forceUpdate();
98
+ }, rowVirtualizer.getVirtualItems().map(virtualRow => jsx("div", {
99
+ key: virtualRow.key,
100
+ style: {
101
+ position: 'absolute',
102
+ top: 0,
103
+ left: 0,
104
+ width: '100%',
105
+ height: `${virtualRow.size}px`,
106
+ transform: `translateY(${virtualRow.start}px)`
107
107
  }
108
- }
109
- recomputeRowHeights() {
110
- var _this$rowVirtualizer2;
111
- (_this$rowVirtualizer2 = this.rowVirtualizer) === null || _this$rowVirtualizer2 === void 0 ? void 0 : _this$rowVirtualizer2.measure();
112
- }
113
- handleScroll(e) {
114
- e.preventDefault();
115
- }
116
- render() {
117
- var _this$rowVirtualizer3, _this$rowVirtualizer4;
118
- const {
119
- rowRenderer,
120
- width,
121
- height
122
- } = this.props;
123
- return jsx("div", {
124
- ref: this.parentRef,
125
- role: "grid",
126
- style: {
127
- height: `${height}px`,
128
- width: `${width}px`
129
- },
130
- css: virtualList,
131
- "data-testid": virtualListScrollContainerTestId,
132
- onScroll: this.handleScroll
133
- }, jsx("div", {
134
- style: {
135
- height: `${(_this$rowVirtualizer3 = this.rowVirtualizer) === null || _this$rowVirtualizer3 === void 0 ? void 0 : _this$rowVirtualizer3.getTotalSize()}px`,
136
- width: '100%',
137
- position: 'relative'
138
- }
139
- }, (_this$rowVirtualizer4 = this.rowVirtualizer) === null || _this$rowVirtualizer4 === void 0 ? void 0 : _this$rowVirtualizer4.getVirtualItems().map(virtualRow => jsx("div", {
140
- key: virtualRow.key,
141
- style: {
142
- position: 'absolute',
143
- top: 0,
144
- left: 0,
145
- width: '100%',
146
- height: `${virtualRow.size}px`,
147
- transform: `translateY(${virtualRow.start}px)`
148
- }
149
- }, rowRenderer(virtualRow)))));
150
- }
151
- }
108
+ }, rowRenderer(virtualRow)))));
109
+ });
@@ -71,11 +71,6 @@ export default class EmojiTypeAheadComponent extends PureComponent {
71
71
  const wasVisible = this.state.visible;
72
72
  const visible = emojis.length > 0;
73
73
  this.fireAnalyticsEvent(typeaheadRenderedEvent(Date.now() - this.renderStartTime, query, emojis));
74
- ufoExperiences['emoji-searched'].success({
75
- metadata: {
76
- emojisLength: emojis.length
77
- }
78
- });
79
74
  debug('emoji-typeahead.applyPropChanges', emojis.length, wasVisible, visible);
80
75
  this.setState({
81
76
  emojis: emojis,
@@ -192,11 +187,6 @@ export default class EmojiTypeAheadComponent extends PureComponent {
192
187
  // if empty query (i.e. typeahead triggered only) then only sort by usage
193
188
  options.sort = SearchSort.UsageFrequency;
194
189
  }
195
- ufoExperiences['emoji-searched'].start();
196
- ufoExperiences['emoji-searched'].addMetadata({
197
- queryLength: (query === null || query === void 0 ? void 0 : query.length) || 0,
198
- source: 'EmojiTypeAheadComponent'
199
- });
200
190
  this.renderStartTime = Date.now();
201
191
  emojiProvider.filter(query, options);
202
192
  }
@@ -1,3 +1,4 @@
1
+ /* prettier-ignore */
1
2
  /**
2
3
  * NOTE:
3
4
  *
@@ -6,38 +7,38 @@
6
7
  */
7
8
  //Czech
8
9
  export default {
9
- 'fabric.emoji.add.custom.emoji.label': 'Přidat své vlastní emoji',
10
- 'fabric.emoji.add.label': 'Přidat emoji',
11
- 'fabric.emoji.cancel.label': 'Zrušit',
12
- 'fabric.emoji.categories.search.results': 'Výsledky vyhledávání',
13
- 'fabric.emoji.category.activity': 'Činnosti',
14
- 'fabric.emoji.category.all.uploads': 'Všechny nahrané položky',
15
- 'fabric.emoji.category.flags': 'Vlajky',
16
- 'fabric.emoji.category.foods': 'Jídlo a pití',
17
- 'fabric.emoji.category.frequent': 'Časté',
18
- 'fabric.emoji.category.nature': 'Příroda',
19
- 'fabric.emoji.category.objects': 'Objekty',
20
- 'fabric.emoji.category.people': 'Lidé',
21
- 'fabric.emoji.category.places': 'Cestování a místa',
22
- 'fabric.emoji.category.productivity': 'Produktivita',
23
- 'fabric.emoji.category.symbols': 'Symboly',
24
- 'fabric.emoji.category.user.uploads': 'Vaše nahrané položky',
25
- 'fabric.emoji.choose.file.screenReaderDescription': 'Vyberte soubor smajlíku. JPG, PNG nebo GIF. Maximální velikost je 1 MB.',
26
- 'fabric.emoji.choose.file.title': 'Vybrat soubor',
27
- 'fabric.emoji.delete.description': 'Veškeré existující výskyty tohoto emoji budou nahrazeny {emojiShortName}',
28
- 'fabric.emoji.delete.label': 'Odstranit',
29
- 'fabric.emoji.delete.title': 'Odstranit emoji',
30
- 'fabric.emoji.error.delete.failed': 'Odstranění se nezdařilo.',
31
- 'fabric.emoji.error.image.too.big': 'Vybraný obrázek je větší než 1 MB.',
32
- 'fabric.emoji.error.invalid.image': 'Vybraný obrázek je neplatný.',
33
- 'fabric.emoji.error.upload.failed': 'Nahrávání se nezdařilo',
34
- 'fabric.emoji.image.requirements': 'JPG, PNG nebo GIF. Max. velikost je 1 MB.',
35
- 'fabric.emoji.name.ariaLabel': 'Zadejte název nového emotikonu',
36
- 'fabric.emoji.placeholder': 'Název emoji',
37
- 'fabric.emoji.preview': 'Vaše nové emoji {emoji} vypadá skvěle!',
38
- 'fabric.emoji.preview.title': 'Náhled',
39
- 'fabric.emoji.retry.label': 'Zkusit znovu',
40
- 'fabric.emoji.search.label': 'Vyhledat smajlík',
41
- 'fabric.emoji.search.placeholder': 'Vyhledat',
42
- 'fabric.emoji.select.skin.tone.ariaLabel': 'Výběr odstínu pleti – {selectedTone}'
10
+ "fabric.emoji.add.custom.emoji.label": "Přidat své vlastní emoji",
11
+ "fabric.emoji.add.label": "Přidat emoji",
12
+ "fabric.emoji.cancel.label": "Zrušit",
13
+ "fabric.emoji.categories.search.results": "Výsledky vyhledávání",
14
+ "fabric.emoji.category.activity": "Činnosti",
15
+ "fabric.emoji.category.all.uploads": "Všechny nahrané položky",
16
+ "fabric.emoji.category.flags": "Vlajky",
17
+ "fabric.emoji.category.foods": "Jídlo a pití",
18
+ "fabric.emoji.category.frequent": "Časté",
19
+ "fabric.emoji.category.nature": "Příroda",
20
+ "fabric.emoji.category.objects": "Objekty",
21
+ "fabric.emoji.category.people": "Lidé",
22
+ "fabric.emoji.category.places": "Cestování a místa",
23
+ "fabric.emoji.category.productivity": "Produktivita",
24
+ "fabric.emoji.category.symbols": "Symboly",
25
+ "fabric.emoji.category.user.uploads": "Vaše nahrané položky",
26
+ "fabric.emoji.choose.file.screenReaderDescription": "Vyberte soubor smajlíku. JPG, PNG nebo GIF. Maximální velikost je 1 MB.",
27
+ "fabric.emoji.choose.file.title": "Vybrat soubor",
28
+ "fabric.emoji.delete.description": "Veškeré existující výskyty tohoto emoji budou nahrazeny {emojiShortName}",
29
+ "fabric.emoji.delete.label": "Odstranit",
30
+ "fabric.emoji.delete.title": "Odstranit emoji",
31
+ "fabric.emoji.error.delete.failed": "Odstranění se nezdařilo.",
32
+ "fabric.emoji.error.image.too.big": "Vybraný obrázek je větší než 1 MB.",
33
+ "fabric.emoji.error.invalid.image": "Vybraný obrázek je neplatný.",
34
+ "fabric.emoji.error.upload.failed": "Nahrávání se nezdařilo",
35
+ "fabric.emoji.image.requirements": "JPG, PNG nebo GIF. Max. velikost je 1 MB.",
36
+ "fabric.emoji.name.ariaLabel": "Zadejte název nového emotikonu",
37
+ "fabric.emoji.placeholder": "Název emoji",
38
+ "fabric.emoji.preview": "Vaše nové emoji {emoji} vypadá skvěle!",
39
+ "fabric.emoji.preview.title": "Náhled",
40
+ "fabric.emoji.retry.label": "Zkusit znovu",
41
+ "fabric.emoji.search.label": "Vyhledat smajlík",
42
+ "fabric.emoji.search.placeholder": "Vyhledat",
43
+ "fabric.emoji.select.skin.tone.ariaLabel": "Výběr odstínu pleti – {selectedTone}"
43
44
  };
@@ -1,3 +1,4 @@
1
+ /* prettier-ignore */
1
2
  /**
2
3
  * NOTE:
3
4
  *
@@ -6,38 +7,38 @@
6
7
  */
7
8
  //Danish (Denmark)
8
9
  export default {
9
- 'fabric.emoji.add.custom.emoji.label': 'Tilføj din egen emoji',
10
- 'fabric.emoji.add.label': 'Tilføj emoji',
11
- 'fabric.emoji.cancel.label': 'Annullér',
12
- 'fabric.emoji.categories.search.results': 'Søgeresultater',
13
- 'fabric.emoji.category.activity': 'Aktivitet',
14
- 'fabric.emoji.category.all.uploads': 'Alle uploads',
15
- 'fabric.emoji.category.flags': 'Flag',
16
- 'fabric.emoji.category.foods': 'Mad og drikke',
17
- 'fabric.emoji.category.frequent': 'Ofte benyttede',
18
- 'fabric.emoji.category.nature': 'Natur',
19
- 'fabric.emoji.category.objects': 'Objekter',
20
- 'fabric.emoji.category.people': 'Personer',
21
- 'fabric.emoji.category.places': 'Rejser og steder',
22
- 'fabric.emoji.category.productivity': 'Produktivitet',
23
- 'fabric.emoji.category.symbols': 'Symboler',
24
- 'fabric.emoji.category.user.uploads': 'Dine uploads',
25
- 'fabric.emoji.choose.file.screenReaderDescription': 'Vælg en fil til emojien. JPG, PNG eller GIF. Maks. størrelse 1 MB.',
26
- 'fabric.emoji.choose.file.title': 'Vælg fil',
27
- 'fabric.emoji.delete.description': 'Alle eksisterende forekomster af denne emoji erstattes med {emojiShortName}',
28
- 'fabric.emoji.delete.label': 'Fjern',
29
- 'fabric.emoji.delete.title': 'Fjern emoji',
30
- 'fabric.emoji.error.delete.failed': 'Fjern mislykkede',
31
- 'fabric.emoji.error.image.too.big': 'Det valgte billede er større end 1 MB',
32
- 'fabric.emoji.error.invalid.image': 'Det valgte billede er ugyldigt',
33
- 'fabric.emoji.error.upload.failed': 'Upload mislykkedes',
34
- 'fabric.emoji.image.requirements': 'JPG, PNG eller GIF. Maks. størrelse 1 MB.',
35
- 'fabric.emoji.name.ariaLabel': 'Angiv et navn til den nye emoji',
36
- 'fabric.emoji.placeholder': 'Emojinavn',
37
- 'fabric.emoji.preview': 'Din nye emoji {emoji} ser flot ud',
38
- 'fabric.emoji.preview.title': 'Vis',
39
- 'fabric.emoji.retry.label': 'Prøv igen',
40
- 'fabric.emoji.search.label': 'Søg efter emoji',
41
- 'fabric.emoji.search.placeholder': 'Søg',
42
- 'fabric.emoji.select.skin.tone.ariaLabel': 'Vælg hudfarve, {selectedTone}'
10
+ "fabric.emoji.add.custom.emoji.label": "Tilføj din egen emoji",
11
+ "fabric.emoji.add.label": "Tilføj emoji",
12
+ "fabric.emoji.cancel.label": "Annullér",
13
+ "fabric.emoji.categories.search.results": "Søgeresultater",
14
+ "fabric.emoji.category.activity": "Aktivitet",
15
+ "fabric.emoji.category.all.uploads": "Alle uploads",
16
+ "fabric.emoji.category.flags": "Flag",
17
+ "fabric.emoji.category.foods": "Mad og drikke",
18
+ "fabric.emoji.category.frequent": "Ofte benyttede",
19
+ "fabric.emoji.category.nature": "Natur",
20
+ "fabric.emoji.category.objects": "Objekter",
21
+ "fabric.emoji.category.people": "Personer",
22
+ "fabric.emoji.category.places": "Rejser og steder",
23
+ "fabric.emoji.category.productivity": "Produktivitet",
24
+ "fabric.emoji.category.symbols": "Symboler",
25
+ "fabric.emoji.category.user.uploads": "Dine uploads",
26
+ "fabric.emoji.choose.file.screenReaderDescription": "Vælg en fil til emojien. JPG, PNG eller GIF. Maks. størrelse 1 MB.",
27
+ "fabric.emoji.choose.file.title": "Vælg fil",
28
+ "fabric.emoji.delete.description": "Alle eksisterende forekomster af denne emoji erstattes med {emojiShortName}",
29
+ "fabric.emoji.delete.label": "Fjern",
30
+ "fabric.emoji.delete.title": "Fjern emoji",
31
+ "fabric.emoji.error.delete.failed": "Fjern mislykkede",
32
+ "fabric.emoji.error.image.too.big": "Det valgte billede er større end 1 MB",
33
+ "fabric.emoji.error.invalid.image": "Det valgte billede er ugyldigt",
34
+ "fabric.emoji.error.upload.failed": "Upload mislykkedes",
35
+ "fabric.emoji.image.requirements": "JPG, PNG eller GIF. Maks. størrelse 1 MB.",
36
+ "fabric.emoji.name.ariaLabel": "Angiv et navn til den nye emoji",
37
+ "fabric.emoji.placeholder": "Emojinavn",
38
+ "fabric.emoji.preview": "Din nye emoji {emoji} ser flot ud",
39
+ "fabric.emoji.preview.title": "Vis",
40
+ "fabric.emoji.retry.label": "Prøv igen",
41
+ "fabric.emoji.search.label": "Søg efter emoji",
42
+ "fabric.emoji.search.placeholder": "Søg",
43
+ "fabric.emoji.select.skin.tone.ariaLabel": "Vælg hudfarve, {selectedTone}"
43
44
  };