@diplodoc/components 4.9.3 → 4.11.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 (291) hide show
  1. package/build/cjs/components/BookmarkButton/BookmarkButton.css.map +1 -1
  2. package/build/cjs/components/BookmarkButton/BookmarkButton.js.map +2 -2
  3. package/build/cjs/components/Breadcrumbs/Breadcrumbs.css.map +1 -1
  4. package/build/cjs/components/Breadcrumbs/Breadcrumbs.js.map +2 -2
  5. package/build/cjs/components/ConsentPopup/ConsentPopup.js +6 -1
  6. package/build/cjs/components/ConsentPopup/ConsentPopup.js.map +2 -2
  7. package/build/cjs/components/ContributorAvatars/Avatars/Avatar.js.map +2 -2
  8. package/build/cjs/components/ContributorAvatars/Avatars/Details.js.map +2 -2
  9. package/build/cjs/components/ContributorAvatars/Avatars/HiddenAvatars.js.map +2 -2
  10. package/build/cjs/components/ContributorAvatars/ContributorAvatars.css.map +1 -1
  11. package/build/cjs/components/ContributorAvatars/ContributorAvatars.js.map +2 -2
  12. package/build/cjs/components/ContributorAvatars/models.d.ts +0 -1
  13. package/build/cjs/components/Contributors/Contributors.css.map +1 -1
  14. package/build/cjs/components/Contributors/Contributors.js.map +2 -2
  15. package/build/cjs/components/Control/Control.css.map +1 -1
  16. package/build/cjs/components/Control/Control.js.map +2 -2
  17. package/build/cjs/components/Controls/Controls.css.map +1 -1
  18. package/build/cjs/components/Controls/Controls.js.map +2 -2
  19. package/build/cjs/components/Controls/ControlsLayout.js.map +2 -2
  20. package/build/cjs/components/Controls/single-controls/DividerControl/DividerControl.css.map +1 -1
  21. package/build/cjs/components/Controls/single-controls/DividerControl/DividerControl.js.map +2 -2
  22. package/build/cjs/components/Controls/single-controls/EditControl.js.map +2 -2
  23. package/build/cjs/components/Controls/single-controls/FullScreenControl.js.map +2 -2
  24. package/build/cjs/components/Controls/single-controls/LangControl/LangControl.css.map +1 -1
  25. package/build/cjs/components/Controls/single-controls/LangControl/LangControl.js +3 -0
  26. package/build/cjs/components/Controls/single-controls/LangControl/LangControl.js.map +2 -2
  27. package/build/cjs/components/Controls/single-controls/PdfControl.js.map +2 -2
  28. package/build/cjs/components/Controls/single-controls/SettingsControl/SettingsControl.css +1 -3
  29. package/build/cjs/components/Controls/single-controls/SettingsControl/SettingsControl.css.map +2 -2
  30. package/build/cjs/components/Controls/single-controls/SettingsControl/SettingsControl.js.map +2 -2
  31. package/build/cjs/components/Controls/single-controls/SinglePageControl.js.map +2 -2
  32. package/build/cjs/components/DocContentPage/DocContentPage.js.map +2 -2
  33. package/build/cjs/components/DocLayout/DocLayout.css +3 -2
  34. package/build/cjs/components/DocLayout/DocLayout.css.map +3 -3
  35. package/build/cjs/components/DocLayout/DocLayout.d.ts +3 -3
  36. package/build/cjs/components/DocLayout/DocLayout.js +1 -1
  37. package/build/cjs/components/DocLayout/DocLayout.js.map +2 -2
  38. package/build/cjs/components/DocLeadingPage/DocLeadingPage.css.map +1 -1
  39. package/build/cjs/components/DocLeadingPage/DocLeadingPage.js.map +2 -2
  40. package/build/cjs/components/DocPage/DocPage.css.map +1 -1
  41. package/build/cjs/components/DocPage/DocPage.js +2 -2
  42. package/build/cjs/components/DocPage/DocPage.js.map +2 -2
  43. package/build/cjs/components/DocPageTitle/DocPageTitle.css.map +1 -1
  44. package/build/cjs/components/DocPageTitle/DocPageTitle.js.map +2 -2
  45. package/build/cjs/components/ErrorBoundary/ErrorBoundary.js.map +2 -2
  46. package/build/cjs/components/ErrorPage/ErrorPage.css.map +1 -1
  47. package/build/cjs/components/ErrorPage/ErrorPage.js.map +2 -2
  48. package/build/cjs/components/Feedback/Feedback.css +0 -4
  49. package/build/cjs/components/Feedback/Feedback.css.map +2 -2
  50. package/build/cjs/components/Feedback/Feedback.js +5 -2
  51. package/build/cjs/components/Feedback/Feedback.js.map +2 -2
  52. package/build/cjs/components/Feedback/controls/DislikeControl.d.ts +1 -0
  53. package/build/cjs/components/Feedback/controls/DislikeControl.js +34 -19
  54. package/build/cjs/components/Feedback/controls/DislikeControl.js.map +2 -2
  55. package/build/cjs/components/Feedback/controls/DislikeVariantsPopup.js.map +2 -2
  56. package/build/cjs/components/Feedback/controls/LikeControl.d.ts +2 -1
  57. package/build/cjs/components/Feedback/controls/LikeControl.js +32 -27
  58. package/build/cjs/components/Feedback/controls/LikeControl.js.map +2 -2
  59. package/build/cjs/components/Feedback/controls/SuccessPopup.js.map +2 -2
  60. package/build/cjs/components/Mark/Mark.css.map +1 -1
  61. package/build/cjs/components/Mark/Mark.js.map +2 -2
  62. package/build/cjs/components/MiniToc/MiniToc.css.map +3 -3
  63. package/build/cjs/components/MiniToc/MiniToc.js.map +2 -2
  64. package/build/cjs/components/Paginator/Paginator.css.map +1 -1
  65. package/build/cjs/components/Paginator/Paginator.js.map +2 -2
  66. package/build/cjs/components/Scrollspy/Scrollspy.js.map +2 -2
  67. package/build/cjs/components/SearchBar/SearchBar.css.map +1 -1
  68. package/build/cjs/components/SearchBar/SearchBar.js.map +2 -2
  69. package/build/cjs/components/SearchBar/hooks.js +2 -2
  70. package/build/cjs/components/SearchBar/hooks.js.map +2 -2
  71. package/build/cjs/components/SearchItem/SearchItem.css.map +1 -1
  72. package/build/cjs/components/SearchItem/SearchItem.js.map +2 -2
  73. package/build/cjs/components/SearchPage/SearchPage.css.map +1 -1
  74. package/build/cjs/components/SearchPage/SearchPage.js.map +2 -2
  75. package/build/cjs/components/SearchSuggest/SearchInput.d.ts +19 -0
  76. package/build/cjs/components/SearchSuggest/SearchInput.js +96 -0
  77. package/build/cjs/components/SearchSuggest/SearchInput.js.map +7 -0
  78. package/build/cjs/components/SearchSuggest/Suggest.d.ts +18 -0
  79. package/build/cjs/components/SearchSuggest/Suggest.js +112 -0
  80. package/build/cjs/components/SearchSuggest/Suggest.js.map +7 -0
  81. package/build/cjs/components/SearchSuggest/SuggestItem.d.ts +3 -0
  82. package/build/cjs/components/SearchSuggest/SuggestItem.js +60 -0
  83. package/build/cjs/components/SearchSuggest/SuggestItem.js.map +7 -0
  84. package/build/cjs/components/SearchSuggest/index.css +132 -0
  85. package/build/cjs/components/SearchSuggest/index.css.map +7 -0
  86. package/build/cjs/components/SearchSuggest/index.d.ts +18 -0
  87. package/build/cjs/components/SearchSuggest/index.js +150 -0
  88. package/build/cjs/components/SearchSuggest/index.js.map +7 -0
  89. package/build/cjs/components/SearchSuggest/types.d.ts +53 -0
  90. package/build/cjs/components/SearchSuggest/types.js +34 -0
  91. package/build/cjs/components/SearchSuggest/types.js.map +7 -0
  92. package/build/cjs/components/SearchSuggest/useFocus.d.ts +14 -0
  93. package/build/cjs/components/SearchSuggest/useFocus.js +48 -0
  94. package/build/cjs/components/SearchSuggest/useFocus.js.map +7 -0
  95. package/build/cjs/components/SearchSuggest/useProvider.d.ts +6 -0
  96. package/build/cjs/components/SearchSuggest/useProvider.js +133 -0
  97. package/build/cjs/components/SearchSuggest/useProvider.js.map +7 -0
  98. package/build/cjs/components/Subscribe/Subscribe.css +0 -4
  99. package/build/cjs/components/Subscribe/Subscribe.css.map +2 -2
  100. package/build/cjs/components/Subscribe/Subscribe.js +32 -25
  101. package/build/cjs/components/Subscribe/Subscribe.js.map +2 -2
  102. package/build/cjs/components/Subscribe/SubscribeSuccessPopup/SubscribeSuccessPopup.d.ts +1 -1
  103. package/build/cjs/components/Subscribe/SubscribeSuccessPopup/SubscribeSuccessPopup.js.map +2 -2
  104. package/build/cjs/components/Subscribe/SubscribeVariantsPopup/SubscribeVariantsPopup.d.ts +2 -2
  105. package/build/cjs/components/Subscribe/SubscribeVariantsPopup/SubscribeVariantsPopup.js.map +2 -2
  106. package/build/cjs/components/Subscribe/utils.d.ts +1 -1
  107. package/build/cjs/components/Toc/Toc.css.map +1 -1
  108. package/build/cjs/components/Toc/Toc.d.ts +2 -2
  109. package/build/cjs/components/Toc/Toc.js +21 -2
  110. package/build/cjs/components/Toc/Toc.js.map +2 -2
  111. package/build/cjs/components/TocItem/TocItem.css.map +1 -1
  112. package/build/cjs/components/TocItem/TocItem.d.ts +1 -6
  113. package/build/cjs/components/TocItem/TocItem.js +20 -39
  114. package/build/cjs/components/TocItem/TocItem.js.map +2 -2
  115. package/build/cjs/components/TocLable/TocLabel.css.map +1 -1
  116. package/build/cjs/components/TocLable/TocLabel.js.map +2 -2
  117. package/build/cjs/components/TocNavPanel/TocNavPanel.css.map +1 -1
  118. package/build/cjs/components/TocNavPanel/TocNavPanel.js.map +2 -2
  119. package/build/cjs/components/ToggleArrow/ToggleArrow.css.map +1 -1
  120. package/build/cjs/components/ToggleArrow/ToggleArrow.js.map +2 -2
  121. package/build/cjs/components/UpdatedAtDate/UpdatedAtDate.css.map +1 -1
  122. package/build/cjs/components/UpdatedAtDate/UpdatedAtDate.js.map +2 -2
  123. package/build/cjs/hooks/index.d.ts +1 -0
  124. package/build/cjs/hooks/index.js +1 -0
  125. package/build/cjs/hooks/index.js.map +2 -2
  126. package/build/cjs/hooks/useAnalytics.d.ts +1 -0
  127. package/build/cjs/hooks/useAnalytics.js +0 -1
  128. package/build/cjs/hooks/useAnalytics.js.map +2 -2
  129. package/build/cjs/hooks/usePopper.js.map +2 -2
  130. package/build/cjs/hooks/usePopupState.d.ts +1 -1
  131. package/build/cjs/hooks/useVirtualElementRef.d.ts +32 -0
  132. package/build/cjs/hooks/useVirtualElementRef.js +107 -0
  133. package/build/cjs/hooks/useVirtualElementRef.js.map +7 -0
  134. package/build/cjs/i18n/index.d.ts +18 -0
  135. package/build/cjs/i18n/index.js +11 -2
  136. package/build/cjs/i18n/index.js.map +2 -2
  137. package/build/cjs/index.d.ts +1 -0
  138. package/build/cjs/index.js +1 -0
  139. package/build/cjs/index.js.map +2 -2
  140. package/build/cjs/models/index.d.ts +3 -4
  141. package/build/cjs/models/index.js.map +1 -1
  142. package/build/cjs/utils/index.d.ts +1 -2
  143. package/build/cjs/utils/index.js.map +2 -2
  144. package/build/esm/components/BookmarkButton/BookmarkButton.css.map +1 -1
  145. package/build/esm/components/BookmarkButton/BookmarkButton.js.map +2 -2
  146. package/build/esm/components/Breadcrumbs/Breadcrumbs.css.map +1 -1
  147. package/build/esm/components/Breadcrumbs/Breadcrumbs.js.map +2 -2
  148. package/build/esm/components/ConsentPopup/ConsentPopup.js +6 -1
  149. package/build/esm/components/ConsentPopup/ConsentPopup.js.map +2 -2
  150. package/build/esm/components/ContributorAvatars/Avatars/Avatar.js.map +2 -2
  151. package/build/esm/components/ContributorAvatars/Avatars/Details.js.map +2 -2
  152. package/build/esm/components/ContributorAvatars/Avatars/HiddenAvatars.js.map +2 -2
  153. package/build/esm/components/ContributorAvatars/ContributorAvatars.css.map +1 -1
  154. package/build/esm/components/ContributorAvatars/ContributorAvatars.js.map +2 -2
  155. package/build/esm/components/ContributorAvatars/models.d.ts +0 -1
  156. package/build/esm/components/Contributors/Contributors.css.map +1 -1
  157. package/build/esm/components/Contributors/Contributors.js.map +2 -2
  158. package/build/esm/components/Control/Control.css.map +1 -1
  159. package/build/esm/components/Control/Control.js.map +2 -2
  160. package/build/esm/components/Controls/Controls.css.map +1 -1
  161. package/build/esm/components/Controls/Controls.js.map +2 -2
  162. package/build/esm/components/Controls/ControlsLayout.js.map +2 -2
  163. package/build/esm/components/Controls/single-controls/DividerControl/DividerControl.css.map +1 -1
  164. package/build/esm/components/Controls/single-controls/DividerControl/DividerControl.js.map +2 -2
  165. package/build/esm/components/Controls/single-controls/EditControl.js.map +2 -2
  166. package/build/esm/components/Controls/single-controls/FullScreenControl.js.map +2 -2
  167. package/build/esm/components/Controls/single-controls/LangControl/LangControl.css.map +1 -1
  168. package/build/esm/components/Controls/single-controls/LangControl/LangControl.js +3 -0
  169. package/build/esm/components/Controls/single-controls/LangControl/LangControl.js.map +2 -2
  170. package/build/esm/components/Controls/single-controls/PdfControl.js.map +2 -2
  171. package/build/esm/components/Controls/single-controls/SettingsControl/SettingsControl.css +1 -3
  172. package/build/esm/components/Controls/single-controls/SettingsControl/SettingsControl.css.map +2 -2
  173. package/build/esm/components/Controls/single-controls/SettingsControl/SettingsControl.js.map +2 -2
  174. package/build/esm/components/Controls/single-controls/SinglePageControl.js.map +2 -2
  175. package/build/esm/components/DocContentPage/DocContentPage.js.map +2 -2
  176. package/build/esm/components/DocLayout/DocLayout.css +3 -2
  177. package/build/esm/components/DocLayout/DocLayout.css.map +3 -3
  178. package/build/esm/components/DocLayout/DocLayout.d.ts +3 -3
  179. package/build/esm/components/DocLayout/DocLayout.js +1 -1
  180. package/build/esm/components/DocLayout/DocLayout.js.map +2 -2
  181. package/build/esm/components/DocLeadingPage/DocLeadingPage.css.map +1 -1
  182. package/build/esm/components/DocLeadingPage/DocLeadingPage.js.map +2 -2
  183. package/build/esm/components/DocPage/DocPage.css.map +1 -1
  184. package/build/esm/components/DocPage/DocPage.js +2 -2
  185. package/build/esm/components/DocPage/DocPage.js.map +2 -2
  186. package/build/esm/components/DocPageTitle/DocPageTitle.css.map +1 -1
  187. package/build/esm/components/DocPageTitle/DocPageTitle.js.map +2 -2
  188. package/build/esm/components/ErrorBoundary/ErrorBoundary.js.map +2 -2
  189. package/build/esm/components/ErrorPage/ErrorPage.css.map +1 -1
  190. package/build/esm/components/ErrorPage/ErrorPage.js.map +2 -2
  191. package/build/esm/components/Feedback/Feedback.css +0 -4
  192. package/build/esm/components/Feedback/Feedback.css.map +2 -2
  193. package/build/esm/components/Feedback/Feedback.js +5 -2
  194. package/build/esm/components/Feedback/Feedback.js.map +2 -2
  195. package/build/esm/components/Feedback/controls/DislikeControl.d.ts +1 -0
  196. package/build/esm/components/Feedback/controls/DislikeControl.js +34 -19
  197. package/build/esm/components/Feedback/controls/DislikeControl.js.map +2 -2
  198. package/build/esm/components/Feedback/controls/DislikeVariantsPopup.js.map +2 -2
  199. package/build/esm/components/Feedback/controls/LikeControl.d.ts +2 -1
  200. package/build/esm/components/Feedback/controls/LikeControl.js +32 -27
  201. package/build/esm/components/Feedback/controls/LikeControl.js.map +2 -2
  202. package/build/esm/components/Feedback/controls/SuccessPopup.js.map +2 -2
  203. package/build/esm/components/Mark/Mark.css.map +1 -1
  204. package/build/esm/components/Mark/Mark.js.map +2 -2
  205. package/build/esm/components/MiniToc/MiniToc.css.map +3 -3
  206. package/build/esm/components/MiniToc/MiniToc.js.map +2 -2
  207. package/build/esm/components/Paginator/Paginator.css.map +1 -1
  208. package/build/esm/components/Paginator/Paginator.js.map +2 -2
  209. package/build/esm/components/Scrollspy/Scrollspy.js.map +2 -2
  210. package/build/esm/components/SearchBar/SearchBar.css.map +1 -1
  211. package/build/esm/components/SearchBar/SearchBar.js.map +2 -2
  212. package/build/esm/components/SearchBar/hooks.js +2 -2
  213. package/build/esm/components/SearchBar/hooks.js.map +2 -2
  214. package/build/esm/components/SearchItem/SearchItem.css.map +1 -1
  215. package/build/esm/components/SearchItem/SearchItem.js.map +2 -2
  216. package/build/esm/components/SearchPage/SearchPage.css.map +1 -1
  217. package/build/esm/components/SearchPage/SearchPage.js.map +2 -2
  218. package/build/esm/components/SearchSuggest/SearchInput.d.ts +19 -0
  219. package/build/esm/components/SearchSuggest/SearchInput.js +68 -0
  220. package/build/esm/components/SearchSuggest/SearchInput.js.map +7 -0
  221. package/build/esm/components/SearchSuggest/Suggest.d.ts +18 -0
  222. package/build/esm/components/SearchSuggest/Suggest.js +84 -0
  223. package/build/esm/components/SearchSuggest/Suggest.js.map +7 -0
  224. package/build/esm/components/SearchSuggest/SuggestItem.d.ts +3 -0
  225. package/build/esm/components/SearchSuggest/SuggestItem.js +29 -0
  226. package/build/esm/components/SearchSuggest/SuggestItem.js.map +7 -0
  227. package/build/esm/components/SearchSuggest/index.css +132 -0
  228. package/build/esm/components/SearchSuggest/index.css.map +7 -0
  229. package/build/esm/components/SearchSuggest/index.d.ts +18 -0
  230. package/build/esm/components/SearchSuggest/index.js +129 -0
  231. package/build/esm/components/SearchSuggest/index.js.map +7 -0
  232. package/build/esm/components/SearchSuggest/types.d.ts +53 -0
  233. package/build/esm/components/SearchSuggest/types.js +13 -0
  234. package/build/esm/components/SearchSuggest/types.js.map +7 -0
  235. package/build/esm/components/SearchSuggest/useFocus.d.ts +14 -0
  236. package/build/esm/components/SearchSuggest/useFocus.js +27 -0
  237. package/build/esm/components/SearchSuggest/useFocus.js.map +7 -0
  238. package/build/esm/components/SearchSuggest/useProvider.d.ts +6 -0
  239. package/build/esm/components/SearchSuggest/useProvider.js +102 -0
  240. package/build/esm/components/SearchSuggest/useProvider.js.map +7 -0
  241. package/build/esm/components/Subscribe/Subscribe.css +0 -4
  242. package/build/esm/components/Subscribe/Subscribe.css.map +2 -2
  243. package/build/esm/components/Subscribe/Subscribe.js +32 -25
  244. package/build/esm/components/Subscribe/Subscribe.js.map +2 -2
  245. package/build/esm/components/Subscribe/SubscribeSuccessPopup/SubscribeSuccessPopup.d.ts +1 -1
  246. package/build/esm/components/Subscribe/SubscribeSuccessPopup/SubscribeSuccessPopup.js.map +2 -2
  247. package/build/esm/components/Subscribe/SubscribeVariantsPopup/SubscribeVariantsPopup.d.ts +2 -2
  248. package/build/esm/components/Subscribe/SubscribeVariantsPopup/SubscribeVariantsPopup.js.map +2 -2
  249. package/build/esm/components/Subscribe/utils.d.ts +1 -1
  250. package/build/esm/components/Toc/Toc.css.map +1 -1
  251. package/build/esm/components/Toc/Toc.d.ts +2 -2
  252. package/build/esm/components/Toc/Toc.js +21 -2
  253. package/build/esm/components/Toc/Toc.js.map +2 -2
  254. package/build/esm/components/TocItem/TocItem.css.map +1 -1
  255. package/build/esm/components/TocItem/TocItem.d.ts +1 -6
  256. package/build/esm/components/TocItem/TocItem.js +20 -39
  257. package/build/esm/components/TocItem/TocItem.js.map +2 -2
  258. package/build/esm/components/TocLable/TocLabel.css.map +1 -1
  259. package/build/esm/components/TocLable/TocLabel.js.map +2 -2
  260. package/build/esm/components/TocNavPanel/TocNavPanel.css.map +1 -1
  261. package/build/esm/components/TocNavPanel/TocNavPanel.js.map +2 -2
  262. package/build/esm/components/ToggleArrow/ToggleArrow.css.map +1 -1
  263. package/build/esm/components/ToggleArrow/ToggleArrow.js.map +2 -2
  264. package/build/esm/components/UpdatedAtDate/UpdatedAtDate.css.map +1 -1
  265. package/build/esm/components/UpdatedAtDate/UpdatedAtDate.js.map +2 -2
  266. package/build/esm/hooks/index.d.ts +1 -0
  267. package/build/esm/hooks/index.js +1 -0
  268. package/build/esm/hooks/index.js.map +2 -2
  269. package/build/esm/hooks/useAnalytics.d.ts +1 -0
  270. package/build/esm/hooks/useAnalytics.js +0 -2
  271. package/build/esm/hooks/useAnalytics.js.map +2 -2
  272. package/build/esm/hooks/usePopper.js.map +2 -2
  273. package/build/esm/hooks/usePopupState.d.ts +1 -1
  274. package/build/esm/hooks/useVirtualElementRef.d.ts +32 -0
  275. package/build/esm/hooks/useVirtualElementRef.js +89 -0
  276. package/build/esm/hooks/useVirtualElementRef.js.map +7 -0
  277. package/build/esm/i18n/index.d.ts +18 -0
  278. package/build/esm/i18n/index.js +11 -2
  279. package/build/esm/i18n/index.js.map +2 -2
  280. package/build/esm/index.d.ts +1 -0
  281. package/build/esm/index.js +1 -0
  282. package/build/esm/index.js.map +2 -2
  283. package/build/esm/models/index.d.ts +3 -4
  284. package/build/esm/models/index.js.map +1 -1
  285. package/build/esm/utils/index.d.ts +1 -2
  286. package/build/esm/utils/index.js.map +2 -2
  287. package/build/index.css.map +1 -1
  288. package/build/themes/common/index.css.map +1 -1
  289. package/package.json +10 -45
  290. package/src/i18n/en.json +10 -1
  291. package/src/i18n/ru.json +10 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/components/SearchBar/home/runner/work/components/components/src/components/SearchBar/SearchBar.scss", "../../../../src/components/SearchBar/%3Cinput%20css%20SjoxEt%3E"],
3
+ "sources": ["../../../../src/components/SearchBar/home/runner/work/components/components/src/components/SearchBar/SearchBar.scss", "../../../../src/components/SearchBar/%3Cinput%20css%20vZQamf%3E"],
4
4
  "sourcesContent": ["@import '../../styles/variables';\n@import '../../styles/mixins';\n\n.dc-search-bar {\n width: 100%;\n height: 100%;\n border-radius: 5px;\n box-sizing: border-box;\n box-shadow: 0px 3px 10px var(--g-color-base-generic-accent);\n padding: 11px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n font-size: var(--g-text-body-short-font-size);\n line-height: var(--g-text-body-short-line-height);\n\n &__search-query-label {\n color: var(--g-color-text-secondary);\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n\n @media (max-width: map-get($screenBreakpoints, 'md') + 1) {\n display: none;\n }\n }\n\n &__search-query {\n max-width: 400px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n\n @media (max-width: map-get($screenBreakpoints, 'md') + 1) {\n display: none;\n }\n }\n\n &__left {\n width: 90%;\n display: flex;\n align-items: center;\n }\n\n &__navigation {\n display: flex;\n align-items: center;\n margin-right: 11px;\n }\n\n &__next-arrow {\n transform: rotate(-180deg);\n }\n\n &__counter {\n margin: 0 4px;\n }\n}\n\n$hl-class: '.dc-search-highlighted';\n\n#{$hl-class} {\n background: var(--dc-text-highlight);\n\n &_selected {\n background: var(--dc-text-highlight-selected);\n }\n}\n", ".dc-search-bar {\n width: 100%;\n height: 100%;\n border-radius: 5px;\n box-sizing: border-box;\n box-shadow: 0px 3px 10px var(--g-color-base-generic-accent);\n padding: 11px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: var(--g-text-body-short-font-size);\n line-height: var(--g-text-body-short-line-height);\n}\n.dc-search-bar__search-query-label {\n color: var(--g-color-text-secondary);\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n@media (max-width: 770px) {\n .dc-search-bar__search-query-label {\n display: none;\n }\n}\n.dc-search-bar__search-query {\n max-width: 400px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n@media (max-width: 770px) {\n .dc-search-bar__search-query {\n display: none;\n }\n}\n.dc-search-bar__left {\n width: 90%;\n display: flex;\n align-items: center;\n}\n.dc-search-bar__navigation {\n display: flex;\n align-items: center;\n margin-right: 11px;\n}\n.dc-search-bar__next-arrow {\n transform: rotate(-180deg);\n}\n.dc-search-bar__counter {\n margin: 0 4px;\n}\n\n.dc-search-highlighted {\n background: var(--dc-text-highlight);\n}\n.dc-search-highlighted_selected {\n background: var(--dc-text-highlight-selected);\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1NlYXJjaEJhciIsInNvdXJjZXMiOlsiU2VhcmNoQmFyLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFOSjtJQU9ROzs7QUFJUjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBTko7SUFPUTs7O0FBSVI7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJOzs7QUFNUjtFQUNJOztBQUVBO0VBQ0kiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi9zdHlsZXMvdmFyaWFibGVzJztcbkBpbXBvcnQgJy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuXG4uZGMtc2VhcmNoLWJhciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJveC1zaGFkb3c6IDBweCAzcHggMTBweCB2YXIoLS1nLWNvbG9yLWJhc2UtZ2VuZXJpYy1hY2NlbnQpO1xuICAgIHBhZGRpbmc6IDExcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWJvZHktc2hvcnQtZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktc2hvcnQtbGluZS1oZWlnaHQpO1xuXG4gICAgJl9fc2VhcmNoLXF1ZXJ5LWxhYmVsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpICsgMSkge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3NlYXJjaC1xdWVyeSB7XG4gICAgICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgKyAxKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fbGVmdCB7XG4gICAgICAgIHdpZHRoOiA5MCU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgJl9fbmF2aWdhdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTFweDtcbiAgICB9XG5cbiAgICAmX19uZXh0LWFycm93IHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTE4MGRlZyk7XG4gICAgfVxuXG4gICAgJl9fY291bnRlciB7XG4gICAgICAgIG1hcmdpbjogMCA0cHg7XG4gICAgfVxufVxuXG4kaGwtY2xhc3M6ICcuZGMtc2VhcmNoLWhpZ2hsaWdodGVkJztcblxuI3skaGwtY2xhc3N9IHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kYy10ZXh0LWhpZ2hsaWdodCk7XG5cbiAgICAmX3NlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGMtdGV4dC1oaWdobGlnaHQtc2VsZWN0ZWQpO1xuICAgIH1cbn1cbiJdfQ== */"],
5
5
  "mappings": ";AAGA,CAAA;AACI,SAAA;AACA,UAAA;AACA,iBAAA;AACA,cAAA;AACA,cAAA,IAAA,IAAA,KAAA,IAAA;AACA,WAAA;AACA,WAAA;AACA,eAAA;AACA,mBAAA;AAEA,aAAA,IAAA;AACA,eAAA,IAAA;ACHJ;ADKI,CAAA;AACI,SAAA,IAAA;AACA,eAAA;AACA,iBAAA;AACA,YAAA;ACHR;ADKQ,OAAA,CAAA,SAAA,EAAA;AANJ,GAAA;AAOQ,aAAA;ACFV;AACF;ADKI,CAAA;AACI,aAAA;AACA,eAAA;AACA,iBAAA;AACA,YAAA;ACHR;ADKQ,OAAA,CAAA,SAAA,EAAA;AANJ,GAAA;AAOQ,aAAA;ACFV;AACF;ADKI,CAAA;AACI,SAAA;AACA,WAAA;AACA,eAAA;ACHR;ADMI,CAAA;AACI,WAAA;AACA,eAAA;AACA,gBAAA;ACJR;ADOI,CAAA;AACI,aAAA,OAAA;ACLR;ADQI,CAAA;AACI,UAAA,EAAA;ACNR;ADYA,CAAA;AACI,cAAA,IAAA;ACTJ;ADWI,CAAA;AACI,cAAA,IAAA;ACTR;",
6
6
  "names": []
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/SearchBar/SearchBar.tsx"],
4
- "sourcesContent": ["import React, {memo} from 'react';\n\nimport {ChevronLeft, Xmark} from '@gravity-ui/icons';\nimport block from 'bem-cn-lite';\nimport {useHotkeys} from 'react-hotkeys-hook';\n\nimport {useTranslation} from '../../hooks';\nimport {ControlSizes} from '../../models';\nimport {Control} from '../Control';\n\nimport './SearchBar.scss';\n\nconst b = block('dc-search-bar');\n\nexport interface SearchBarProps {\n searchQuery?: string;\n onClickPrevSearch?: () => void;\n onClickNextSearch?: () => void;\n onCloseSearchBar?: () => void;\n searchCurrentIndex?: number;\n searchCountResults?: number;\n}\n\nconst noop = () => {};\n\nconst SearchBar = memo<SearchBarProps>((props) => {\n const {t} = useTranslation('search-bar');\n const {\n searchQuery,\n searchCurrentIndex,\n searchCountResults,\n onClickPrevSearch = noop,\n onClickNextSearch = noop,\n onCloseSearchBar = noop,\n } = props;\n\n const hotkeysOptions = {filterPreventDefault: true};\n const hotkeysPrev = '\u21E7+enter';\n const hotkeysNext = 'enter';\n useHotkeys(hotkeysPrev, onClickPrevSearch, hotkeysOptions, [onClickPrevSearch]);\n useHotkeys(hotkeysNext, onClickNextSearch, hotkeysOptions, [onClickNextSearch]);\n\n return (\n <div className={b()}>\n <div className={b('left')}>\n <div className={b('navigation')}>\n <Control\n onClick={onClickPrevSearch}\n tooltipText={`${t('prev')} (${hotkeysPrev})`}\n icon={ChevronLeft}\n />\n <span className={b('counter')}>\n {searchCurrentIndex}/{searchCountResults}\n </span>\n <Control\n onClick={onClickNextSearch}\n tooltipText={`${t('next')} (${hotkeysNext})`}\n icon={(args) => <ChevronLeft className={b('next-arrow')} {...args} />}\n />\n </div>\n <span className={b('search-query-label')}>\n {t<string>('search-query-label')}:&nbsp;\n </span>\n <span className={b('search-query')}>{searchQuery}</span>\n </div>\n <div className={b('right')}>\n <Control\n size={ControlSizes.M}\n onClick={onCloseSearchBar}\n tooltipText={t('close')}\n icon={Xmark}\n />\n </div>\n </div>\n );\n});\n\nSearchBar.displayName = 'DCSearchBar';\n\nexport default SearchBar;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA0B;AAE1B,mBAAiC;AACjC,yBAAkB;AAClB,gCAAyB;AAEzB,mBAA6B;AAC7B,oBAA2B;AAC3B,qBAAsB;AAEtB,uBAAO;AAEP,IAAM,QAAI,mBAAAA,SAAM,eAAe;AAW/B,IAAM,OAAO,MAAM;AAAC;AAEpB,IAAM,gBAAY,mBAAqB,CAAC,UAAU;AAC9C,QAAM,EAAC,EAAC,QAAI,6BAAe,YAAY;AACvC,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB;AAAA,IACpB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,EACvB,IAAI;AAEJ,QAAM,iBAAiB,EAAC,sBAAsB,KAAI;AAClD,QAAM,cAAc;AACpB,QAAM,cAAc;AACpB,4CAAW,aAAa,mBAAmB,gBAAgB,CAAC,iBAAiB,CAAC;AAC9E,4CAAW,aAAa,mBAAmB,gBAAgB,CAAC,iBAAiB,CAAC;AAE9E,SACI,6BAAAC,QAAA,cAAC,SAAI,WAAW,EAAE,KACd,6BAAAA,QAAA,cAAC,SAAI,WAAW,EAAE,MAAM,KACpB,6BAAAA,QAAA,cAAC,SAAI,WAAW,EAAE,YAAY,KAC1B,6BAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,SAAS;AAAA,MACT,aAAa,GAAG,EAAE,MAAM,CAAC,KAAK,WAAW;AAAA,MACzC,MAAM;AAAA;AAAA,EACV,GACA,6BAAAA,QAAA,cAAC,UAAK,WAAW,EAAE,SAAS,KACvB,oBAAmB,KAAE,kBAC1B,GACA,6BAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,SAAS;AAAA,MACT,aAAa,GAAG,EAAE,MAAM,CAAC,KAAK,WAAW;AAAA,MACzC,MAAM,CAAC,SAAS,6BAAAA,QAAA,cAAC,2CAAY,WAAW,EAAE,YAAY,KAAO,KAAM;AAAA;AAAA,EACvE,CACJ,GACA,6BAAAA,QAAA,cAAC,UAAK,WAAW,EAAE,oBAAoB,KAClC,EAAU,oBAAoB,GAAE,OACrC,GACA,6BAAAA,QAAA,cAAC,UAAK,WAAW,EAAE,cAAc,KAAI,WAAY,CACrD,GACA,6BAAAA,QAAA,cAAC,SAAI,WAAW,EAAE,OAAO,KACrB,6BAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,MAAM,2BAAa;AAAA,MACnB,SAAS;AAAA,MACT,aAAa,EAAE,OAAO;AAAA,MACtB,MAAM;AAAA;AAAA,EACV,CACJ,CACJ;AAER,CAAC;AAED,UAAU,cAAc;AAExB,IAAO,oBAAQ;",
4
+ "sourcesContent": ["import React, {memo} from 'react';\nimport {ChevronLeft, Xmark} from '@gravity-ui/icons';\nimport block from 'bem-cn-lite';\nimport {useHotkeys} from 'react-hotkeys-hook';\n\nimport {useTranslation} from '../../hooks';\nimport {ControlSizes} from '../../models';\nimport {Control} from '../Control';\n\nimport './SearchBar.scss';\n\nconst b = block('dc-search-bar');\n\nexport interface SearchBarProps {\n searchQuery?: string;\n onClickPrevSearch?: () => void;\n onClickNextSearch?: () => void;\n onCloseSearchBar?: () => void;\n searchCurrentIndex?: number;\n searchCountResults?: number;\n}\n\nconst noop = () => {};\n\nconst SearchBar = memo<SearchBarProps>((props) => {\n const {t} = useTranslation('search-bar');\n const {\n searchQuery,\n searchCurrentIndex,\n searchCountResults,\n onClickPrevSearch = noop,\n onClickNextSearch = noop,\n onCloseSearchBar = noop,\n } = props;\n\n const hotkeysOptions = {filterPreventDefault: true};\n const hotkeysPrev = '\u21E7+enter';\n const hotkeysNext = 'enter';\n useHotkeys(hotkeysPrev, onClickPrevSearch, hotkeysOptions, [onClickPrevSearch]);\n useHotkeys(hotkeysNext, onClickNextSearch, hotkeysOptions, [onClickNextSearch]);\n\n return (\n <div className={b()}>\n <div className={b('left')}>\n <div className={b('navigation')}>\n <Control\n onClick={onClickPrevSearch}\n tooltipText={`${t('prev')} (${hotkeysPrev})`}\n icon={ChevronLeft}\n />\n <span className={b('counter')}>\n {searchCurrentIndex}/{searchCountResults}\n </span>\n <Control\n onClick={onClickNextSearch}\n tooltipText={`${t('next')} (${hotkeysNext})`}\n icon={(args) => <ChevronLeft className={b('next-arrow')} {...args} />}\n />\n </div>\n <span className={b('search-query-label')}>\n {t<string>('search-query-label')}:&nbsp;\n </span>\n <span className={b('search-query')}>{searchQuery}</span>\n </div>\n <div className={b('right')}>\n <Control\n size={ControlSizes.M}\n onClick={onCloseSearchBar}\n tooltipText={t('close')}\n icon={Xmark}\n />\n </div>\n </div>\n );\n});\n\nSearchBar.displayName = 'DCSearchBar';\n\nexport default SearchBar;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA0B;AAC1B,mBAAiC;AACjC,yBAAkB;AAClB,gCAAyB;AAEzB,mBAA6B;AAC7B,oBAA2B;AAC3B,qBAAsB;AAEtB,uBAAO;AAEP,IAAM,QAAI,mBAAAA,SAAM,eAAe;AAW/B,IAAM,OAAO,MAAM;AAAC;AAEpB,IAAM,gBAAY,mBAAqB,CAAC,UAAU;AAC9C,QAAM,EAAC,EAAC,QAAI,6BAAe,YAAY;AACvC,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB;AAAA,IACpB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,EACvB,IAAI;AAEJ,QAAM,iBAAiB,EAAC,sBAAsB,KAAI;AAClD,QAAM,cAAc;AACpB,QAAM,cAAc;AACpB,4CAAW,aAAa,mBAAmB,gBAAgB,CAAC,iBAAiB,CAAC;AAC9E,4CAAW,aAAa,mBAAmB,gBAAgB,CAAC,iBAAiB,CAAC;AAE9E,SACI,6BAAAC,QAAA,cAAC,SAAI,WAAW,EAAE,KACd,6BAAAA,QAAA,cAAC,SAAI,WAAW,EAAE,MAAM,KACpB,6BAAAA,QAAA,cAAC,SAAI,WAAW,EAAE,YAAY,KAC1B,6BAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,SAAS;AAAA,MACT,aAAa,GAAG,EAAE,MAAM,CAAC,KAAK,WAAW;AAAA,MACzC,MAAM;AAAA;AAAA,EACV,GACA,6BAAAA,QAAA,cAAC,UAAK,WAAW,EAAE,SAAS,KACvB,oBAAmB,KAAE,kBAC1B,GACA,6BAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,SAAS;AAAA,MACT,aAAa,GAAG,EAAE,MAAM,CAAC,KAAK,WAAW;AAAA,MACzC,MAAM,CAAC,SAAS,6BAAAA,QAAA,cAAC,2CAAY,WAAW,EAAE,YAAY,KAAO,KAAM;AAAA;AAAA,EACvE,CACJ,GACA,6BAAAA,QAAA,cAAC,UAAK,WAAW,EAAE,oBAAoB,KAClC,EAAU,oBAAoB,GAAE,OACrC,GACA,6BAAAA,QAAA,cAAC,UAAK,WAAW,EAAE,cAAc,KAAI,WAAY,CACrD,GACA,6BAAAA,QAAA,cAAC,SAAI,WAAW,EAAE,OAAO,KACrB,6BAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,MAAM,2BAAa;AAAA,MACnB,SAAS;AAAA,MACT,aAAa,EAAE,OAAO;AAAA,MACtB,MAAM;AAAA;AAAA,EACV,CACJ,CACJ;AAER,CAAC;AAED,UAAU,cAAc;AAExB,IAAO,oBAAQ;",
6
6
  "names": ["block", "React"]
7
7
  }
@@ -91,8 +91,8 @@ function useHighlightedDOMElements(highlightedHtml, wasChangedDOM, showSearchBar
91
91
  if (!showSearchBar || typeof document === "undefined") {
92
92
  return [];
93
93
  }
94
- const elements = document.querySelectorAll(`.${import_constants.CLASSNAME}`);
95
- cachedHighlightedDOMElements.current = [...elements];
94
+ const elements = Array.from(document.querySelectorAll(`.${import_constants.CLASSNAME}`));
95
+ cachedHighlightedDOMElements.current = elements;
96
96
  return cachedHighlightedDOMElements.current;
97
97
  }
98
98
  function useHighlightedHTMLString(html, searchWords, showSearchBar) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/SearchBar/hooks.ts"],
4
- "sourcesContent": ["import {SyntheticEvent, useCallback, useEffect, useRef, useState} from 'react';\n\nimport throttle from 'lodash/throttle';\n\nimport {CLASSNAME, CLASSNAME_SELECTED, HIGHLIGHT_OPTIONS} from './constants';\nimport {getHighlightedItemIndexInView, highlight, scrollToItem} from './utils';\n\ntype UseHighlightedSearchWords = {\n html: string;\n searchWords: string[];\n showSearchBar: boolean;\n onNotFoundWords?: () => void;\n onContentMutation?: () => void;\n onContentLoaded?: () => void;\n};\n\nexport function useHighlightedSearchWords({\n html,\n searchWords,\n showSearchBar,\n onContentMutation: _onContentMutation,\n onContentLoaded: _onContentLoaded,\n onNotFoundWords,\n}: UseHighlightedSearchWords) {\n const highlightedHtml = useHighlightedHTMLString(html, searchWords, showSearchBar);\n\n const {wasChangedDOM, onContentMutation, onContentLoaded} = useCallbackDOMChange({\n onContentMutation: _onContentMutation,\n onContentLoaded: _onContentLoaded,\n });\n\n const highlightedDOMElements = useHighlightedDOMElements(\n highlightedHtml,\n wasChangedDOM,\n showSearchBar,\n );\n\n const searchBarIsVisible = useSearchBarIsVisible({\n showSearchBar,\n searchWords,\n highlightedHtml,\n html,\n });\n\n useNoSearchWordsFoundEffect({highlightedDOMElements, showSearchBar, onNotFoundWords});\n\n return {\n highlightedHtml,\n highlightedDOMElements,\n searchBarIsVisible,\n wasChangedDOM,\n onContentMutation,\n onContentLoaded,\n };\n}\n\nfunction useHighlightedDOMElements(\n highlightedHtml: string,\n wasChangedDOM: boolean,\n showSearchBar: boolean,\n) {\n const cachedHighlightedDOMElements = useRef<Element[]>([] as Element[]);\n\n useEffect(() => {\n cachedHighlightedDOMElements.current = [];\n }, [highlightedHtml]);\n\n useEffect(() => {\n if (wasChangedDOM) {\n cachedHighlightedDOMElements.current = [];\n }\n }, [wasChangedDOM]);\n\n if (cachedHighlightedDOMElements.current.length) {\n return cachedHighlightedDOMElements.current;\n }\n\n if (!showSearchBar || typeof document === 'undefined') {\n return [];\n }\n\n const elements = document.querySelectorAll(`.${CLASSNAME}`);\n cachedHighlightedDOMElements.current = [...elements];\n\n return cachedHighlightedDOMElements.current;\n}\n\n/* Try wrapping the search words in an html string by span elements with a highlight class */\nfunction useHighlightedHTMLString(html: string, searchWords: string[], showSearchBar: boolean) {\n const [highlightedHtml, setHighlightedHtml] = useState(html);\n\n useEffect(() => {\n if (!searchWords.length || !showSearchBar) {\n setHighlightedHtml(html);\n return;\n }\n\n const highlightedResult = highlight({\n html,\n keywords: searchWords,\n options: HIGHLIGHT_OPTIONS,\n });\n\n if (highlightedResult.includes(CLASSNAME)) {\n setHighlightedHtml(highlightedResult);\n } else {\n setHighlightedHtml(html);\n }\n }, [html, searchWords, showSearchBar]);\n\n return highlightedHtml;\n}\n\ntype UseSearchBarIsVisible = {\n showSearchBar: boolean;\n searchWords: string[];\n html: string;\n highlightedHtml: string;\n};\n\nfunction useSearchBarIsVisible({\n showSearchBar,\n searchWords,\n highlightedHtml,\n html,\n}: UseSearchBarIsVisible) {\n const [searchBarIsVisible, setSearchBarIsVisible] = useState(showSearchBar);\n\n useEffect(() => {\n setSearchBarIsVisible(\n showSearchBar && Boolean(searchWords && searchWords.length) && highlightedHtml !== html,\n );\n }, [showSearchBar, searchWords, highlightedHtml, html]);\n\n return searchBarIsVisible;\n}\n\ntype UseCallbackDOMChange = {\n onContentMutation?: () => void;\n onContentLoaded?: () => void;\n};\n\nfunction useCallbackDOMChange({\n onContentMutation: _onContentMutation,\n onContentLoaded: _onContentLoaded,\n}: UseCallbackDOMChange) {\n const [wasChangedDOM, setWasChangedDOM] = useState(false);\n\n useEffect(() => {\n if (wasChangedDOM) {\n setWasChangedDOM(false);\n }\n }, [wasChangedDOM]);\n\n /* Callback for dangerouslySetInnerHTML when inserting content */\n const onContentMutation = useCallback(() => {\n if (_onContentMutation) {\n _onContentMutation();\n }\n\n setWasChangedDOM(true);\n }, [_onContentMutation]);\n\n /* Callback for loading resources after inserting content */\n const onContentLoaded = useCallback(() => {\n if (_onContentLoaded) {\n _onContentLoaded();\n }\n\n setWasChangedDOM(true);\n }, [_onContentLoaded]);\n\n return {\n wasChangedDOM,\n onContentMutation,\n onContentLoaded,\n };\n}\n\ntype UseNoSearchWordsFoundEffect = {\n showSearchBar: boolean;\n highlightedDOMElements: Element[];\n onNotFoundWords?: () => void;\n};\n\nexport function useNoSearchWordsFoundEffect({\n showSearchBar,\n highlightedDOMElements,\n onNotFoundWords,\n}: UseNoSearchWordsFoundEffect) {\n useEffect(() => {\n if (!onNotFoundWords) {\n return;\n }\n\n if (showSearchBar && !highlightedDOMElements.length) {\n onNotFoundWords();\n }\n }, [highlightedDOMElements, showSearchBar, onNotFoundWords]);\n}\n\ntype UseSearchBarNavigation = {\n highlightedDOMElements: Element[];\n stopSyncOnScroll: () => void;\n headerHeight: number;\n hash?: string;\n};\n\nexport function useSearchBarNavigation({\n highlightedDOMElements,\n stopSyncOnScroll,\n headerHeight,\n hash,\n}: UseSearchBarNavigation) {\n const [searchCurrentIndex, setSearchCurrentIndex] = useState(1);\n const [searchCountResults, setSearchCountResults] = useState(1);\n\n useEffect(() => {\n const startIndex =\n getHighlightedItemIndexInView({highlightedDOMElements, headerHeight, hash}) || 1;\n\n setSearchCurrentIndex(startIndex);\n setSearchCountResults(highlightedDOMElements.length || 1);\n }, [highlightedDOMElements, headerHeight, hash]);\n\n const onClickNextSearch = useCallback(\n (e: SyntheticEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n stopSyncOnScroll();\n\n if (!highlightedDOMElements.length) {\n return;\n }\n\n let newIndex = searchCurrentIndex + 1;\n if (newIndex > highlightedDOMElements.length) {\n newIndex = 1;\n }\n\n setSearchCurrentIndex(newIndex);\n },\n [highlightedDOMElements, searchCurrentIndex, setSearchCurrentIndex, stopSyncOnScroll],\n );\n\n const onClickPrevSearch = useCallback(\n (e: SyntheticEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n stopSyncOnScroll();\n\n if (!highlightedDOMElements.length) {\n return;\n }\n\n let newIndex = searchCurrentIndex - 1;\n if (newIndex < 1) {\n newIndex = highlightedDOMElements.length;\n }\n\n setSearchCurrentIndex(newIndex);\n },\n [highlightedDOMElements, searchCurrentIndex, setSearchCurrentIndex, stopSyncOnScroll],\n );\n\n return {\n searchCurrentIndex,\n setSearchCurrentIndex,\n searchCountResults,\n onClickPrevSearch,\n onClickNextSearch,\n };\n}\n\ntype UseHighlightCurrentWordEffect = {\n highlightedDOMElements: Element[];\n searchCurrentIndex: number;\n wasChangedDOM: boolean;\n syncOnScroll: boolean;\n hash?: string;\n};\n\nexport function useCurrentWordSelectionEffect({\n searchCurrentIndex,\n highlightedDOMElements,\n wasChangedDOM,\n syncOnScroll,\n hash,\n}: UseHighlightCurrentWordEffect) {\n useEffect(() => {\n try {\n if (!highlightedDOMElements || !highlightedDOMElements.length) {\n return;\n }\n\n for (let index = 0; index < highlightedDOMElements.length; index++) {\n const item = highlightedDOMElements[index];\n\n item.classList.remove(CLASSNAME_SELECTED);\n }\n\n const item = highlightedDOMElements[searchCurrentIndex - 1];\n item.classList.add(CLASSNAME_SELECTED);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n }, [highlightedDOMElements, searchCurrentIndex, wasChangedDOM]);\n\n useEffect(() => {\n if (syncOnScroll) {\n return;\n }\n\n scrollToItem(highlightedDOMElements[searchCurrentIndex - 1]);\n }, [wasChangedDOM, searchCurrentIndex, highlightedDOMElements, syncOnScroll, hash]);\n}\n\ntype UseCurrentWordSelectionSyncScrollEffect = {\n highlightedDOMElements: Element[];\n searchWords: string[];\n syncOnScroll: boolean;\n searchBarIsVisible: boolean;\n setSearchCurrentIndex: (index: number) => void;\n headerHeight: number;\n setSyncOnScroll: (flag: boolean) => void;\n};\n\nexport function useCurrentWordSelectionSyncScrollEffect({\n highlightedDOMElements,\n searchWords,\n syncOnScroll,\n searchBarIsVisible,\n setSearchCurrentIndex,\n headerHeight,\n setSyncOnScroll,\n}: UseCurrentWordSelectionSyncScrollEffect) {\n const scrollEndTimer = useRef<ReturnType<typeof setTimeout>>();\n\n const handleScroll = useCallback(() => {\n if (scrollEndTimer.current) {\n clearTimeout(scrollEndTimer.current);\n }\n\n scrollEndTimer.current = setTimeout(() => {\n setSyncOnScroll(true);\n }, 50);\n\n if (!syncOnScroll || !searchBarIsVisible) {\n return;\n }\n\n const highlightedItemIndexInView = getHighlightedItemIndexInView({\n highlightedDOMElements,\n headerHeight,\n });\n\n if (isNaN(highlightedItemIndexInView as number)) {\n return;\n }\n\n setSearchCurrentIndex(highlightedItemIndexInView as number);\n }, [\n setSyncOnScroll,\n searchBarIsVisible,\n syncOnScroll,\n setSearchCurrentIndex,\n highlightedDOMElements,\n headerHeight,\n ]);\n\n const handleScrollThrottled = throttle(handleScroll, 50);\n\n useEffect(() => {\n if (searchBarIsVisible) {\n window.addEventListener('scroll', handleScrollThrottled);\n }\n return () => {\n window.removeEventListener('scroll', handleScrollThrottled);\n };\n }, [searchBarIsVisible, searchWords, handleScrollThrottled]);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {SyntheticEvent, useCallback, useEffect, useRef, useState} from 'react';\nimport throttle from 'lodash/throttle';\n\nimport {CLASSNAME, CLASSNAME_SELECTED, HIGHLIGHT_OPTIONS} from './constants';\nimport {getHighlightedItemIndexInView, highlight, scrollToItem} from './utils';\n\ntype UseHighlightedSearchWords = {\n html: string;\n searchWords: string[];\n showSearchBar: boolean;\n onNotFoundWords?: () => void;\n onContentMutation?: () => void;\n onContentLoaded?: () => void;\n};\n\nexport function useHighlightedSearchWords({\n html,\n searchWords,\n showSearchBar,\n onContentMutation: _onContentMutation,\n onContentLoaded: _onContentLoaded,\n onNotFoundWords,\n}: UseHighlightedSearchWords) {\n const highlightedHtml = useHighlightedHTMLString(html, searchWords, showSearchBar);\n\n const {wasChangedDOM, onContentMutation, onContentLoaded} = useCallbackDOMChange({\n onContentMutation: _onContentMutation,\n onContentLoaded: _onContentLoaded,\n });\n\n const highlightedDOMElements = useHighlightedDOMElements(\n highlightedHtml,\n wasChangedDOM,\n showSearchBar,\n );\n\n const searchBarIsVisible = useSearchBarIsVisible({\n showSearchBar,\n searchWords,\n highlightedHtml,\n html,\n });\n\n useNoSearchWordsFoundEffect({highlightedDOMElements, showSearchBar, onNotFoundWords});\n\n return {\n highlightedHtml,\n highlightedDOMElements,\n searchBarIsVisible,\n wasChangedDOM,\n onContentMutation,\n onContentLoaded,\n };\n}\n\nfunction useHighlightedDOMElements(\n highlightedHtml: string,\n wasChangedDOM: boolean,\n showSearchBar: boolean,\n) {\n const cachedHighlightedDOMElements = useRef<Element[]>([] as Element[]);\n\n useEffect(() => {\n cachedHighlightedDOMElements.current = [];\n }, [highlightedHtml]);\n\n useEffect(() => {\n if (wasChangedDOM) {\n cachedHighlightedDOMElements.current = [];\n }\n }, [wasChangedDOM]);\n\n if (cachedHighlightedDOMElements.current.length) {\n return cachedHighlightedDOMElements.current;\n }\n\n if (!showSearchBar || typeof document === 'undefined') {\n return [];\n }\n\n const elements = Array.from(document.querySelectorAll(`.${CLASSNAME}`));\n cachedHighlightedDOMElements.current = elements;\n\n return cachedHighlightedDOMElements.current;\n}\n\n/* Try wrapping the search words in an html string by span elements with a highlight class */\nfunction useHighlightedHTMLString(html: string, searchWords: string[], showSearchBar: boolean) {\n const [highlightedHtml, setHighlightedHtml] = useState(html);\n\n useEffect(() => {\n if (!searchWords.length || !showSearchBar) {\n setHighlightedHtml(html);\n return;\n }\n\n const highlightedResult = highlight({\n html,\n keywords: searchWords,\n options: HIGHLIGHT_OPTIONS,\n });\n\n if (highlightedResult.includes(CLASSNAME)) {\n setHighlightedHtml(highlightedResult);\n } else {\n setHighlightedHtml(html);\n }\n }, [html, searchWords, showSearchBar]);\n\n return highlightedHtml;\n}\n\ntype UseSearchBarIsVisible = {\n showSearchBar: boolean;\n searchWords: string[];\n html: string;\n highlightedHtml: string;\n};\n\nfunction useSearchBarIsVisible({\n showSearchBar,\n searchWords,\n highlightedHtml,\n html,\n}: UseSearchBarIsVisible) {\n const [searchBarIsVisible, setSearchBarIsVisible] = useState(showSearchBar);\n\n useEffect(() => {\n setSearchBarIsVisible(\n showSearchBar && Boolean(searchWords && searchWords.length) && highlightedHtml !== html,\n );\n }, [showSearchBar, searchWords, highlightedHtml, html]);\n\n return searchBarIsVisible;\n}\n\ntype UseCallbackDOMChange = {\n onContentMutation?: () => void;\n onContentLoaded?: () => void;\n};\n\nfunction useCallbackDOMChange({\n onContentMutation: _onContentMutation,\n onContentLoaded: _onContentLoaded,\n}: UseCallbackDOMChange) {\n const [wasChangedDOM, setWasChangedDOM] = useState(false);\n\n useEffect(() => {\n if (wasChangedDOM) {\n setWasChangedDOM(false);\n }\n }, [wasChangedDOM]);\n\n /* Callback for dangerouslySetInnerHTML when inserting content */\n const onContentMutation = useCallback(() => {\n if (_onContentMutation) {\n _onContentMutation();\n }\n\n setWasChangedDOM(true);\n }, [_onContentMutation]);\n\n /* Callback for loading resources after inserting content */\n const onContentLoaded = useCallback(() => {\n if (_onContentLoaded) {\n _onContentLoaded();\n }\n\n setWasChangedDOM(true);\n }, [_onContentLoaded]);\n\n return {\n wasChangedDOM,\n onContentMutation,\n onContentLoaded,\n };\n}\n\ntype UseNoSearchWordsFoundEffect = {\n showSearchBar: boolean;\n highlightedDOMElements: Element[];\n onNotFoundWords?: () => void;\n};\n\nexport function useNoSearchWordsFoundEffect({\n showSearchBar,\n highlightedDOMElements,\n onNotFoundWords,\n}: UseNoSearchWordsFoundEffect) {\n useEffect(() => {\n if (!onNotFoundWords) {\n return;\n }\n\n if (showSearchBar && !highlightedDOMElements.length) {\n onNotFoundWords();\n }\n }, [highlightedDOMElements, showSearchBar, onNotFoundWords]);\n}\n\ntype UseSearchBarNavigation = {\n highlightedDOMElements: Element[];\n stopSyncOnScroll: () => void;\n headerHeight: number;\n hash?: string;\n};\n\nexport function useSearchBarNavigation({\n highlightedDOMElements,\n stopSyncOnScroll,\n headerHeight,\n hash,\n}: UseSearchBarNavigation) {\n const [searchCurrentIndex, setSearchCurrentIndex] = useState(1);\n const [searchCountResults, setSearchCountResults] = useState(1);\n\n useEffect(() => {\n const startIndex =\n getHighlightedItemIndexInView({highlightedDOMElements, headerHeight, hash}) || 1;\n\n setSearchCurrentIndex(startIndex);\n setSearchCountResults(highlightedDOMElements.length || 1);\n }, [highlightedDOMElements, headerHeight, hash]);\n\n const onClickNextSearch = useCallback(\n (e: SyntheticEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n stopSyncOnScroll();\n\n if (!highlightedDOMElements.length) {\n return;\n }\n\n let newIndex = searchCurrentIndex + 1;\n if (newIndex > highlightedDOMElements.length) {\n newIndex = 1;\n }\n\n setSearchCurrentIndex(newIndex);\n },\n [highlightedDOMElements, searchCurrentIndex, setSearchCurrentIndex, stopSyncOnScroll],\n );\n\n const onClickPrevSearch = useCallback(\n (e: SyntheticEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n stopSyncOnScroll();\n\n if (!highlightedDOMElements.length) {\n return;\n }\n\n let newIndex = searchCurrentIndex - 1;\n if (newIndex < 1) {\n newIndex = highlightedDOMElements.length;\n }\n\n setSearchCurrentIndex(newIndex);\n },\n [highlightedDOMElements, searchCurrentIndex, setSearchCurrentIndex, stopSyncOnScroll],\n );\n\n return {\n searchCurrentIndex,\n setSearchCurrentIndex,\n searchCountResults,\n onClickPrevSearch,\n onClickNextSearch,\n };\n}\n\ntype UseHighlightCurrentWordEffect = {\n highlightedDOMElements: Element[];\n searchCurrentIndex: number;\n wasChangedDOM: boolean;\n syncOnScroll: boolean;\n hash?: string;\n};\n\nexport function useCurrentWordSelectionEffect({\n searchCurrentIndex,\n highlightedDOMElements,\n wasChangedDOM,\n syncOnScroll,\n hash,\n}: UseHighlightCurrentWordEffect) {\n useEffect(() => {\n try {\n if (!highlightedDOMElements || !highlightedDOMElements.length) {\n return;\n }\n\n for (let index = 0; index < highlightedDOMElements.length; index++) {\n const item = highlightedDOMElements[index];\n\n item.classList.remove(CLASSNAME_SELECTED);\n }\n\n const item = highlightedDOMElements[searchCurrentIndex - 1];\n item.classList.add(CLASSNAME_SELECTED);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n }, [highlightedDOMElements, searchCurrentIndex, wasChangedDOM]);\n\n useEffect(() => {\n if (syncOnScroll) {\n return;\n }\n\n scrollToItem(highlightedDOMElements[searchCurrentIndex - 1]);\n }, [wasChangedDOM, searchCurrentIndex, highlightedDOMElements, syncOnScroll, hash]);\n}\n\ntype UseCurrentWordSelectionSyncScrollEffect = {\n highlightedDOMElements: Element[];\n searchWords: string[];\n syncOnScroll: boolean;\n searchBarIsVisible: boolean;\n setSearchCurrentIndex: (index: number) => void;\n headerHeight: number;\n setSyncOnScroll: (flag: boolean) => void;\n};\n\nexport function useCurrentWordSelectionSyncScrollEffect({\n highlightedDOMElements,\n searchWords,\n syncOnScroll,\n searchBarIsVisible,\n setSearchCurrentIndex,\n headerHeight,\n setSyncOnScroll,\n}: UseCurrentWordSelectionSyncScrollEffect) {\n const scrollEndTimer = useRef<ReturnType<typeof setTimeout>>();\n\n const handleScroll = useCallback(() => {\n if (scrollEndTimer.current) {\n clearTimeout(scrollEndTimer.current);\n }\n\n scrollEndTimer.current = setTimeout(() => {\n setSyncOnScroll(true);\n }, 50);\n\n if (!syncOnScroll || !searchBarIsVisible) {\n return;\n }\n\n const highlightedItemIndexInView = getHighlightedItemIndexInView({\n highlightedDOMElements,\n headerHeight,\n });\n\n if (isNaN(highlightedItemIndexInView as number)) {\n return;\n }\n\n setSearchCurrentIndex(highlightedItemIndexInView as number);\n }, [\n setSyncOnScroll,\n searchBarIsVisible,\n syncOnScroll,\n setSearchCurrentIndex,\n highlightedDOMElements,\n headerHeight,\n ]);\n\n const handleScrollThrottled = throttle(handleScroll, 50);\n\n useEffect(() => {\n if (searchBarIsVisible) {\n window.addEventListener('scroll', handleScrollThrottled);\n }\n return () => {\n window.removeEventListener('scroll', handleScrollThrottled);\n };\n }, [searchBarIsVisible, searchWords, handleScrollThrottled]);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["item", "throttle"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/components/SearchItem/home/runner/work/components/components/src/components/SearchItem/SearchItem.scss", "../../../../src/components/SearchItem/%3Cinput%20css%20_V7kxG%3E", "../../../../src/components/SearchItem/home/runner/work/components/components/src/styles/mixins.scss"],
3
+ "sources": ["../../../../src/components/SearchItem/home/runner/work/components/components/src/components/SearchItem/SearchItem.scss", "../../../../src/components/SearchItem/%3Cinput%20css%205sN1nO%3E", "../../../../src/components/SearchItem/home/runner/work/components/components/src/styles/mixins.scss"],
4
4
  "sourcesContent": ["@import '../../styles/variables';\n@import '../../styles/mixins';\n\n.SearchItem {\n &__link {\n cursor: pointer;\n color: inherit;\n\n &:hover,\n &:active {\n color: var(--g-color-text-link-hover);\n }\n }\n\n &__marks-wrapper {\n display: none;\n justify-content: flex-end;\n align-items: center;\n }\n\n &__marks {\n height: 16px;\n margin-top: 10px;\n }\n\n &__mark {\n margin-right: 20px;\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n &__item-wrapper:hover &__marks-wrapper {\n display: flex;\n }\n\n &__item-wrapper {\n margin-bottom: 20px;\n @include text-size(body-1);\n }\n\n &__item {\n display: block;\n overflow: hidden;\n text-decoration: none;\n\n cursor: pointer;\n text-overflow: ellipsis;\n border-radius: var(--g-focus-border-radius);\n @include focusable();\n\n &-title,\n &-description {\n display: block;\n overflow: hidden;\n\n text-overflow: ellipsis;\n }\n\n &-title {\n margin-bottom: 4px;\n }\n\n &-title,\n &-title &-search-token {\n @include link();\n color: var(--g-color-text-primary);\n @include text-size(subheader-3);\n }\n\n &-title:hover &-search-token {\n color: var(--g-color-text-link-hover);\n }\n\n &-description {\n display: inline-block;\n color: var(--g-color-text-secondary);\n\n em {\n font-weight: bolder;\n }\n\n &::after {\n content: '...';\n display: inline;\n }\n }\n &-description &-search-token {\n color: var(--g-color-text-primary);\n }\n }\n}\n", ".SearchItem__link {\n cursor: pointer;\n color: inherit;\n}\n.SearchItem__link:hover, .SearchItem__link:active {\n color: var(--g-color-text-link-hover);\n}\n.SearchItem__marks-wrapper {\n display: none;\n justify-content: flex-end;\n align-items: center;\n}\n.SearchItem__marks {\n height: 16px;\n margin-top: 10px;\n}\n.SearchItem__mark {\n margin-right: 20px;\n}\n.SearchItem__mark:last-child {\n margin-right: 0;\n}\n.SearchItem__item-wrapper:hover .SearchItem__marks-wrapper {\n display: flex;\n}\n.SearchItem__item-wrapper {\n margin-bottom: 20px;\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n}\n.SearchItem__item {\n display: block;\n overflow: hidden;\n text-decoration: none;\n cursor: pointer;\n text-overflow: ellipsis;\n border-radius: var(--g-focus-border-radius);\n}\n.SearchItem__item:focus {\n outline: 2px solid var(--g-color-line-focus);\n outline-offset: 0;\n}\n.SearchItem__item:focus:not(:focus-visible) {\n outline: 0;\n}\n.SearchItem__item-title, .SearchItem__item-description {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.SearchItem__item-title {\n margin-bottom: 4px;\n}\n.SearchItem__item-title, .SearchItem__item-title .SearchItem__item-search-token {\n outline: none;\n color: var(--g-color-text-link);\n text-decoration: none;\n cursor: pointer;\n border-radius: var(--g-focus-border-radius);\n color: var(--g-color-text-primary);\n font-size: var(--g-text-subheader-3-font-size);\n line-height: var(--g-text-subheader-3-line-height);\n}\n.utilityfocus .SearchItem__item-title:focus, .utilityfocus .SearchItem__item-title .SearchItem__item-search-token:focus {\n outline: 2px solid #ffdb4d;\n}\n.SearchItem__item-title:focus, .SearchItem__item-title .SearchItem__item-search-token:focus {\n box-shadow: 0 0 0 2px var(--g-color-line-focus);\n outline: 0;\n}\n.SearchItem__item-title:focus:not(:focus-visible), .SearchItem__item-title .SearchItem__item-search-token:focus:not(:focus-visible) {\n box-shadow: none;\n}\n.SearchItem__item-title:hover, .SearchItem__item-title:active, .SearchItem__item-title .SearchItem__item-search-token:hover, .SearchItem__item-title .SearchItem__item-search-token:active {\n color: var(--g-color-text-link-hover);\n}\n.SearchItem__item-title:hover .SearchItem__item-search-token {\n color: var(--g-color-text-link-hover);\n}\n.SearchItem__item-description {\n display: inline-block;\n color: var(--g-color-text-secondary);\n}\n.SearchItem__item-description em {\n font-weight: bolder;\n}\n.SearchItem__item-description::after {\n content: \"...\";\n display: inline;\n}\n.SearchItem__item-description .SearchItem__item-search-token {\n color: var(--g-color-text-primary);\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1NlYXJjaEl0ZW0iLCJzb3VyY2VzIjpbIlNlYXJjaEl0ZW0uc2NzcyIsIi4uLy4uL3N0eWxlcy9taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJSTtFQUNJO0VBQ0E7O0FBRUE7RUFFSTs7QUFJUjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTs7QUFFQTtFQUNJOztBQUlSO0VBQ0k7O0FBR0o7RUFDSTtFQ25DSjtFQUNBOztBRHNDQTtFQUNJO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTs7QUNoQkE7RUFDSTtFQUNBLGdCQUpjOztBQU1sQjtFQUNJOztBRGNKO0VBRUk7RUFDQTtFQUVBOztBQUdKO0VBQ0k7O0FBR0o7RUN4Q0o7RUFpQ0E7RUFDQTtFQUNBO0VBQ0E7RURPUTtFQ2hFUjtFQUNBOztBQXNCQTtFQUNJOztBQWdCQTtFQUNJO0VBQ0E7O0FBRUo7RUFDSTs7QUFjUjtFQUVJOztBRE9BO0VBQ0k7O0FBR0o7RUFDSTtFQUNBOztBQUVBO0VBQ0k7O0FBR0o7RUFDSTtFQUNBOztBQUdSO0VBQ0kiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi9zdHlsZXMvdmFyaWFibGVzJztcbkBpbXBvcnQgJy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuXG4uU2VhcmNoSXRlbSB7XG4gICAgJl9fbGluayB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG5cbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJjphY3RpdmUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX21hcmtzLXdyYXBwZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgICZfX21hcmtzIHtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIH1cblxuICAgICZfX21hcmsge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2l0ZW0td3JhcHBlcjpob3ZlciAmX19tYXJrcy13cmFwcGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG5cbiAgICAmX19pdGVtLXdyYXBwZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0xKTtcbiAgICB9XG5cbiAgICAmX19pdGVtIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1nLWZvY3VzLWJvcmRlci1yYWRpdXMpO1xuICAgICAgICBAaW5jbHVkZSBmb2N1c2FibGUoKTtcblxuICAgICAgICAmLXRpdGxlLFxuICAgICAgICAmLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIH1cblxuICAgICAgICAmLXRpdGxlIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgICAgfVxuXG4gICAgICAgICYtdGl0bGUsXG4gICAgICAgICYtdGl0bGUgJi1zZWFyY2gtdG9rZW4ge1xuICAgICAgICAgICAgQGluY2x1ZGUgbGluaygpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShzdWJoZWFkZXItMyk7XG4gICAgICAgIH1cblxuICAgICAgICAmLXRpdGxlOmhvdmVyICYtc2VhcmNoLXRva2VuIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtbGluay1ob3Zlcik7XG4gICAgICAgIH1cblxuICAgICAgICAmLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcblxuICAgICAgICAgICAgZW0ge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnLi4uJztcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJi1kZXNjcmlwdGlvbiAmLXNlYXJjaC10b2tlbiB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGltcG9ydCAnLi92YXJpYWJsZXMnO1xuXG5AbWl4aW4gdGV4dC1zaXplKCRuYW1lKSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtI3skbmFtZX0tZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LSN7JG5hbWV9LWxpbmUtaGVpZ2h0KTtcbn1cblxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUoKSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuQG1peGluIGZpeEFuY2hvclBvc2l0aW9uKCRvZmZzZXQ6IDBweCkge1xuICAgIHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7JGhlYWRlckhlaWdodH0pKTtcbiAgICBtYXJnaW4tdG9wOiBjYWxjKCN7JG9mZnNldH0gLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XG59XG5cbkBtaXhpbiByZXNldC1saW5rLXN0eWxlKCkge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuQG1peGluIGlzbGFuZHMtZm9jdXMoKSB7XG4gICAgb3V0bGluZTogbm9uZTtcblxuICAgIC51dGlsaXR5Zm9jdXMgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAjZmZkYjRkO1xuICAgIH1cbn1cblxuQG1peGluIGZvY3VzYWJsZSgkb2Zmc2V0OiAwLCAkbW9kZTogJ291dGxpbmUnKSB7XG4gICAgQGlmICRtb2RlID09ICdvdXRsaW5lJyB7XG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWctY29sb3ItbGluZS1mb2N1cyk7XG4gICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogJG9mZnNldDtcbiAgICAgICAgfVxuICAgICAgICAmOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkbW9kZSA9PSAnYm94LXNoYWRvdycge1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1nLWNvbG9yLWxpbmUtZm9jdXMpO1xuICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgfVxuICAgICAgICAmOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1peGluIGxpbmsoKSB7XG4gICAgQGluY2x1ZGUgaXNsYW5kcy1mb2N1cygpO1xuICAgIEBpbmNsdWRlIGZvY3VzYWJsZSgwLCAnYm94LXNoYWRvdycpO1xuXG4gICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1saW5rKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWctZm9jdXMtYm9yZGVyLXJhZGl1cyk7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcbiAgICB9XG59XG5cbkBtaXhpbiBoZWFkaW5nMSgpIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0zKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMik7XG4gICAgfVxufVxuXG5AbWl4aW4gaGVhZGluZzIoKSB7XG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMSk7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuQG1peGluIGhlYWRpbmczKCkge1xuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMik7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuQG1peGluIGhlYWRpbmc0KCkge1xuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMSk7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuQG1peGluIGhlYWRpbmc1KCkge1xuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbkBtaXhpbiBoZWFkaW5nNigpIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0zKTtcbiAgICBmb250LXdlaWdodDogNDAwO1xufVxuXG5AbWl4aW4gY29udHJpYnV0b3JzLXRleHQoKSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xufVxuXG5AbWl4aW4gdGV4dC1ib2R5LTEoKSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LTEtbGluZS1oZWlnaHQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1nLXRleHQtYm9keS1mb250LXdlaWdodCk7XG59XG5cbkBtaXhpbiBkZXNrdG9wLW9ubHkoKSB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBkZXNrdG9wLXRhYmxldC1vbmx5KCkge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykgLSAxKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gbW9iaWxlLXRhYmxldC1vbmx5KCkge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBtb2JpbGUtb25seSgpIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdzbScpKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuIl19 */", "@import './variables';\n\n@mixin text-size($name) {\n font-size: var(--g-text-#{$name}-font-size);\n line-height: var(--g-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n padding-top: calc(var(--dc-header-height, #{$headerHeight}));\n margin-top: calc(#{$offset} - var(--dc-header-height, #{$headerHeight}));\n}\n\n@mixin reset-link-style() {\n color: inherit;\n text-decoration: none;\n}\n\n@mixin islands-focus() {\n outline: none;\n\n .utilityfocus &:focus {\n outline: 2px solid #ffdb4d;\n }\n}\n\n@mixin focusable($offset: 0, $mode: 'outline') {\n @if $mode == 'outline' {\n &:focus {\n outline: 2px solid var(--g-color-line-focus);\n outline-offset: $offset;\n }\n &:focus:not(:focus-visible) {\n outline: 0;\n }\n }\n\n @if $mode == 'box-shadow' {\n &:focus {\n box-shadow: 0 0 0 2px var(--g-color-line-focus);\n outline: 0;\n }\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n }\n}\n\n@mixin link() {\n @include islands-focus();\n @include focusable(0, 'box-shadow');\n\n color: var(--g-color-text-link);\n text-decoration: none;\n cursor: pointer;\n border-radius: var(--g-focus-border-radius);\n\n &:hover,\n &:active {\n color: var(--g-color-text-link-hover);\n }\n}\n\n@mixin heading1() {\n @include text-size(display-3);\n font-weight: 500;\n\n @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n @include text-size(display-2);\n }\n}\n\n@mixin heading2() {\n @include text-size(display-1);\n font-weight: 500;\n}\n\n@mixin heading3() {\n @include text-size(header-2);\n font-weight: 500;\n}\n\n@mixin heading4() {\n @include text-size(header-1);\n font-weight: 500;\n}\n\n@mixin heading5() {\n @include text-size(body-3);\n font-weight: 500;\n}\n\n@mixin heading6() {\n @include text-size(body-3);\n font-weight: 400;\n}\n\n@mixin contributors-text() {\n font-size: 13px;\n font-weight: 400;\n margin-right: 5px;\n align-self: center;\n}\n\n@mixin text-body-1() {\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n font-weight: var(--g-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n display: none;\n }\n}\n\n@mixin desktop-tablet-only() {\n @media (max-width: map-get($screenBreakpoints, 'sm') - 1) {\n display: none;\n }\n}\n\n@mixin mobile-tablet-only() {\n @media (min-width: map-get($screenBreakpoints, 'md')) {\n display: none;\n }\n}\n\n@mixin mobile-only() {\n @media (min-width: map-get($screenBreakpoints, 'sm')) {\n display: none;\n }\n}\n"],
5
5
  "mappings": ";AAII,CAAA;AACI,UAAA;AACA,SAAA;ACHR;ADKQ,CAJJ,gBAII;AAAA,CAJJ,gBAII;AAEI,SAAA,IAAA;ACJZ;ADQI,CAAA;AACI,WAAA;AACA,mBAAA;AACA,eAAA;ACNR;ADSI,CAAA;AACI,UAAA;AACA,cAAA;ACPR;ADUI,CAAA;AACI,gBAAA;ACRR;ADUQ,CAHJ,gBAGI;AACI,gBAAA;ACRZ;ADYI,CAAA,wBAAA,OAAA,CAnBA;AAoBI,WAAA;ACVR;ADaI,CAJA;AAKI,iBAAA;AEnCJ,aAAA,IAAA;AACA,eAAA,IAAA;ADyBJ;ADaI,CAAA;AACI,WAAA;AACA,YAAA;AACA,2BAAA;AAAA,mBAAA;AAEA,UAAA;AACA,iBAAA;AACA,iBAAA,IAAA;ACZR;ACJQ,CFSJ,gBETI;AACI,WAAA,IAAA,MAAA,IAAA;AACA,kBAAA;ADMZ;ACJQ,CFKJ,gBELI,MAAA,KAAA;AACI,WAAA;ADMZ;ADQQ,CAAA;AAAA,CAAA;AAEI,WAAA;AACA,YAAA;AAEA,iBAAA;ACRZ;ADWQ,CARA;AASI,iBAAA;ACTZ;ADYQ,CAZA;AAYA,CAZA,uBAYA,CAAA;AExCJ,WAAA;AAiCA,SAAA,IAAA;AACA,2BAAA;AAAA,mBAAA;AACA,UAAA;AACA,iBAAA,IAAA;AFOQ,SAAA,IAAA;AEhER,aAAA,IAAA;AACA,eAAA,IAAA;AD0DJ;ACpCI,CAAA,aAAA,CF0BI,sBE1BJ;AAAA,CAAA,aAAA,CF0BI,uBE1BJ,CFsCI,6BEtCJ;AACI,WAAA,IAAA,MAAA;ADsCR;ACtBQ,CFSA,sBETA;AAAA,CFSA,uBETA,CFqBA,6BErBA;AACI,cAAA,EAAA,EAAA,EAAA,IAAA,IAAA;AACA,WAAA;ADwBZ;ACtBQ,CFKA,sBELA,MAAA,KAAA;AAAA,CFKA,uBELA,CFiBA,6BEjBA,MAAA,KAAA;AACI,cAAA;ADwBZ;ACVI,CFVI,sBEUJ;AAAA,CFVI,sBEUJ;AAAA,CFVI,uBEUJ,CFEI,6BEFJ;AAAA,CFVI,uBEUJ,CFEI,6BEFJ;AAEI,SAAA,IAAA;ADWR;ADJQ,CAnBA,sBAmBA,OAAA,CAPA;AAQI,SAAA,IAAA;ACMZ;ADHQ,CAvBA;AAwBI,WAAA;AACA,SAAA,IAAA;ACKZ;ADHY,CA3BJ,6BA2BI;AACI,eAAA;ACKhB;ADFY,CA/BJ,4BA+BI;AACI,WAAA;AACA,WAAA;ACIhB;ADDQ,CApCA,6BAoCA,CAxBA;AAyBI,SAAA,IAAA;ACGZ;",
6
6
  "names": []
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/SearchItem/SearchItem.tsx"],
4
- "sourcesContent": ["import React, {memo, useState} from 'react';\n\nimport {Button} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport {useTranslation} from '../../hooks';\nimport {HTML} from '../HTML';\n\nimport './SearchItem.scss';\n\nconst b = block('SearchItem');\n\nexport interface ISearchItem {\n url: string;\n title: string;\n description?: string;\n}\n\nexport interface SearchOnClickProps {\n itemOnClick?: (item: ISearchItem) => void;\n irrelevantOnClick?: (item: ISearchItem) => void;\n relevantOnClick?: (item: ISearchItem) => void;\n}\n\nexport interface SearchItemProps {\n item: ISearchItem;\n className?: string;\n}\n\ntype SearchPageInnerProps = SearchItemProps & SearchOnClickProps;\n\nconst SearchItem = memo<SearchPageInnerProps>(\n ({item, className, itemOnClick, irrelevantOnClick, relevantOnClick}) => {\n const {t} = useTranslation('search');\n const {url, title, description} = item;\n\n const [markedItem, setMarkedItem] = useState(false);\n\n const renderItem = () => {\n return (\n <div className={b('item-wrapper')}>\n <a\n className={b('item')}\n href={url}\n onClick={() => (itemOnClick ? itemOnClick(item) : undefined)}\n >\n <HTML className={b('item-title')}>{title}</HTML>\n <HTML className={b('item-description')}>{description}</HTML>\n </a>\n {irrelevantOnClick && relevantOnClick && (\n <div className={b('marks')}>\n <div className={b('marks-wrapper')}>\n {markedItem ? (\n <span className={b('marks-text')}>\n {t<string>('search_mark-result-text')}\n </span>\n ) : (\n <div>\n <Button\n size=\"s\"\n className={b('mark')}\n onClick={() => {\n setMarkedItem(true);\n if (irrelevantOnClick) {\n irrelevantOnClick(item);\n }\n }}\n >\n {t<string>('search_mark_dislike')}\n </Button>\n <Button\n size=\"s\"\n className={b('mark')}\n onClick={() => {\n setMarkedItem(true);\n if (relevantOnClick) {\n relevantOnClick(item);\n }\n }}\n >\n {t<string>('search_mark_like')}\n </Button>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n };\n\n return <div className={b(null, className)}>{renderItem()}</div>;\n },\n);\n\nSearchItem.displayName = 'SearchItem';\n\nexport default SearchItem;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAoC;AAEpC,mBAAqB;AACrB,yBAAkB;AAElB,mBAA6B;AAC7B,kBAAmB;AAEnB,wBAAO;AAEP,IAAM,QAAI,mBAAAA,SAAM,YAAY;AAqB5B,IAAM,iBAAa;AAAA,EACf,CAAC,EAAC,MAAM,WAAW,aAAa,mBAAmB,gBAAe,MAAM;AACpE,UAAM,EAAC,EAAC,QAAI,6BAAe,QAAQ;AACnC,UAAM,EAAC,KAAK,OAAO,YAAW,IAAI;AAElC,UAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,KAAK;AAElD,UAAM,aAAa,MAAM;AACrB,aACI,6BAAAC,QAAA,cAAC,SAAI,WAAW,EAAE,cAAc,KAC5B,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACG,WAAW,EAAE,MAAM;AAAA,UACnB,MAAM;AAAA,UACN,SAAS,MAAO,cAAc,YAAY,IAAI,IAAI;AAAA;AAAA,QAElD,6BAAAA,QAAA,cAAC,oBAAK,WAAW,EAAE,YAAY,KAAI,KAAM;AAAA,QACzC,6BAAAA,QAAA,cAAC,oBAAK,WAAW,EAAE,kBAAkB,KAAI,WAAY;AAAA,MACzD,GACC,qBAAqB,mBAClB,6BAAAA,QAAA,cAAC,SAAI,WAAW,EAAE,OAAO,KACrB,6BAAAA,QAAA,cAAC,SAAI,WAAW,EAAE,eAAe,KAC5B,aACG,6BAAAA,QAAA,cAAC,UAAK,WAAW,EAAE,YAAY,KAC1B,EAAU,yBAAyB,CACxC,IAEA,6BAAAA,QAAA,cAAC,aACG,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACG,MAAK;AAAA,UACL,WAAW,EAAE,MAAM;AAAA,UACnB,SAAS,MAAM;AACX,0BAAc,IAAI;AAClB,gBAAI,mBAAmB;AACnB,gCAAkB,IAAI;AAAA,YAC1B;AAAA,UACJ;AAAA;AAAA,QAEC,EAAU,qBAAqB;AAAA,MACpC,GACA,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACG,MAAK;AAAA,UACL,WAAW,EAAE,MAAM;AAAA,UACnB,SAAS,MAAM;AACX,0BAAc,IAAI;AAClB,gBAAI,iBAAiB;AACjB,8BAAgB,IAAI;AAAA,YACxB;AAAA,UACJ;AAAA;AAAA,QAEC,EAAU,kBAAkB;AAAA,MACjC,CACJ,CAER,CACJ,CAER;AAAA,IAER;AAEA,WAAO,6BAAAA,QAAA,cAAC,SAAI,WAAW,EAAE,MAAM,SAAS,KAAI,WAAW,CAAE;AAAA,EAC7D;AACJ;AAEA,WAAW,cAAc;AAEzB,IAAO,qBAAQ;",
4
+ "sourcesContent": ["import React, {memo, useState} from 'react';\nimport {Button} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport {useTranslation} from '../../hooks';\nimport {HTML} from '../HTML';\n\nimport './SearchItem.scss';\n\nconst b = block('SearchItem');\n\nexport interface ISearchItem {\n url: string;\n title: string;\n description?: string;\n}\n\nexport interface SearchOnClickProps {\n itemOnClick?: (item: ISearchItem) => void;\n irrelevantOnClick?: (item: ISearchItem) => void;\n relevantOnClick?: (item: ISearchItem) => void;\n}\n\nexport interface SearchItemProps {\n item: ISearchItem;\n className?: string;\n}\n\ntype SearchPageInnerProps = SearchItemProps & SearchOnClickProps;\n\nconst SearchItem = memo<SearchPageInnerProps>(\n ({item, className, itemOnClick, irrelevantOnClick, relevantOnClick}) => {\n const {t} = useTranslation('search');\n const {url, title, description} = item;\n\n const [markedItem, setMarkedItem] = useState(false);\n\n const renderItem = () => {\n return (\n <div className={b('item-wrapper')}>\n <a\n className={b('item')}\n href={url}\n onClick={() => (itemOnClick ? itemOnClick(item) : undefined)}\n >\n <HTML className={b('item-title')}>{title}</HTML>\n <HTML className={b('item-description')}>{description}</HTML>\n </a>\n {irrelevantOnClick && relevantOnClick && (\n <div className={b('marks')}>\n <div className={b('marks-wrapper')}>\n {markedItem ? (\n <span className={b('marks-text')}>\n {t<string>('search_mark-result-text')}\n </span>\n ) : (\n <div>\n <Button\n size=\"s\"\n className={b('mark')}\n onClick={() => {\n setMarkedItem(true);\n if (irrelevantOnClick) {\n irrelevantOnClick(item);\n }\n }}\n >\n {t<string>('search_mark_dislike')}\n </Button>\n <Button\n size=\"s\"\n className={b('mark')}\n onClick={() => {\n setMarkedItem(true);\n if (relevantOnClick) {\n relevantOnClick(item);\n }\n }}\n >\n {t<string>('search_mark_like')}\n </Button>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n };\n\n return <div className={b(null, className)}>{renderItem()}</div>;\n },\n);\n\nSearchItem.displayName = 'SearchItem';\n\nexport default SearchItem;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAoC;AACpC,mBAAqB;AACrB,yBAAkB;AAElB,mBAA6B;AAC7B,kBAAmB;AAEnB,wBAAO;AAEP,IAAM,QAAI,mBAAAA,SAAM,YAAY;AAqB5B,IAAM,iBAAa;AAAA,EACf,CAAC,EAAC,MAAM,WAAW,aAAa,mBAAmB,gBAAe,MAAM;AACpE,UAAM,EAAC,EAAC,QAAI,6BAAe,QAAQ;AACnC,UAAM,EAAC,KAAK,OAAO,YAAW,IAAI;AAElC,UAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,KAAK;AAElD,UAAM,aAAa,MAAM;AACrB,aACI,6BAAAC,QAAA,cAAC,SAAI,WAAW,EAAE,cAAc,KAC5B,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACG,WAAW,EAAE,MAAM;AAAA,UACnB,MAAM;AAAA,UACN,SAAS,MAAO,cAAc,YAAY,IAAI,IAAI;AAAA;AAAA,QAElD,6BAAAA,QAAA,cAAC,oBAAK,WAAW,EAAE,YAAY,KAAI,KAAM;AAAA,QACzC,6BAAAA,QAAA,cAAC,oBAAK,WAAW,EAAE,kBAAkB,KAAI,WAAY;AAAA,MACzD,GACC,qBAAqB,mBAClB,6BAAAA,QAAA,cAAC,SAAI,WAAW,EAAE,OAAO,KACrB,6BAAAA,QAAA,cAAC,SAAI,WAAW,EAAE,eAAe,KAC5B,aACG,6BAAAA,QAAA,cAAC,UAAK,WAAW,EAAE,YAAY,KAC1B,EAAU,yBAAyB,CACxC,IAEA,6BAAAA,QAAA,cAAC,aACG,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACG,MAAK;AAAA,UACL,WAAW,EAAE,MAAM;AAAA,UACnB,SAAS,MAAM;AACX,0BAAc,IAAI;AAClB,gBAAI,mBAAmB;AACnB,gCAAkB,IAAI;AAAA,YAC1B;AAAA,UACJ;AAAA;AAAA,QAEC,EAAU,qBAAqB;AAAA,MACpC,GACA,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACG,MAAK;AAAA,UACL,WAAW,EAAE,MAAM;AAAA,UACnB,SAAS,MAAM;AACX,0BAAc,IAAI;AAClB,gBAAI,iBAAiB;AACjB,8BAAgB,IAAI;AAAA,YACxB;AAAA,UACJ;AAAA;AAAA,QAEC,EAAU,kBAAkB;AAAA,MACjC,CACJ,CAER,CACJ,CAER;AAAA,IAER;AAEA,WAAO,6BAAAA,QAAA,cAAC,SAAI,WAAW,EAAE,MAAM,SAAS,KAAI,WAAW,CAAE;AAAA,EAC7D;AACJ;AAEA,WAAW,cAAc;AAEzB,IAAO,qBAAQ;",
6
6
  "names": ["block", "React"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/components/SearchPage/home/runner/work/components/components/src/components/SearchPage/SearchPage.scss", "../../../../src/components/SearchPage/%3Cinput%20css%208a2XX0%3E"],
3
+ "sources": ["../../../../src/components/SearchPage/home/runner/work/components/components/src/components/SearchPage/SearchPage.scss", "../../../../src/components/SearchPage/%3Cinput%20css%20OECuGT%3E"],
4
4
  "sourcesContent": ["@import '../../styles/variables';\n@import '../../styles/mixins';\n\n.dc-search-page {\n margin-top: 26px;\n display: flex;\n justify-content: center;\n\n &__layout {\n max-width: $centerBlockMaxWidth;\n width: 100%;\n }\n\n &__search-field-wrapper {\n display: flex;\n align-items: center;\n }\n\n &__search-button {\n margin-left: 10px;\n }\n\n &__search {\n &-field,\n &-item {\n margin-bottom: 36px;\n }\n }\n\n &__subtitle {\n margin-bottom: 18px;\n }\n\n &__paginator {\n padding: 10px 0;\n border-top: 1px solid var(--g-color-line-generic);\n }\n\n @media (max-width: map-get($screenBreakpoints, 'md')) {\n margin-top: 16px;\n\n &__layout {\n padding: 0 12px;\n }\n\n &__search {\n &-field {\n margin-bottom: 24px;\n }\n\n &-item {\n margin-bottom: 40px;\n }\n }\n }\n}\n", ".dc-search-page {\n margin-top: 26px;\n display: flex;\n justify-content: center;\n}\n.dc-search-page__layout {\n max-width: 736px;\n width: 100%;\n}\n.dc-search-page__search-field-wrapper {\n display: flex;\n align-items: center;\n}\n.dc-search-page__search-button {\n margin-left: 10px;\n}\n.dc-search-page__search-field, .dc-search-page__search-item {\n margin-bottom: 36px;\n}\n.dc-search-page__subtitle {\n margin-bottom: 18px;\n}\n.dc-search-page__paginator {\n padding: 10px 0;\n border-top: 1px solid var(--g-color-line-generic);\n}\n@media (max-width: 769px) {\n .dc-search-page {\n margin-top: 16px;\n }\n .dc-search-page__layout {\n padding: 0 12px;\n }\n .dc-search-page__search-field {\n margin-bottom: 24px;\n }\n .dc-search-page__search-item {\n margin-bottom: 40px;\n }\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1NlYXJjaFBhZ2UiLCJzb3VyY2VzIjpbIlNlYXJjaFBhZ2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7O0FBR0o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7O0FBSUE7RUFFSTs7QUFJUjtFQUNJOztBQUdKO0VBQ0k7RUFDQTs7QUFHSjtFQW5DSjtJQW9DUTs7RUFFQTtJQUNJOztFQUlBO0lBQ0k7O0VBR0o7SUFDSSIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uL3N0eWxlcy92YXJpYWJsZXMnO1xuQGltcG9ydCAnLi4vLi4vc3R5bGVzL21peGlucyc7XG5cbi5kYy1zZWFyY2gtcGFnZSB7XG4gICAgbWFyZ2luLXRvcDogMjZweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgJl9fbGF5b3V0IHtcbiAgICAgICAgbWF4LXdpZHRoOiAkY2VudGVyQmxvY2tNYXhXaWR0aDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgJl9fc2VhcmNoLWZpZWxkLXdyYXBwZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgICZfX3NlYXJjaC1idXR0b24ge1xuICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICB9XG5cbiAgICAmX19zZWFyY2gge1xuICAgICAgICAmLWZpZWxkLFxuICAgICAgICAmLWl0ZW0ge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzZweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3N1YnRpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMThweDtcbiAgICB9XG5cbiAgICAmX19wYWdpbmF0b3Ige1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1nLWNvbG9yLWxpbmUtZ2VuZXJpYyk7XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSkge1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuXG4gICAgICAgICZfX2xheW91dCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDEycHg7XG4gICAgICAgIH1cblxuICAgICAgICAmX19zZWFyY2gge1xuICAgICAgICAgICAgJi1maWVsZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi1pdGVtIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19 */"],
5
5
  "mappings": ";AAGA,CAAA;AACI,cAAA;AACA,WAAA;AACA,mBAAA;ACFJ;ADII,CAAA;AACI,aAAA;AACA,SAAA;ACFR;ADKI,CAAA;AACI,WAAA;AACA,eAAA;ACHR;ADMI,CAAA;AACI,eAAA;ACJR;ADQQ,CAAA;AAAA,CAAA;AAEI,iBAAA;ACPZ;ADWI,CAAA;AACI,iBAAA;ACTR;ADYI,CAAA;AACI,WAAA,KAAA;AACA,cAAA,IAAA,MAAA,IAAA;ACVR;ADaI,OAAA,CAAA,SAAA,EAAA;AAnCJ,GAAA;AAoCQ,gBAAA;ACVN;ADYM,GAjCJ;AAkCQ,aAAA,EAAA;ACVV;ADcU,GAvBJ;AAwBQ,mBAAA;ACZd;ADeU,GA3BJ;AA4BQ,mBAAA;ACbd;AACF;",
6
6
  "names": []
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/SearchPage/SearchPage.tsx"],
4
- "sourcesContent": ["import React, {useRef, useState} from 'react';\n\nimport {Button, Loader, TextInput} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport {useTranslation} from '../../hooks';\nimport {Paginator, PaginatorProps} from '../Paginator';\nimport {ISearchItem, SearchItem, SearchOnClickProps} from '../SearchItem';\n\nimport './SearchPage.scss';\n\nconst b = block('dc-search-page');\n\ninterface Loading {\n loading?: boolean;\n}\n\ninterface InputProps {\n query: string;\n onSubmit: (query: string) => void;\n}\n\ntype RenderInput = {\n inputRef: React.MutableRefObject<null>;\n onQueryUpdate: (arg: string) => void;\n} & InputProps;\n\ntype RenderNoContent = Loading;\n\ninterface SearchPageProps extends Loading {\n items: ISearchItem[];\n page: number;\n isMobile?: boolean;\n loading?: boolean;\n}\n\ntype RenderFoundProps = SearchPageProps & SearchOnClickProps & PaginatorProps;\n\ntype SearchPageInnerProps = SearchPageProps & SearchOnClickProps & InputProps & PaginatorProps;\n\nconst FoundBlock: React.FC<RenderFoundProps> = ({\n items,\n itemOnClick,\n irrelevantOnClick,\n relevantOnClick,\n page,\n totalItems = 0,\n maxPages,\n onPageChange,\n itemsPerPage,\n isMobile,\n}) => {\n const {t} = useTranslation('search');\n\n return (\n <div className={b('search-result')}>\n <h3 className={b('subtitle')}>{t<string>('search_request-query')}</h3>\n <div className={b('search-list')}>\n {items.map((item: ISearchItem) => (\n <SearchItem\n key={item.url}\n item={item}\n className={b('search-item')}\n itemOnClick={itemOnClick}\n irrelevantOnClick={irrelevantOnClick}\n relevantOnClick={relevantOnClick}\n />\n ))}\n </div>\n <div className={b('paginator')}>\n <Paginator\n page={page}\n totalItems={totalItems}\n maxPages={maxPages}\n onPageChange={onPageChange}\n itemsPerPage={itemsPerPage}\n isMobile={isMobile}\n />\n </div>\n </div>\n );\n};\n\nconst WithoutContentBlock: React.FC<RenderNoContent> = ({loading}) => {\n const {t} = useTranslation('search');\n\n return loading ? (\n <Loader />\n ) : (\n <div className={b('search-empty')}>\n <h3>{t<string>('search_not-found-title')}</h3>\n <div>{t<string>('search_not-found-text')}</div>\n </div>\n );\n};\n\nconst InputBlock: React.FC<RenderInput> = ({query, onQueryUpdate, onSubmit, inputRef}) => {\n const {t} = useTranslation('search');\n\n return (\n <div className={b('search-field')}>\n <form\n onSubmit={(event) => {\n event.preventDefault();\n onSubmit(query);\n }}\n >\n <div className={b('search-field-wrapper')}>\n <TextInput\n controlRef={inputRef}\n size=\"l\"\n value={query}\n autoFocus={true}\n placeholder={t('search_placeholder')}\n onUpdate={onQueryUpdate}\n hasClear={true}\n />\n <Button\n className={b('search-button')}\n view=\"action\"\n size=\"l\"\n onClick={(event) => {\n event.preventDefault();\n onSubmit(query);\n }}\n >\n {t<string>('search_action')}\n </Button>\n </div>\n </form>\n </div>\n );\n};\n\nconst SearchPage = ({\n query = '',\n items = [],\n page = 1,\n isMobile,\n totalItems,\n maxPages,\n itemsPerPage,\n onPageChange,\n onSubmit,\n itemOnClick,\n irrelevantOnClick,\n relevantOnClick,\n loading,\n}: SearchPageInnerProps) => {\n const inputRef = useRef(null);\n const [currentQuery, setCurrentQuery] = useState(query);\n\n return (\n <div className={b('layout')}>\n <div className={b('search-input')}>\n <InputBlock\n {...{\n query: currentQuery,\n onQueryUpdate: setCurrentQuery,\n onSubmit,\n inputRef,\n }}\n />\n </div>\n <div className={b('content')}>\n {items?.length && query ? (\n <FoundBlock\n {...{\n items,\n page,\n isMobile,\n totalItems,\n maxPages,\n itemsPerPage,\n itemOnClick,\n onPageChange,\n irrelevantOnClick,\n relevantOnClick,\n }}\n />\n ) : (\n <WithoutContentBlock loading={loading} />\n )}\n </div>\n </div>\n );\n};\n\nexport default SearchPage;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import React, {useRef, useState} from 'react';\nimport {Button, Loader, TextInput} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport {useTranslation} from '../../hooks';\nimport {Paginator, PaginatorProps} from '../Paginator';\nimport {ISearchItem, SearchItem, SearchOnClickProps} from '../SearchItem';\n\nimport './SearchPage.scss';\n\nconst b = block('dc-search-page');\n\ninterface Loading {\n loading?: boolean;\n}\n\ninterface InputProps {\n query: string;\n onSubmit: (query: string) => void;\n}\n\ntype RenderInput = {\n inputRef: React.MutableRefObject<null>;\n onQueryUpdate: (arg: string) => void;\n} & InputProps;\n\ntype RenderNoContent = Loading;\n\ninterface SearchPageProps extends Loading {\n items: ISearchItem[];\n page: number;\n isMobile?: boolean;\n loading?: boolean;\n}\n\ntype RenderFoundProps = SearchPageProps & SearchOnClickProps & PaginatorProps;\n\ntype SearchPageInnerProps = SearchPageProps & SearchOnClickProps & InputProps & PaginatorProps;\n\nconst FoundBlock: React.FC<RenderFoundProps> = ({\n items,\n itemOnClick,\n irrelevantOnClick,\n relevantOnClick,\n page,\n totalItems = 0,\n maxPages,\n onPageChange,\n itemsPerPage,\n isMobile,\n}) => {\n const {t} = useTranslation('search');\n\n return (\n <div className={b('search-result')}>\n <h3 className={b('subtitle')}>{t<string>('search_request-query')}</h3>\n <div className={b('search-list')}>\n {items.map((item: ISearchItem) => (\n <SearchItem\n key={item.url}\n item={item}\n className={b('search-item')}\n itemOnClick={itemOnClick}\n irrelevantOnClick={irrelevantOnClick}\n relevantOnClick={relevantOnClick}\n />\n ))}\n </div>\n <div className={b('paginator')}>\n <Paginator\n page={page}\n totalItems={totalItems}\n maxPages={maxPages}\n onPageChange={onPageChange}\n itemsPerPage={itemsPerPage}\n isMobile={isMobile}\n />\n </div>\n </div>\n );\n};\n\nconst WithoutContentBlock: React.FC<RenderNoContent> = ({loading}) => {\n const {t} = useTranslation('search');\n\n return loading ? (\n <Loader />\n ) : (\n <div className={b('search-empty')}>\n <h3>{t<string>('search_not-found-title')}</h3>\n <div>{t<string>('search_not-found-text')}</div>\n </div>\n );\n};\n\nconst InputBlock: React.FC<RenderInput> = ({query, onQueryUpdate, onSubmit, inputRef}) => {\n const {t} = useTranslation('search');\n\n return (\n <div className={b('search-field')}>\n <form\n onSubmit={(event) => {\n event.preventDefault();\n onSubmit(query);\n }}\n >\n <div className={b('search-field-wrapper')}>\n <TextInput\n controlRef={inputRef}\n size=\"l\"\n value={query}\n autoFocus={true}\n placeholder={t('search_placeholder')}\n onUpdate={onQueryUpdate}\n hasClear={true}\n />\n <Button\n className={b('search-button')}\n view=\"action\"\n size=\"l\"\n onClick={(event) => {\n event.preventDefault();\n onSubmit(query);\n }}\n >\n {t<string>('search_action')}\n </Button>\n </div>\n </form>\n </div>\n );\n};\n\nconst SearchPage = ({\n query = '',\n items = [],\n page = 1,\n isMobile,\n totalItems,\n maxPages,\n itemsPerPage,\n onPageChange,\n onSubmit,\n itemOnClick,\n irrelevantOnClick,\n relevantOnClick,\n loading,\n}: SearchPageInnerProps) => {\n const inputRef = useRef(null);\n const [currentQuery, setCurrentQuery] = useState(query);\n\n return (\n <div className={b('layout')}>\n <div className={b('search-input')}>\n <InputBlock\n {...{\n query: currentQuery,\n onQueryUpdate: setCurrentQuery,\n onSubmit,\n inputRef,\n }}\n />\n </div>\n <div className={b('content')}>\n {items?.length && query ? (\n <FoundBlock\n {...{\n items,\n page,\n isMobile,\n totalItems,\n maxPages,\n itemsPerPage,\n itemOnClick,\n onPageChange,\n irrelevantOnClick,\n relevantOnClick,\n }}\n />\n ) : (\n <WithoutContentBlock loading={loading} />\n )}\n </div>\n </div>\n );\n};\n\nexport default SearchPage;\n"],
5
+ "mappings": "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",
6
6
  "names": ["block", "React"]
7
7
  }
@@ -0,0 +1,19 @@
1
+ import type { KeyboardEvent } from 'react';
2
+ import React from 'react';
3
+ import { TextInputSize } from '@gravity-ui/uikit';
4
+ type SuggestInputProps = {
5
+ id: string;
6
+ text: string;
7
+ size?: TextInputSize;
8
+ autoFocus?: boolean;
9
+ placeholder?: string;
10
+ endContent?: React.ReactNode;
11
+ onUpdate?: (item: string) => void;
12
+ onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;
13
+ onFocus?: () => void;
14
+ onBlur?: () => void;
15
+ className?: string;
16
+ controlProps?: React.InputHTMLAttributes<HTMLInputElement>;
17
+ };
18
+ export declare const SearchInput: React.MemoExoticComponent<React.ForwardRefExoticComponent<SuggestInputProps & React.RefAttributes<HTMLElement>>>;
19
+ export {};
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b2) => {
12
+ for (var prop in b2 || (b2 = {}))
13
+ if (__hasOwnProp.call(b2, prop))
14
+ __defNormalProp(a, prop, b2[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b2)) {
17
+ if (__propIsEnum.call(b2, prop))
18
+ __defNormalProp(a, prop, b2[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __export = (target, all) => {
23
+ for (var name in all)
24
+ __defProp(target, name, { get: all[name], enumerable: true });
25
+ };
26
+ var __copyProps = (to, from, except, desc) => {
27
+ if (from && typeof from === "object" || typeof from === "function") {
28
+ for (let key of __getOwnPropNames(from))
29
+ if (!__hasOwnProp.call(to, key) && key !== except)
30
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
31
+ }
32
+ return to;
33
+ };
34
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
35
+ // If the importer is in node compatibility mode or this is not an ESM
36
+ // file that has been converted to a CommonJS file using a Babel-
37
+ // compatible transform (i.e. "__esModule" has not been set), then set
38
+ // "default" to the CommonJS "module.exports" for node compatibility.
39
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
40
+ mod
41
+ ));
42
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
43
+
44
+ // src/components/SearchSuggest/SearchInput.tsx
45
+ var SearchInput_exports = {};
46
+ __export(SearchInput_exports, {
47
+ SearchInput: () => SearchInput
48
+ });
49
+ module.exports = __toCommonJS(SearchInput_exports);
50
+ var import_react = __toESM(require("react"));
51
+ var import_uikit = require("@gravity-ui/uikit");
52
+ var import_bem_cn_lite = __toESM(require("bem-cn-lite"));
53
+ var b = (0, import_bem_cn_lite.default)("dc-search-input");
54
+ var SearchInput = (0, import_react.memo)(
55
+ (0, import_react.forwardRef)((props, ref) => {
56
+ const {
57
+ id,
58
+ text,
59
+ size,
60
+ autoFocus,
61
+ placeholder,
62
+ endContent,
63
+ onBlur,
64
+ onFocus,
65
+ onUpdate,
66
+ onKeyDown,
67
+ className,
68
+ controlProps
69
+ } = props;
70
+ return /* @__PURE__ */ import_react.default.createElement(
71
+ import_uikit.TextInput,
72
+ {
73
+ ref,
74
+ size,
75
+ value: text,
76
+ placeholder,
77
+ endContent,
78
+ autoComplete: false,
79
+ autoFocus,
80
+ hasClear: true,
81
+ onBlur,
82
+ onUpdate,
83
+ onFocus,
84
+ onKeyDown,
85
+ className: b("input", className),
86
+ id,
87
+ controlProps: __spreadValues({
88
+ role: "combobox",
89
+ "aria-autocomplete": "list"
90
+ }, controlProps || {})
91
+ }
92
+ );
93
+ })
94
+ );
95
+ SearchInput.displayName = "SuggestInput";
96
+ //# sourceMappingURL=SearchInput.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/SearchSuggest/SearchInput.tsx"],
4
+ "sourcesContent": ["import type {KeyboardEvent} from 'react';\n\nimport React, {forwardRef, memo} from 'react';\nimport {TextInput, TextInputSize} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\ntype SuggestInputProps = {\n id: string;\n text: string;\n size?: TextInputSize;\n autoFocus?: boolean;\n placeholder?: string;\n endContent?: React.ReactNode;\n onUpdate?: (item: string) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n className?: string;\n controlProps?: React.InputHTMLAttributes<HTMLInputElement>;\n};\n\nconst b = block('dc-search-input');\n\nexport const SearchInput = memo(\n forwardRef<HTMLElement, SuggestInputProps>((props, ref) => {\n const {\n id,\n text,\n size,\n autoFocus,\n placeholder,\n endContent,\n onBlur,\n onFocus,\n onUpdate,\n onKeyDown,\n className,\n controlProps,\n } = props;\n\n return (\n <TextInput\n ref={ref}\n size={size}\n value={text}\n placeholder={placeholder}\n endContent={endContent}\n autoComplete={false}\n autoFocus={autoFocus}\n hasClear={true}\n onBlur={onBlur}\n onUpdate={onUpdate}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n className={b('input', className)}\n id={id}\n controlProps={{\n role: 'combobox',\n 'aria-autocomplete': 'list',\n ...(controlProps || {}),\n }}\n />\n );\n }),\n);\n\nSearchInput.displayName = 'SuggestInput';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAsC;AACtC,mBAAuC;AACvC,yBAAkB;AAiBlB,IAAM,QAAI,mBAAAA,SAAM,iBAAiB;AAE1B,IAAM,kBAAc;AAAA,MACvB,yBAA2C,CAAC,OAAO,QAAQ;AACvD,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,IAAI;AAEJ,WACI,6BAAAC,QAAA;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd;AAAA,QACA,UAAU;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,EAAE,SAAS,SAAS;AAAA,QAC/B;AAAA,QACA,cAAc;AAAA,UACV,MAAM;AAAA,UACN,qBAAqB;AAAA,WACjB,gBAAgB,CAAC;AAAA;AAAA,IAE7B;AAAA,EAER,CAAC;AACL;AAEA,YAAY,cAAc;",
6
+ "names": ["block", "React"]
7
+ }
@@ -0,0 +1,18 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { SearchProvider, SearchSuggestItem } from './types';
3
+ import React from 'react';
4
+ import { List, ListItemData } from '@gravity-ui/uikit';
5
+ import './index.scss';
6
+ type SuggestListProps = {
7
+ id: string;
8
+ items: SearchSuggestItem[];
9
+ renderItem: (item: SearchSuggestItem) => ReactNode;
10
+ onItemClick: (item: ListItemData<SearchSuggestItem>, index?: number, fromKeyboard?: boolean) => boolean | void;
11
+ onChangeActive: (index?: number) => void;
12
+ };
13
+ export declare const Suggest: React.MemoExoticComponent<React.ForwardRefExoticComponent<{
14
+ id: string;
15
+ query: string;
16
+ provider: SearchProvider;
17
+ } & Omit<SuggestListProps, "items"> & React.RefAttributes<List<SearchSuggestItem>>>>;
18
+ export {};
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b2) => {
12
+ for (var prop in b2 || (b2 = {}))
13
+ if (__hasOwnProp.call(b2, prop))
14
+ __defNormalProp(a, prop, b2[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b2)) {
17
+ if (__propIsEnum.call(b2, prop))
18
+ __defNormalProp(a, prop, b2[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __export = (target, all) => {
23
+ for (var name in all)
24
+ __defProp(target, name, { get: all[name], enumerable: true });
25
+ };
26
+ var __copyProps = (to, from, except, desc) => {
27
+ if (from && typeof from === "object" || typeof from === "function") {
28
+ for (let key of __getOwnPropNames(from))
29
+ if (!__hasOwnProp.call(to, key) && key !== except)
30
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
31
+ }
32
+ return to;
33
+ };
34
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
35
+ // If the importer is in node compatibility mode or this is not an ESM
36
+ // file that has been converted to a CommonJS file using a Babel-
37
+ // compatible transform (i.e. "__esModule" has not been set), then set
38
+ // "default" to the CommonJS "module.exports" for node compatibility.
39
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
40
+ mod
41
+ ));
42
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
43
+
44
+ // src/components/SearchSuggest/Suggest.tsx
45
+ var Suggest_exports = {};
46
+ __export(Suggest_exports, {
47
+ Suggest: () => Suggest
48
+ });
49
+ module.exports = __toCommonJS(Suggest_exports);
50
+ var import_react = __toESM(require("react"));
51
+ var import_uikit = require("@gravity-ui/uikit");
52
+ var import_bem_cn_lite = __toESM(require("bem-cn-lite"));
53
+ var import_pick = __toESM(require("lodash/pick"));
54
+ var import_hooks = require("../../hooks");
55
+ var import_useProvider = require("./useProvider");
56
+ var import_index = require("./index.css");
57
+ var b = (0, import_bem_cn_lite.default)("dc-search-suggest");
58
+ var SuggestLoader = (0, import_react.memo)(() => {
59
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: b("loader") }, /* @__PURE__ */ import_react.default.createElement(import_uikit.Loader, null));
60
+ });
61
+ SuggestLoader.displayName = "SuggestLoader";
62
+ var SuggestEmpty = (0, import_react.memo)(({ query }) => {
63
+ const { t } = (0, import_hooks.useTranslation)("search-suggest");
64
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: b("list", { empty: true }) }, t("search-suggest_not-found", { query }));
65
+ });
66
+ SuggestEmpty.displayName = "SuggestEmpty";
67
+ var SuggestList = (0, import_react.memo)(
68
+ (0, import_react.forwardRef)((props, ref) => {
69
+ const { id, items, renderItem, onItemClick, onChangeActive } = props;
70
+ return /* @__PURE__ */ import_react.default.createElement(
71
+ import_uikit.List,
72
+ {
73
+ ref,
74
+ id,
75
+ className: b("list"),
76
+ role: "listbox",
77
+ filterable: false,
78
+ virtualized: false,
79
+ items,
80
+ renderItem,
81
+ onItemClick,
82
+ onChangeActive
83
+ }
84
+ );
85
+ })
86
+ );
87
+ SuggestList.displayName = "SuggestList";
88
+ var Suggest = (0, import_react.memo)(
89
+ (0, import_react.forwardRef)((props, ref) => {
90
+ const { query, provider } = props;
91
+ const [items, suggest] = (0, import_useProvider.useProvider)(provider);
92
+ (0, import_react.useEffect)(() => suggest(query), [query, suggest]);
93
+ if (!items) {
94
+ return null;
95
+ }
96
+ if (items instanceof Promise) {
97
+ return /* @__PURE__ */ import_react.default.createElement(SuggestLoader, null);
98
+ }
99
+ if (Array.isArray(items) && !items.length) {
100
+ return /* @__PURE__ */ import_react.default.createElement(SuggestEmpty, { query });
101
+ }
102
+ return /* @__PURE__ */ import_react.default.createElement(
103
+ SuggestList,
104
+ __spreadValues({
105
+ ref,
106
+ items
107
+ }, (0, import_pick.default)(props, ["id", "renderItem", "onItemClick", "onChangeActive"]))
108
+ );
109
+ })
110
+ );
111
+ Suggest.displayName = "Suggest";
112
+ //# sourceMappingURL=Suggest.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/SearchSuggest/Suggest.tsx"],
4
+ "sourcesContent": ["import type {ReactNode} from 'react';\nimport type {SearchProvider, SearchSuggestItem} from './types';\n\nimport React, {forwardRef, memo, useEffect} from 'react';\nimport {List, ListItemData, Loader} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\nimport pick from 'lodash/pick';\n\nimport {useTranslation} from '../../hooks';\n\nimport {useProvider} from './useProvider';\nimport './index.scss';\n\nconst b = block('dc-search-suggest');\n\nconst SuggestLoader = memo(() => {\n return (\n <div className={b('loader')}>\n <Loader />\n </div>\n );\n});\n\nSuggestLoader.displayName = 'SuggestLoader';\n\nconst SuggestEmpty = memo<{query: string}>(({query}) => {\n const {t} = useTranslation('search-suggest');\n\n return (\n <div className={b('list', {empty: true})}>\n {t<string>('search-suggest_not-found', {query})}\n </div>\n );\n});\n\nSuggestEmpty.displayName = 'SuggestEmpty';\n\ntype SuggestListProps = {\n id: string;\n items: SearchSuggestItem[];\n renderItem: (item: SearchSuggestItem) => ReactNode;\n onItemClick: (\n item: ListItemData<SearchSuggestItem>,\n index?: number,\n fromKeyboard?: boolean,\n ) => boolean | void;\n onChangeActive: (index?: number) => void;\n};\n\nconst SuggestList = memo(\n forwardRef<List<SearchSuggestItem>, SuggestListProps>((props, ref) => {\n const {id, items, renderItem, onItemClick, onChangeActive} = props;\n\n return (\n <List\n ref={ref}\n id={id}\n className={b('list')}\n role={'listbox'}\n filterable={false}\n virtualized={false}\n items={items}\n renderItem={renderItem}\n onItemClick={onItemClick}\n onChangeActive={onChangeActive}\n />\n );\n }),\n);\n\nSuggestList.displayName = 'SuggestList';\n\ntype SuggestProps = {\n id: string;\n query: string;\n provider: SearchProvider;\n} & Omit<SuggestListProps, 'items'>;\n\nexport const Suggest = memo(\n forwardRef<List<SearchSuggestItem>, SuggestProps>((props, ref) => {\n const {query, provider} = props;\n const [items, suggest] = useProvider(provider);\n\n useEffect(() => suggest(query), [query, suggest]);\n\n if (!items) {\n return null;\n }\n\n if (items instanceof Promise) {\n return <SuggestLoader />;\n }\n\n if (Array.isArray(items) && !items.length) {\n return <SuggestEmpty query={query} />;\n }\n\n return (\n <SuggestList\n ref={ref}\n items={items}\n {...pick(props, ['id', 'renderItem', 'onItemClick', 'onChangeActive'])}\n />\n );\n }),\n);\n\nSuggest.displayName = 'Suggest';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAAiD;AACjD,mBAAyC;AACzC,yBAAkB;AAClB,kBAAiB;AAEjB,mBAA6B;AAE7B,yBAA0B;AAC1B,mBAAO;AAEP,IAAM,QAAI,mBAAAA,SAAM,mBAAmB;AAEnC,IAAM,oBAAgB,mBAAK,MAAM;AAC7B,SACI,6BAAAC,QAAA,cAAC,SAAI,WAAW,EAAE,QAAQ,KACtB,6BAAAA,QAAA,cAAC,yBAAO,CACZ;AAER,CAAC;AAED,cAAc,cAAc;AAE5B,IAAM,mBAAe,mBAAsB,CAAC,EAAC,MAAK,MAAM;AACpD,QAAM,EAAC,EAAC,QAAI,6BAAe,gBAAgB;AAE3C,SACI,6BAAAA,QAAA,cAAC,SAAI,WAAW,EAAE,QAAQ,EAAC,OAAO,KAAI,CAAC,KAClC,EAAU,4BAA4B,EAAC,MAAK,CAAC,CAClD;AAER,CAAC;AAED,aAAa,cAAc;AAc3B,IAAM,kBAAc;AAAA,MAChB,yBAAsD,CAAC,OAAO,QAAQ;AAClE,UAAM,EAAC,IAAI,OAAO,YAAY,aAAa,eAAc,IAAI;AAE7D,WACI,6BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA;AAAA,QACA,WAAW,EAAE,MAAM;AAAA,QACnB,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,aAAa;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACJ;AAAA,EAER,CAAC;AACL;AAEA,YAAY,cAAc;AAQnB,IAAM,cAAU;AAAA,MACnB,yBAAkD,CAAC,OAAO,QAAQ;AAC9D,UAAM,EAAC,OAAO,SAAQ,IAAI;AAC1B,UAAM,CAAC,OAAO,OAAO,QAAI,gCAAY,QAAQ;AAE7C,gCAAU,MAAM,QAAQ,KAAK,GAAG,CAAC,OAAO,OAAO,CAAC;AAEhD,QAAI,CAAC,OAAO;AACR,aAAO;AAAA,IACX;AAEA,QAAI,iBAAiB,SAAS;AAC1B,aAAO,6BAAAA,QAAA,cAAC,mBAAc;AAAA,IAC1B;AAEA,QAAI,MAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,QAAQ;AACvC,aAAO,6BAAAA,QAAA,cAAC,gBAAa,OAAc;AAAA,IACvC;AAEA,WACI,6BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA;AAAA,aACI,YAAAC,SAAK,OAAO,CAAC,MAAM,cAAc,eAAe,gBAAgB,CAAC;AAAA,IACzE;AAAA,EAER,CAAC;AACL;AAEA,QAAQ,cAAc;",
6
+ "names": ["block", "React", "pick"]
7
+ }
@@ -0,0 +1,3 @@
1
+ import type { SearchSuggestItem } from './types';
2
+ import React from 'react';
3
+ export declare const SuggestItem: React.FC<SearchSuggestItem>;