@geneui/components 2.11.1

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 (154) hide show
  1. package/ActionableList.js +1761 -0
  2. package/AdvancedSearch.js +872 -0
  3. package/Alert.js +98 -0
  4. package/Avatar.js +77 -0
  5. package/Badge.js +76 -0
  6. package/Breadcrumb.js +128 -0
  7. package/BusyLoader.js +69 -0
  8. package/Button.js +130 -0
  9. package/CHANGELOG.md +424 -0
  10. package/Card.js +513 -0
  11. package/CardList.js +705 -0
  12. package/CellMeasurerCache-c11cec83.js +229 -0
  13. package/Charts.js +99 -0
  14. package/Checkbox.js +232 -0
  15. package/CheckboxGroup.js +206 -0
  16. package/CheckboxGroupWithSearch.js +279 -0
  17. package/Collapse.js +196 -0
  18. package/ColorPicker.js +210 -0
  19. package/ComboBox.js +99 -0
  20. package/Counter.js +99 -0
  21. package/DateFilter.js +179 -0
  22. package/DatePicker.js +1231 -0
  23. package/DatePickerInput.js +30 -0
  24. package/Divider.js +56 -0
  25. package/Drawer.js +264 -0
  26. package/Dropdown.js +99 -0
  27. package/Editor.js +22965 -0
  28. package/Empty.js +132 -0
  29. package/ExtendedInput.js +578 -0
  30. package/Form.js +116 -0
  31. package/FormContainer.js +189 -0
  32. package/FormableCheckbox.js +27 -0
  33. package/FormableDatePicker.js +39 -0
  34. package/FormableDropdown.js +105 -0
  35. package/FormableEditor.js +24 -0
  36. package/FormableHOC-21051057.js +83 -0
  37. package/FormableMultiSelectDropdown.js +105 -0
  38. package/FormableNumberInput.js +31 -0
  39. package/FormableRadio.js +23 -0
  40. package/FormableSwitcher.js +23 -0
  41. package/FormableTextInput.js +31 -0
  42. package/FormableUploader.js +40 -0
  43. package/GeneUIProvider.js +256 -0
  44. package/Grid.js +166 -0
  45. package/Holder.js +99 -0
  46. package/Icon.js +63 -0
  47. package/Image.js +130 -0
  48. package/ImagePreview.js +99 -0
  49. package/KeyValue.js +63 -0
  50. package/Label.js +58 -0
  51. package/LinkButton.js +104 -0
  52. package/Menu.js +277 -0
  53. package/MobileNavigation.js +95 -0
  54. package/MobilePopup.js +180 -0
  55. package/Modal.js +251 -0
  56. package/ModuleTitle.js +99 -0
  57. package/NavigationMenu.js +212 -0
  58. package/Notification.js +120 -0
  59. package/Option.js +186 -0
  60. package/Overlay.js +99 -0
  61. package/Overspread.js +343 -0
  62. package/Pagination.js +258 -0
  63. package/Paper.js +97 -0
  64. package/Popover-f4d1cac0.js +411 -0
  65. package/Popover.js +20 -0
  66. package/PopoverV2.js +19 -0
  67. package/Portal.js +58 -0
  68. package/Products.js +115 -0
  69. package/Profile.js +99 -0
  70. package/Progress.js +200 -0
  71. package/QRCode.js +816 -0
  72. package/README.md +90 -0
  73. package/Radio.js +152 -0
  74. package/RadioGroup.js +105 -0
  75. package/Range.js +14 -0
  76. package/RichEditor-b7928765.js +228 -0
  77. package/RichEditor.js +13 -0
  78. package/Scrollbar.js +1587 -0
  79. package/Search.js +72 -0
  80. package/SearchWithDropdown.js +195 -0
  81. package/Section.js +62 -0
  82. package/SkeletonLoader.js +82 -0
  83. package/Slider.js +256 -0
  84. package/Status.js +104 -0
  85. package/Steps.js +312 -0
  86. package/SuggestionList.js +15 -0
  87. package/Switcher.js +194 -0
  88. package/Table.js +102 -0
  89. package/TableCompositions.js +17028 -0
  90. package/Tabs.js +236 -0
  91. package/Tag.js +103 -0
  92. package/TextLink.js +22 -0
  93. package/Textarea.js +239 -0
  94. package/Time.js +63 -0
  95. package/TimePicker.js +99 -0
  96. package/Timeline.js +114 -0
  97. package/Title.js +66 -0
  98. package/Toaster.js +116 -0
  99. package/Tooltip.js +157 -0
  100. package/TransferList.js +502 -0
  101. package/Uploader.js +32 -0
  102. package/ValidatableCheckbox.js +126 -0
  103. package/ValidatableDatePicker.js +312 -0
  104. package/ValidatableDropdown.js +99 -0
  105. package/ValidatableElements.js +99 -0
  106. package/ValidatableMultiSelectDropdown.js +99 -0
  107. package/ValidatableNumberInput.js +194 -0
  108. package/ValidatableRadio.js +117 -0
  109. package/ValidatableSwitcher.js +94 -0
  110. package/ValidatableTextInput.js +164 -0
  111. package/ValidatableTimeInput.js +171 -0
  112. package/ValidatableUploader.js +94 -0
  113. package/Widget.js +99 -0
  114. package/_commonjsHelpers-24198af3.js +35 -0
  115. package/_rollupPluginBabelHelpers-e8fb2e5c.js +16 -0
  116. package/checkTimeValidation-e56771be.js +16 -0
  117. package/checkboxRadioSwitcher-5b69d7bd.js +4 -0
  118. package/clsx.m-2bb6df4b.js +3 -0
  119. package/configs-91c86664.js +96 -0
  120. package/configs.js +131 -0
  121. package/dateValidation-67caec66.js +225 -0
  122. package/debounce-4419bc2f.js +17 -0
  123. package/globalStyling-9c60a159.js +4 -0
  124. package/guid-8ddf77b3.js +16 -0
  125. package/index-00fe8887.js +193 -0
  126. package/index-0cf65939.js +30991 -0
  127. package/index-122432cd.js +270 -0
  128. package/index-262edd7a.js +77 -0
  129. package/index-5cea9a7d.js +407 -0
  130. package/index-5e722d91.js +867 -0
  131. package/index-67f4d4d1.js +6568 -0
  132. package/index-6ff23041.js +66 -0
  133. package/index-702bf24a.js +1938 -0
  134. package/index-a4635754.js +329 -0
  135. package/index-a59530cd.js +4 -0
  136. package/index-ac59cb10.js +169 -0
  137. package/index-b7a33c58.js +11 -0
  138. package/index-d9e8a888.js +987 -0
  139. package/index-e0af0caf.js +1182 -0
  140. package/index-e8776f3d.js +807 -0
  141. package/index.js +128 -0
  142. package/localization-4ba17032.js +46 -0
  143. package/objectWithoutPropertiesLoose-299691d8.js +78 -0
  144. package/package.json +190 -0
  145. package/rangeAndSlider-20599da4.js +8839 -0
  146. package/react-beautiful-dnd.esm-38c37304.js +10117 -0
  147. package/style-inject.es-746bb8ed.js +28 -0
  148. package/useClickOutside-5183e396.js +25 -0
  149. package/useDeviceType-dd51db38.js +15 -0
  150. package/useEllipsisDetection-ef536015.js +23 -0
  151. package/useKeyDown-38102ae7.js +21 -0
  152. package/useMount-6fef51a5.js +9 -0
  153. package/useWidth-9f4647f8.js +15 -0
  154. package/useWindowSize-80369d76.js +33 -0
@@ -0,0 +1,407 @@
1
+ import React__default, { useMemo, useState, useRef, useCallback, useEffect } from 'react';
2
+ import { s as stopEvent } from './index-ac59cb10.js';
3
+ import { u as useKeyDown } from './useKeyDown-38102ae7.js';
4
+ import './configs-91c86664.js';
5
+ import { u as useClickOutside } from './useClickOutside-5183e396.js';
6
+ import { c as classnames } from './index-6ff23041.js';
7
+ import CustomScrollbar from './Scrollbar.js';
8
+ import { s as styleInject } from './style-inject.es-746bb8ed.js';
9
+ import ReactDOM__default from 'react-dom';
10
+
11
+ const callAfterDelay = (callBack, time) => {
12
+ const timerId = setTimeout(() => {
13
+ clearTimeout(timerId);
14
+ ReactDOM__default.unstable_batchedUpdates(() => {
15
+ callBack();
16
+ });
17
+ }, time);
18
+ };
19
+
20
+ const actionTypes = {
21
+ add: 'add',
22
+ edit: 'edit',
23
+ delete: 'delete'
24
+ };
25
+ const keyDownKeys = {
26
+ space: ' ',
27
+ enter: 'Enter',
28
+ escape: 'Escape',
29
+ arrowDown: 'ArrowDown',
30
+ arrowUp: 'ArrowUp',
31
+ arrowLeft: 'ArrowLeft',
32
+ arrowRight: 'ArrowRight',
33
+ backspace: 'Backspace',
34
+ delete: 'Delete',
35
+ tab: 'Tab'
36
+ };
37
+ const SPACE_HEIGHT = 8;
38
+
39
+ const getCaretPos = (e, textarea, index, key) => {
40
+ textarea.insertAdjacentHTML('afterend', "<div id='dummy'></div>");
41
+ const dummy = document.getElementById('dummy');
42
+ const style = getComputedStyle(textarea);
43
+ ['fontFamily', 'fontSize', 'fontWeight', 'lineHeight', 'wordWrap', 'whiteSpace', 'borderLeftWidth', 'paddingRight', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth'].forEach(key => {
44
+ dummy.style[key] = style[key];
45
+ });
46
+ dummy.style.overflow = 'auto';
47
+ dummy.style.paddingLeft = '6px';
48
+ dummy.style.width = "".concat(textarea.offsetWidth, "px");
49
+ dummy.style.height = "".concat(textarea.offsetHeight - 20, "px");
50
+ dummy.style.position = 'absolute';
51
+ dummy.style.left = "".concat(textarea.offsetLeft, "px");
52
+ dummy.style.top = "".concat(textarea.offsetTop, "px");
53
+ const val = textarea.value.replaceAll(/\n/g, '<br/>');
54
+ let newVal = '';
55
+ let ind = 0;
56
+ val.split('').forEach(i => {
57
+ if (ind !== null && i === key) {
58
+ ind++;
59
+ }
60
+ if (ind === index) {
61
+ newVal += "<span id='lastId'>".concat(i, "</span>");
62
+ ind = null;
63
+ } else {
64
+ newVal += i === ' ' ? '&nbsp;' : i;
65
+ }
66
+ });
67
+ dummy.innerHTML = newVal;
68
+ dummy.scrollTo(0, textarea.scrollTop);
69
+ const lastId = document.getElementById('lastId');
70
+ const returnData = {
71
+ top: lastId.getBoundingClientRect().top,
72
+ left: lastId.getBoundingClientRect().left
73
+ };
74
+ dummy.remove();
75
+ return returnData;
76
+ };
77
+ const getCursorPos = input => {
78
+ if ('selectionStart' in input && document.activeElement === input) {
79
+ return {
80
+ start: input.selectionStart,
81
+ end: input.selectionEnd
82
+ };
83
+ }
84
+ if (input.createTextRange) {
85
+ const sel = document.selection.createRange();
86
+ if (sel.parentElement() === input) {
87
+ const rng = input.createTextRange();
88
+ rng.moveToBookmark(sel.getBookmark());
89
+ let len;
90
+ for (len = 0; rng.compareEndPoints('EndToStart', rng) > 0; rng.moveEnd('character', -1)) {
91
+ len++;
92
+ }
93
+ rng.setEndPoint('StartToStart', input.createTextRange());
94
+ let pos;
95
+ for (pos = {
96
+ start: 0,
97
+ end: len
98
+ }; rng.compareEndPoints('EndToStart', rng) > 0; rng.moveEnd('character', -1)) {
99
+ pos.start++;
100
+ pos.end++;
101
+ }
102
+ return pos;
103
+ }
104
+ }
105
+ return -1;
106
+ };
107
+
108
+ var css_248z = "[data-gene-ui-version=\"2.11.0\"] .suggestion-list{background:var(--background);border:1px solid #0000000d;border-radius:1rem;box-shadow:0 .2rem .4rem 0 #0000000d,0 0 0 1px #ffffff14;overflow:hidden;position:fixed;width:200px;z-index:400}[data-gene-ui-version=\"2.11.0\"] .suggestion-list .suggestion-rows{font:600 1.4rem/1.8rem var(--font-family);width:100%}[data-gene-ui-version=\"2.11.0\"] .suggestion-list .suggestion-rows ul{width:100%}[data-gene-ui-version=\"2.11.0\"] .suggestion-list .suggestion-rows ul li{align-items:center;cursor:pointer;display:flex;height:4rem;padding-left:16px;transition:background .4s,color .4s;width:100%}[data-gene-ui-version=\"2.11.0\"] .suggestion-list .suggestion-rows ul li.hover{background:rgba(var(--background-sc-rgb),.05)}";
109
+ styleInject(css_248z);
110
+
111
+ const ROW_WIDTH = 300;
112
+ const ROW_HEIGHT = 40;
113
+ const ROW_COUNT = 5;
114
+ function SuggestionList(_ref) {
115
+ let {
116
+ onChange,
117
+ onHover,
118
+ elemRef,
119
+ data = []
120
+ } = _ref;
121
+ const keys = useMemo(() => data.map(i => i.key), [data]);
122
+ const [suggestionData, setSuggestionData] = useState(null);
123
+ const [hoveredState, setHoveredState] = useState(0);
124
+ const hoveredRowRef = useRef(null);
125
+ const scrollRef = useRef(null);
126
+ const realText = useRef();
127
+ const dataToShow = useMemo(() => {
128
+ var _suggestionData$data;
129
+ if (!suggestionData) return null;
130
+ const returnedData = suggestionData.search ? (_suggestionData$data = suggestionData.data) === null || _suggestionData$data === void 0 ? void 0 : _suggestionData$data.filter(i => i.label.toUpperCase().includes(suggestionData.search.toUpperCase())) : suggestionData.data;
131
+ return returnedData && returnedData.length ? returnedData : null;
132
+ }, [suggestionData]);
133
+ if (elemRef.current) {
134
+ elemRef.current.isSuggestionListOpen = !!dataToShow;
135
+ }
136
+ const getKeyIndex = useCallback(inputValue => {
137
+ const existingKey = {
138
+ index: -1,
139
+ key: null
140
+ };
141
+ keys.forEach(i => {
142
+ if (inputValue.lastIndexOf(i) > existingKey.index) {
143
+ existingKey.index = inputValue.lastIndexOf(i);
144
+ existingKey.key = i;
145
+ }
146
+ });
147
+ return existingKey.index > -1 ? existingKey : null;
148
+ }, [keys]);
149
+ const arrowDownHandler = useCallback(e => {
150
+ stopEvent(e, true);
151
+ if (hoveredState < suggestionData.data.length - 1) {
152
+ setHoveredState(prev => prev + 1);
153
+ hoverHandler(e, hoveredState + 1);
154
+ }
155
+ if (hoveredState === dataToShow.length - 1) return;
156
+ const scrollElem = scrollRef.current.container.children[0];
157
+ if (hoveredRowRef.current && scrollElem) {
158
+ if (hoveredRowRef.current.getBoundingClientRect().top - scrollElem.getBoundingClientRect().top > ROW_HEIGHT * 3) {
159
+ scrollElem.scrollTo(0, (hoveredState - 3) * ROW_HEIGHT);
160
+ }
161
+ }
162
+ }, [dataToShow, hoveredRowRef, scrollRef, hoveredState, suggestionData]);
163
+ const arrowUpHandler = useCallback(e => {
164
+ stopEvent(e, true);
165
+ if (hoveredState > 0) {
166
+ setHoveredState(prev => prev - 1);
167
+ hoverHandler(e, hoveredState - 1);
168
+ }
169
+ if (hoveredState === dataToShow.length - 1) return;
170
+ const scrollElem = scrollRef.current.container.children[0];
171
+ if (hoveredRowRef.current && scrollElem) {
172
+ if (hoveredRowRef.current.getBoundingClientRect().top - scrollElem.getBoundingClientRect().top < ROW_HEIGHT * 2) {
173
+ scrollElem.scrollTo(0, (hoveredState - 1) * ROW_HEIGHT);
174
+ }
175
+ }
176
+ }, [dataToShow, hoveredRowRef, scrollRef, hoveredState]);
177
+ const onEnterHandler = useCallback(e => {
178
+ resetText();
179
+ if (dataToShow && dataToShow.length) {
180
+ if (e) {
181
+ stopEvent(e, true);
182
+ } else {
183
+ elemRef.current.focus();
184
+ }
185
+ const to = getCursorPos(elemRef.current).end;
186
+ callAfterDelay(() => {
187
+ elemRef.current.selectionEnd = to + dataToShow[hoveredState].value.toString().length;
188
+ });
189
+ onChange({
190
+ from: to - (suggestionData.search ? suggestionData.search.length : 0) - 1,
191
+ data: dataToShow[hoveredState],
192
+ key: suggestionData.key,
193
+ to
194
+ });
195
+ }
196
+ setSuggestionData(null);
197
+ }, [suggestionData, setSuggestionData, hoveredState, onChange, elemRef, dataToShow]);
198
+ const hoverHandler = useCallback((e, hoverIndex) => {
199
+ if (dataToShow && dataToShow.length) {
200
+ if (!realText.current) {
201
+ realText.current = elemRef.current.value;
202
+ }
203
+ if (e) {
204
+ stopEvent(e, true);
205
+ } else {
206
+ elemRef.current.focus();
207
+ }
208
+ const to = getCursorPos(elemRef.current).end;
209
+ callAfterDelay(() => {
210
+ elemRef.current.selectionEnd = to;
211
+ });
212
+ onHover({
213
+ from: to - (suggestionData.search ? suggestionData.search.length : 0),
214
+ data: dataToShow[hoverIndex],
215
+ key: suggestionData.key,
216
+ to
217
+ });
218
+ }
219
+ }, [suggestionData, onHover, elemRef, realText, dataToShow]);
220
+ const onBackSpaseHandler = useCallback(e => {
221
+ resetText();
222
+ if (keys.includes(e.target.value.slice(0, getCursorPos(elemRef.current).start).slice(-1))) {
223
+ setSuggestionData(null);
224
+ } else {
225
+ callAfterDelay(() => {
226
+ const inputValue = e.target.value;
227
+ const {
228
+ start
229
+ } = getCursorPos(elemRef.current);
230
+ if (!inputValue) {
231
+ setSuggestionData(null);
232
+ } else if (suggestionData && suggestionData.data.length) {
233
+ const fromStartToKey = inputValue.slice(0, start);
234
+ setSuggestionData({
235
+ ...suggestionData,
236
+ search: fromStartToKey.slice(fromStartToKey.lastIndexOf(suggestionData.key) + 1)
237
+ });
238
+ } else {
239
+ const fromStartToKey = inputValue.slice(0, start);
240
+ const lastKeyObj = getKeyIndex(fromStartToKey);
241
+ if (lastKeyObj) {
242
+ const stringAfterKey = inputValue.slice(lastKeyObj.index + 1, fromStartToKey.length);
243
+ if (inputValue.length === 1 || stringAfterKey.search(keyDownKeys.space) === -1 && (lastKeyObj.index === 0 || inputValue[lastKeyObj.index - 1] === keyDownKeys.space || RegExp(/\n/g, 'u').test(inputValue[lastKeyObj.index - 1]))) {
244
+ const list = data.find(i => i.key === lastKeyObj.key);
245
+ if (list) {
246
+ const caretPos = getCaretPos(e, elemRef.current, fromStartToKey.split(lastKeyObj.key).length - 1, lastKeyObj.key);
247
+ setSuggestionData({
248
+ ...list,
249
+ search: stringAfterKey,
250
+ ...caretPos
251
+ });
252
+ }
253
+ }
254
+ }
255
+ }
256
+ });
257
+ }
258
+ }, [setSuggestionData, suggestionData, data, keys, elemRef, getKeyIndex]);
259
+ const onKeyHandler = useCallback(e => {
260
+ callAfterDelay(() => {
261
+ const inputValue = e.target.value;
262
+ const {
263
+ key
264
+ } = e;
265
+ const fromStartToKey = inputValue.slice(0, getCursorPos(elemRef.current).start);
266
+ if ((inputValue.length === 1 || fromStartToKey.at(-2) === keyDownKeys.space || RegExp(/\n/g, 'u').test(fromStartToKey.at(-2))) && !suggestionData) {
267
+ const list = data.find(i => i.key === key);
268
+ if (list) {
269
+ const caretPos = getCaretPos(e, elemRef.current, fromStartToKey.split(key).length - 1, key);
270
+ setSuggestionData({
271
+ ...list,
272
+ ...caretPos
273
+ });
274
+ }
275
+ } else {
276
+ setSuggestionData(null);
277
+ }
278
+ });
279
+ }, [elemRef, suggestionData, setSuggestionData, data]);
280
+ const resetText = () => {
281
+ if (realText.current) {
282
+ const cursorPosition = elemRef.current.selectionStart;
283
+ elemRef.current.value = realText.current;
284
+ realText.current = undefined;
285
+ elemRef.current.selectionStart = cursorPosition;
286
+ elemRef.current.selectionEnd = cursorPosition;
287
+ }
288
+ };
289
+ const onRestKeysPressHandler = useCallback(e => {
290
+ // Symbol is pressed
291
+ if (e.key.length === 1) {
292
+ resetText();
293
+ }
294
+ callAfterDelay(() => {
295
+ const inputValue = e.target.value;
296
+ const fromStartToKey = inputValue.slice(0, getCursorPos(elemRef.current).start);
297
+ const lastKeyObj = getKeyIndex(fromStartToKey);
298
+ if (suggestionData && lastKeyObj) {
299
+ setSuggestionData({
300
+ ...suggestionData,
301
+ search: fromStartToKey.slice(fromStartToKey.lastIndexOf(suggestionData.key) + 1)
302
+ });
303
+ } else if (lastKeyObj) {
304
+ const stringAfterKey = inputValue.slice(lastKeyObj.index + 1, fromStartToKey.length);
305
+ if (stringAfterKey.search(keyDownKeys.space) === -1 && inputValue[lastKeyObj.index - 1] === keyDownKeys.space && !RegExp(/\n/g, 'u').test(fromStartToKey.at(-1))) {
306
+ const list = data.find(i => i.key === lastKeyObj.key);
307
+ if (list) {
308
+ const caretPos = getCaretPos(e, elemRef.current, fromStartToKey.split(lastKeyObj.key).length - 1, lastKeyObj.key);
309
+ setSuggestionData({
310
+ ...list,
311
+ search: stringAfterKey,
312
+ ...caretPos
313
+ });
314
+ }
315
+ }
316
+ } else {
317
+ setSuggestionData(null);
318
+ }
319
+ });
320
+ }, [elemRef, getKeyIndex, suggestionData]);
321
+ const handleKeyPress = useCallback(e => {
322
+ const {
323
+ key
324
+ } = e;
325
+ switch (key) {
326
+ case keyDownKeys.enter:
327
+ onEnterHandler(e);
328
+ break;
329
+ case keyDownKeys.tab:
330
+ case keyDownKeys.escape:
331
+ case keyDownKeys.space:
332
+ case keyDownKeys.arrowLeft:
333
+ case keyDownKeys.arrowRight:
334
+ setSuggestionData(null);
335
+ resetText();
336
+ break;
337
+ case keyDownKeys.arrowUp:
338
+ suggestionData && arrowUpHandler(e);
339
+ break;
340
+ case keyDownKeys.arrowDown:
341
+ suggestionData && arrowDownHandler(e);
342
+ break;
343
+ case keyDownKeys.backspace:
344
+ onBackSpaseHandler(e);
345
+ break;
346
+ case keys[keys.indexOf(key)]:
347
+ onKeyHandler(e);
348
+ resetText();
349
+ break;
350
+ default:
351
+ onRestKeysPressHandler(e);
352
+ }
353
+ }, [onEnterHandler, setSuggestionData, suggestionData, onBackSpaseHandler, onKeyHandler, onRestKeysPressHandler]);
354
+ const onMouseEnter = (e, index) => {
355
+ setHoveredState(index);
356
+ hoverHandler(e, index);
357
+ };
358
+ const height = useMemo(() => dataToShow ? dataToShow.length >= ROW_COUNT ? ROW_COUNT * ROW_HEIGHT : dataToShow.length * ROW_HEIGHT : 0, [dataToShow]);
359
+ const handleOutsideClick = useClickOutside(() => {
360
+ setSuggestionData(null);
361
+ resetText();
362
+ });
363
+ useEffect(() => {
364
+ if (!elemRef) return;
365
+ const handlePasteAnywhere = () => setSuggestionData(null);
366
+ elemRef.current.addEventListener('paste', handlePasteAnywhere);
367
+ return () => {
368
+ elemRef.current.removeEventListener('paste', handlePasteAnywhere);
369
+ };
370
+ }, [elemRef]);
371
+ useEffect(() => {
372
+ setHoveredState(0);
373
+ hoverHandler(undefined, 0);
374
+ }, [suggestionData]);
375
+ useKeyDown(handleKeyPress, [handleKeyPress], elemRef, []);
376
+ const onItemClick = event => {
377
+ event.stopPropagation();
378
+ onEnterHandler();
379
+ };
380
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, dataToShow && /*#__PURE__*/React__default.createElement("div", {
381
+ ref: handleOutsideClick,
382
+ className: "suggestion-list",
383
+ style: {
384
+ top: suggestionData.top - (dataToShow.length >= ROW_COUNT ? ROW_HEIGHT * ROW_COUNT : dataToShow.length * ROW_HEIGHT),
385
+ left: suggestionData.left,
386
+ height,
387
+ width: ROW_WIDTH
388
+ }
389
+ }, /*#__PURE__*/React__default.createElement("div", {
390
+ className: "suggestion-rows"
391
+ }, /*#__PURE__*/React__default.createElement(CustomScrollbar, {
392
+ ref: scrollRef,
393
+ autoHeight: true,
394
+ autoHeightMax: ROW_COUNT * ROW_HEIGHT,
395
+ size: "small"
396
+ }, /*#__PURE__*/React__default.createElement("ul", null, dataToShow.map((i, index) => /*#__PURE__*/React__default.createElement("li", {
397
+ className: classnames({
398
+ hover: index === hoveredState
399
+ }),
400
+ ref: index === hoveredState ? hoveredRowRef : null,
401
+ onMouseEnter: e => onMouseEnter(e, index),
402
+ onClick: onItemClick,
403
+ key: i.label
404
+ }, /*#__PURE__*/React__default.createElement("span", null, i.label))))))));
405
+ }
406
+
407
+ export { SuggestionList as S, actionTypes as a, SPACE_HEIGHT as b, callAfterDelay as c, keyDownKeys as k };