@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
@@ -43,26 +43,41 @@ var import_ControlsLayout = require("../../Controls/ControlsLayout");
43
43
  var import_Feedback = require("../Feedback");
44
44
  var b = (0, import_bem_cn_lite.default)("dc-feedback");
45
45
  var DislikeControl = (0, import_react.memo)(
46
- (0, import_react.forwardRef)(({ isDisliked, view, onClick }, ref) => {
47
- const { t } = (0, import_hooks.useTranslation)("feedback");
48
- const { isVerticalView, controlClassName } = (0, import_react.useContext)(import_ControlsLayout.ControlsLayoutContext);
49
- const tooltipText = isDisliked ? t("cancel-dislike-text") : t("dislike-text");
50
- const Icon = isDisliked ? import_icons.ThumbsDownFill : import_icons.ThumbsDown;
51
- if (view === import_Feedback.FeedbackView.Wide) {
52
- return /* @__PURE__ */ import_react.default.createElement(import_uikit.Button, { view: "normal", ref, onClick, className: b("control", { view }) }, /* @__PURE__ */ import_react.default.createElement(import_uikit.Button.Icon, null, /* @__PURE__ */ import_react.default.createElement(Icon, { width: 14, height: 14 })), t("button-dislike-text"));
53
- }
54
- return /* @__PURE__ */ import_react.default.createElement(
55
- import_Control.Control,
56
- {
57
- onClick,
58
- className: b("control", { view }, controlClassName),
59
- isVerticalView,
60
- tooltipText,
61
- ref,
62
- icon: Icon
46
+ (0, import_react.forwardRef)(
47
+ ({ isDisliked, isPopupVisible, view, onClick }, ref) => {
48
+ const { t } = (0, import_hooks.useTranslation)("feedback");
49
+ const { isVerticalView, controlClassName } = (0, import_react.useContext)(import_ControlsLayout.ControlsLayoutContext);
50
+ const tooltipText = isDisliked ? t("cancel-dislike-text") : t("dislike-text");
51
+ const Icon = isDisliked ? import_icons.ThumbsDownFill : import_icons.ThumbsDown;
52
+ if (view === import_Feedback.FeedbackView.Wide) {
53
+ return /* @__PURE__ */ import_react.default.createElement(
54
+ import_uikit.Button,
55
+ {
56
+ view: "normal",
57
+ ref,
58
+ onClick,
59
+ className: b("control", { view })
60
+ },
61
+ /* @__PURE__ */ import_react.default.createElement(import_uikit.Button.Icon, null, /* @__PURE__ */ import_react.default.createElement(Icon, { width: 14, height: 14 })),
62
+ t("button-dislike-text")
63
+ );
63
64
  }
64
- );
65
- })
65
+ return /* @__PURE__ */ import_react.default.createElement(
66
+ import_Control.Control,
67
+ {
68
+ onClick,
69
+ className: b("control", { view }, controlClassName),
70
+ isVerticalView,
71
+ tooltipText,
72
+ ref,
73
+ icon: Icon,
74
+ buttonExtraProps: {
75
+ "aria-expanded": isPopupVisible
76
+ }
77
+ }
78
+ );
79
+ }
80
+ )
66
81
  );
67
82
  DislikeControl.displayName = "DislikeControl";
68
83
  var DislikeControl_default = DislikeControl;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/Feedback/controls/DislikeControl.tsx"],
4
- "sourcesContent": ["import React, {forwardRef, memo, useContext} from 'react';\n\nimport {ThumbsDown, ThumbsDownFill} from '@gravity-ui/icons';\nimport {Button} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport {useTranslation} from '../../../hooks';\nimport {Control} from '../../Control';\nimport {ControlsLayoutContext} from '../../Controls/ControlsLayout';\nimport {FeedbackView} from '../Feedback';\n\ntype DislikeControlProps = {\n isVerticalView?: boolean | undefined;\n isDisliked: boolean | undefined;\n className?: string | undefined;\n view: FeedbackView | undefined;\n onClick: () => void;\n};\n\nconst b = block('dc-feedback');\n\nconst DislikeControl = memo(\n forwardRef<HTMLButtonElement, DislikeControlProps>(({isDisliked, view, onClick}, ref) => {\n const {t} = useTranslation('feedback');\n const {isVerticalView, controlClassName} = useContext(ControlsLayoutContext);\n const tooltipText = isDisliked ? t('cancel-dislike-text') : t('dislike-text');\n\n const Icon = isDisliked ? ThumbsDownFill : ThumbsDown;\n\n if (view === FeedbackView.Wide) {\n return (\n <Button view=\"normal\" ref={ref} onClick={onClick} className={b('control', {view})}>\n <Button.Icon>\n <Icon width={14} height={14} />\n </Button.Icon>\n {t<string>('button-dislike-text')}\n </Button>\n );\n }\n\n return (\n <Control\n onClick={onClick}\n className={b('control', {view}, controlClassName)}\n isVerticalView={isVerticalView}\n tooltipText={tooltipText}\n ref={ref}\n icon={Icon}\n />\n );\n }),\n);\n\nDislikeControl.displayName = 'DislikeControl';\n\nexport default DislikeControl;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkD;AAElD,mBAAyC;AACzC,mBAAqB;AACrB,yBAAkB;AAElB,mBAA6B;AAC7B,qBAAsB;AACtB,4BAAoC;AACpC,sBAA2B;AAU3B,IAAM,QAAI,mBAAAA,SAAM,aAAa;AAE7B,IAAM,qBAAiB;AAAA,MACnB,yBAAmD,CAAC,EAAC,YAAY,MAAM,QAAO,GAAG,QAAQ;AACrF,UAAM,EAAC,EAAC,QAAI,6BAAe,UAAU;AACrC,UAAM,EAAC,gBAAgB,iBAAgB,QAAI,yBAAW,2CAAqB;AAC3E,UAAM,cAAc,aAAa,EAAE,qBAAqB,IAAI,EAAE,cAAc;AAE5E,UAAM,OAAO,aAAa,8BAAiB;AAE3C,QAAI,SAAS,6BAAa,MAAM;AAC5B,aACI,6BAAAC,QAAA,cAAC,uBAAO,MAAK,UAAS,KAAU,SAAkB,WAAW,EAAE,WAAW,EAAC,KAAI,CAAC,KAC5E,6BAAAA,QAAA,cAAC,oBAAO,MAAP,MACG,6BAAAA,QAAA,cAAC,QAAK,OAAO,IAAI,QAAQ,IAAI,CACjC,GACC,EAAU,qBAAqB,CACpC;AAAA,IAER;AAEA,WACI,6BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA,WAAW,EAAE,WAAW,EAAC,KAAI,GAAG,gBAAgB;AAAA,QAChD;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA;AAAA,IACV;AAAA,EAER,CAAC;AACL;AAEA,eAAe,cAAc;AAE7B,IAAO,yBAAQ;",
4
+ "sourcesContent": ["import React, {forwardRef, memo, useContext} from 'react';\nimport {ThumbsDown, ThumbsDownFill} from '@gravity-ui/icons';\nimport {Button} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport {useTranslation} from '../../../hooks';\nimport {Control} from '../../Control';\nimport {ControlsLayoutContext} from '../../Controls/ControlsLayout';\nimport {FeedbackView} from '../Feedback';\n\ntype DislikeControlProps = {\n isVerticalView?: boolean | undefined;\n isDisliked: boolean | undefined;\n isPopupVisible: boolean;\n className?: string | undefined;\n view: FeedbackView | undefined;\n onClick: () => void;\n};\n\nconst b = block('dc-feedback');\n\nconst DislikeControl = memo(\n forwardRef<HTMLButtonElement, DislikeControlProps>(\n ({isDisliked, isPopupVisible, view, onClick}, ref) => {\n const {t} = useTranslation('feedback');\n const {isVerticalView, controlClassName} = useContext(ControlsLayoutContext);\n const tooltipText = isDisliked ? t('cancel-dislike-text') : t('dislike-text');\n\n const Icon = isDisliked ? ThumbsDownFill : ThumbsDown;\n\n if (view === FeedbackView.Wide) {\n return (\n <Button\n view=\"normal\"\n ref={ref}\n onClick={onClick}\n className={b('control', {view})}\n >\n <Button.Icon>\n <Icon width={14} height={14} />\n </Button.Icon>\n {t<string>('button-dislike-text')}\n </Button>\n );\n }\n\n return (\n <Control\n onClick={onClick}\n className={b('control', {view}, controlClassName)}\n isVerticalView={isVerticalView}\n tooltipText={tooltipText}\n ref={ref}\n icon={Icon}\n buttonExtraProps={{\n 'aria-expanded': isPopupVisible,\n }}\n />\n );\n },\n ),\n);\n\nDislikeControl.displayName = 'DislikeControl';\n\nexport default DislikeControl;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkD;AAClD,mBAAyC;AACzC,mBAAqB;AACrB,yBAAkB;AAElB,mBAA6B;AAC7B,qBAAsB;AACtB,4BAAoC;AACpC,sBAA2B;AAW3B,IAAM,QAAI,mBAAAA,SAAM,aAAa;AAE7B,IAAM,qBAAiB;AAAA,MACnB;AAAA,IACI,CAAC,EAAC,YAAY,gBAAgB,MAAM,QAAO,GAAG,QAAQ;AAClD,YAAM,EAAC,EAAC,QAAI,6BAAe,UAAU;AACrC,YAAM,EAAC,gBAAgB,iBAAgB,QAAI,yBAAW,2CAAqB;AAC3E,YAAM,cAAc,aAAa,EAAE,qBAAqB,IAAI,EAAE,cAAc;AAE5E,YAAM,OAAO,aAAa,8BAAiB;AAE3C,UAAI,SAAS,6BAAa,MAAM;AAC5B,eACI,6BAAAC,QAAA;AAAA,UAAC;AAAA;AAAA,YACG,MAAK;AAAA,YACL;AAAA,YACA;AAAA,YACA,WAAW,EAAE,WAAW,EAAC,KAAI,CAAC;AAAA;AAAA,UAE9B,6BAAAA,QAAA,cAAC,oBAAO,MAAP,MACG,6BAAAA,QAAA,cAAC,QAAK,OAAO,IAAI,QAAQ,IAAI,CACjC;AAAA,UACC,EAAU,qBAAqB;AAAA,QACpC;AAAA,MAER;AAEA,aACI,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACG;AAAA,UACA,WAAW,EAAE,WAAW,EAAC,KAAI,GAAG,gBAAgB;AAAA,UAChD;AAAA,UACA;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN,kBAAkB;AAAA,YACd,iBAAiB;AAAA,UACrB;AAAA;AAAA,MACJ;AAAA,IAER;AAAA,EACJ;AACJ;AAEA,eAAe,cAAc;AAE7B,IAAO,yBAAQ;",
6
6
  "names": ["block", "React"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/Feedback/controls/DislikeVariantsPopup.tsx"],
4
- "sourcesContent": ["import React, {\n RefObject,\n SyntheticEvent,\n forwardRef,\n memo,\n useCallback,\n useContext,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport {Button, Checkbox, Popup, TextArea, useDirection} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport {PopperPosition, useTranslation} from '../../../hooks';\nimport {getPopupPosition} from '../../../utils';\nimport {ControlsLayoutContext} from '../../Controls/ControlsLayout';\nimport {FeedbackView} from '../Feedback';\n\nexport interface FeedbackCheckboxes {\n [key: string]: boolean;\n}\n\nconst b = block('dc-feedback');\n\nconst DislikeVariantsList = memo(\n forwardRef<FormPart<string[]>>((_props, ref) => {\n const {t, i18n} = useTranslation('feedback-variants');\n const variants = i18n.getResourceBundle(i18n.language, 'feedback-variants');\n const [checked, setChecked] = useState({} as FeedbackCheckboxes);\n\n useImperativeHandle(ref, () => {\n return {\n data() {\n return Object.keys(checked)\n .filter((key) => Boolean(checked[key]))\n .map((key) => variants[key]);\n },\n\n clean() {\n setChecked({});\n },\n };\n });\n\n if (!Object.keys(variants).length) {\n return null;\n }\n\n return (\n <div className={b('variants')}>\n {Object.keys(variants).map((variant) => (\n <Checkbox\n key={variant}\n className={b('variant')}\n checked={checked[variant]}\n // TODO: fix uikit API - onUpdate(value, key)\n onUpdate={(state) => {\n setChecked({\n ...checked,\n [variant]: state,\n });\n }}\n content={t<string>(variant)}\n />\n ))}\n </div>\n );\n }),\n);\n\nDislikeVariantsList.displayName = 'DislikeVariantsList';\n\nconst DislikeVariantsInput = memo(\n forwardRef<FormPart<string>>((_props, ref) => {\n const {t} = useTranslation('feedback');\n const [feedbackComment, setFeedbackComment] = useState('');\n const onChange = useCallback((event: SyntheticEvent) => {\n setFeedbackComment((event.target as HTMLTextAreaElement).value);\n }, []);\n\n useImperativeHandle(ref, () => {\n return {\n data() {\n return feedbackComment;\n },\n\n clean() {\n setFeedbackComment('');\n },\n };\n });\n\n return (\n <div className={b('textarea')}>\n <TextArea\n size=\"m\"\n rows={6}\n placeholder={t('comment-placeholder')}\n hasClear\n value={feedbackComment}\n onChange={onChange}\n />\n </div>\n );\n }),\n);\n\nDislikeVariantsInput.displayName = 'DislikeVariantsInput';\n\ntype FormPart<T> = {\n data(): T;\n clean(): void;\n};\n\nexport type FormData = {\n comment: string;\n answers: string[];\n};\n\ntype DislikeVariantsPopupProps = {\n view: FeedbackView;\n visible: boolean;\n anchor: RefObject<HTMLButtonElement>;\n onOutsideClick: () => void;\n onSubmit: (data: FormData) => void;\n};\n\nconst DislikeVariantsPopup: React.FC<DislikeVariantsPopupProps> = memo(\n ({anchor, visible, view, onOutsideClick, onSubmit}) => {\n const {t} = useTranslation('feedback');\n const {isVerticalView} = useContext(ControlsLayoutContext);\n const direction = useDirection();\n\n const position = useMemo(() => {\n if (!view || view === FeedbackView.Regular) {\n return getPopupPosition(isVerticalView, direction);\n }\n\n return PopperPosition.RIGHT;\n }, [isVerticalView, view, direction]);\n\n const feedbackComment = useRef<FormPart<string> | null>(null);\n const feedbackCheckboxes = useRef<FormPart<string[]> | null>(null);\n\n const onFormSubmit = useCallback(\n (event: SyntheticEvent) => {\n event.preventDefault();\n\n onSubmit({\n comment: feedbackComment.current?.data() || '',\n answers: feedbackCheckboxes.current?.data() || [],\n });\n\n feedbackComment.current?.clean();\n feedbackCheckboxes.current?.clean();\n },\n [onSubmit],\n );\n\n return (\n <Popup\n anchorRef={anchor}\n open={visible}\n onOutsideClick={onOutsideClick}\n contentClassName={b('variants-popup', {view})}\n placement={position}\n modifiers={[\n {\n name: 'preventOverflow',\n options: {padding: 1, altBoundary: true, altAxis: true},\n },\n ]}\n >\n <h3 className={b('popup-title')}>{t<string>('dislike-variants-title')}</h3>\n <form onSubmit={onFormSubmit}>\n <DislikeVariantsList ref={feedbackCheckboxes} />\n <DislikeVariantsInput ref={feedbackComment} />\n <div className={b('variants-actions')}>\n <Button view=\"action\" className={b('variants-action')} type={'submit'}>\n {t<string>('send-action-text')}\n </Button>\n </div>\n </form>\n </Popup>\n );\n },\n);\n\nDislikeVariantsPopup.displayName = 'FeedbackDislikeVariantsPopup';\n\nexport default DislikeVariantsPopup;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import React, {\n RefObject,\n SyntheticEvent,\n forwardRef,\n memo,\n useCallback,\n useContext,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {Button, Checkbox, Popup, TextArea, useDirection} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport {PopperPosition, useTranslation} from '../../../hooks';\nimport {getPopupPosition} from '../../../utils';\nimport {ControlsLayoutContext} from '../../Controls/ControlsLayout';\nimport {FeedbackView} from '../Feedback';\n\nexport interface FeedbackCheckboxes {\n [key: string]: boolean;\n}\n\nconst b = block('dc-feedback');\n\nconst DislikeVariantsList = memo(\n forwardRef<FormPart<string[]>>((_props, ref) => {\n const {t, i18n} = useTranslation('feedback-variants');\n const variants = i18n.getResourceBundle(i18n.language, 'feedback-variants');\n const [checked, setChecked] = useState({} as FeedbackCheckboxes);\n\n useImperativeHandle(ref, () => {\n return {\n data() {\n return Object.keys(checked)\n .filter((key) => Boolean(checked[key]))\n .map((key) => variants[key]);\n },\n\n clean() {\n setChecked({});\n },\n };\n });\n\n if (!Object.keys(variants).length) {\n return null;\n }\n\n return (\n <div className={b('variants')}>\n {Object.keys(variants).map((variant) => (\n <Checkbox\n key={variant}\n className={b('variant')}\n checked={checked[variant]}\n // TODO: fix uikit API - onUpdate(value, key)\n onUpdate={(state) => {\n setChecked({\n ...checked,\n [variant]: state,\n });\n }}\n content={t<string>(variant)}\n />\n ))}\n </div>\n );\n }),\n);\n\nDislikeVariantsList.displayName = 'DislikeVariantsList';\n\nconst DislikeVariantsInput = memo(\n forwardRef<FormPart<string>>((_props, ref) => {\n const {t} = useTranslation('feedback');\n const [feedbackComment, setFeedbackComment] = useState('');\n const onChange = useCallback((event: SyntheticEvent) => {\n setFeedbackComment((event.target as HTMLTextAreaElement).value);\n }, []);\n\n useImperativeHandle(ref, () => {\n return {\n data() {\n return feedbackComment;\n },\n\n clean() {\n setFeedbackComment('');\n },\n };\n });\n\n return (\n <div className={b('textarea')}>\n <TextArea\n size=\"m\"\n rows={6}\n placeholder={t('comment-placeholder')}\n hasClear\n value={feedbackComment}\n onChange={onChange}\n />\n </div>\n );\n }),\n);\n\nDislikeVariantsInput.displayName = 'DislikeVariantsInput';\n\ntype FormPart<T> = {\n data(): T;\n clean(): void;\n};\n\nexport type FormData = {\n comment: string;\n answers: string[];\n};\n\ntype DislikeVariantsPopupProps = {\n view: FeedbackView;\n visible: boolean;\n anchor: RefObject<HTMLButtonElement>;\n onOutsideClick: () => void;\n onSubmit: (data: FormData) => void;\n};\n\nconst DislikeVariantsPopup: React.FC<DislikeVariantsPopupProps> = memo(\n ({anchor, visible, view, onOutsideClick, onSubmit}) => {\n const {t} = useTranslation('feedback');\n const {isVerticalView} = useContext(ControlsLayoutContext);\n const direction = useDirection();\n\n const position = useMemo(() => {\n if (!view || view === FeedbackView.Regular) {\n return getPopupPosition(isVerticalView, direction);\n }\n\n return PopperPosition.RIGHT;\n }, [isVerticalView, view, direction]);\n\n const feedbackComment = useRef<FormPart<string> | null>(null);\n const feedbackCheckboxes = useRef<FormPart<string[]> | null>(null);\n\n const onFormSubmit = useCallback(\n (event: SyntheticEvent) => {\n event.preventDefault();\n\n onSubmit({\n comment: feedbackComment.current?.data() || '',\n answers: feedbackCheckboxes.current?.data() || [],\n });\n\n feedbackComment.current?.clean();\n feedbackCheckboxes.current?.clean();\n },\n [onSubmit],\n );\n\n return (\n <Popup\n anchorRef={anchor}\n open={visible}\n onOutsideClick={onOutsideClick}\n contentClassName={b('variants-popup', {view})}\n placement={position}\n modifiers={[\n {\n name: 'preventOverflow',\n options: {padding: 1, altBoundary: true, altAxis: true},\n },\n ]}\n >\n <h3 className={b('popup-title')}>{t<string>('dislike-variants-title')}</h3>\n <form onSubmit={onFormSubmit}>\n <DislikeVariantsList ref={feedbackCheckboxes} />\n <DislikeVariantsInput ref={feedbackComment} />\n <div className={b('variants-actions')}>\n <Button view=\"action\" className={b('variants-action')} type={'submit'}>\n {t<string>('send-action-text')}\n </Button>\n </div>\n </form>\n </Popup>\n );\n },\n);\n\nDislikeVariantsPopup.displayName = 'FeedbackDislikeVariantsPopup';\n\nexport default DislikeVariantsPopup;\n"],
5
+ "mappings": "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",
6
6
  "names": ["block", "React"]
7
7
  }
@@ -1,9 +1,10 @@
1
- import React from 'react';
2
1
  import type { PopperPosition } from '../../../hooks';
2
+ import React from 'react';
3
3
  import { FeedbackView } from '../Feedback';
4
4
  type LikeControlProps = {
5
5
  isVerticalView?: boolean | undefined;
6
6
  isLiked: boolean | undefined;
7
+ isPopupVisible: boolean;
7
8
  className?: string | undefined;
8
9
  view: FeedbackView | undefined;
9
10
  onClick: () => void;
@@ -43,38 +43,43 @@ var import_ControlsLayout = require("../../Controls/ControlsLayout");
43
43
  var import_Feedback = require("../Feedback");
44
44
  var b = (0, import_bem_cn_lite.default)("dc-feedback");
45
45
  var LikeControl = (0, import_react.memo)(
46
- (0, import_react.forwardRef)(({ isLiked, view, onClick }, ref) => {
47
- const { t } = (0, import_hooks.useTranslation)("feedback");
48
- const { isVerticalView, popupPosition, controlClassName } = (0, import_react.useContext)(import_ControlsLayout.ControlsLayoutContext);
49
- const tooltipText = isLiked ? t("cancel-like-text") : t("like-text");
50
- const Icon = isLiked ? import_icons.ThumbsUpFill : import_icons.ThumbsUp;
51
- if (view === import_Feedback.FeedbackView.Wide) {
46
+ (0, import_react.forwardRef)(
47
+ ({ isLiked, isPopupVisible, view, onClick }, ref) => {
48
+ const { t } = (0, import_hooks.useTranslation)("feedback");
49
+ const { isVerticalView, popupPosition, controlClassName } = (0, import_react.useContext)(import_ControlsLayout.ControlsLayoutContext);
50
+ const tooltipText = isLiked ? t("cancel-like-text") : t("like-text");
51
+ const Icon = isLiked ? import_icons.ThumbsUpFill : import_icons.ThumbsUp;
52
+ if (view === import_Feedback.FeedbackView.Wide) {
53
+ return /* @__PURE__ */ import_react.default.createElement(
54
+ import_uikit.Button,
55
+ {
56
+ size: "m",
57
+ view: "normal",
58
+ ref,
59
+ onClick,
60
+ className: b("control", { view })
61
+ },
62
+ /* @__PURE__ */ import_react.default.createElement(import_uikit.Button.Icon, null, /* @__PURE__ */ import_react.default.createElement(Icon, { width: 14, height: 14 })),
63
+ t("button-like-text")
64
+ );
65
+ }
52
66
  return /* @__PURE__ */ import_react.default.createElement(
53
- import_uikit.Button,
67
+ import_Control.Control,
54
68
  {
55
- size: "m",
56
- view: "normal",
57
- ref,
58
69
  onClick,
59
- className: b("control", { view })
60
- },
61
- /* @__PURE__ */ import_react.default.createElement(import_uikit.Button.Icon, null, /* @__PURE__ */ import_react.default.createElement(Icon, { width: 14, height: 14 })),
62
- t("button-like-text")
70
+ className: b("control", { view }, controlClassName),
71
+ isVerticalView,
72
+ tooltipText,
73
+ ref,
74
+ icon: Icon,
75
+ popupPosition,
76
+ buttonExtraProps: {
77
+ "aria-expanded": isPopupVisible
78
+ }
79
+ }
63
80
  );
64
81
  }
65
- return /* @__PURE__ */ import_react.default.createElement(
66
- import_Control.Control,
67
- {
68
- onClick,
69
- className: b("control", { view }, controlClassName),
70
- isVerticalView,
71
- tooltipText,
72
- ref,
73
- icon: Icon,
74
- popupPosition
75
- }
76
- );
77
- })
82
+ )
78
83
  );
79
84
  LikeControl.displayName = "LikeControl";
80
85
  var LikeControl_default = LikeControl;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/Feedback/controls/LikeControl.tsx"],
4
- "sourcesContent": ["import React, {forwardRef, memo, useContext} from 'react';\n\nimport {ThumbsUp, ThumbsUpFill} from '@gravity-ui/icons';\nimport {Button} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport type {PopperPosition} from '../../../hooks';\nimport {useTranslation} from '../../../hooks';\nimport {Control} from '../../Control';\nimport {ControlsLayoutContext} from '../../Controls/ControlsLayout';\nimport {FeedbackView} from '../Feedback';\n\ntype LikeControlProps = {\n isVerticalView?: boolean | undefined;\n isLiked: boolean | undefined;\n className?: string | undefined;\n view: FeedbackView | undefined;\n onClick: () => void;\n popupPosition?: PopperPosition | undefined;\n};\n\nconst b = block('dc-feedback');\n\nconst LikeControl = memo(\n forwardRef<HTMLButtonElement, LikeControlProps>(({isLiked, view, onClick}, ref) => {\n const {t} = useTranslation('feedback');\n const {isVerticalView, popupPosition, controlClassName} = useContext(ControlsLayoutContext);\n const tooltipText = isLiked ? t('cancel-like-text') : t('like-text');\n\n const Icon = isLiked ? ThumbsUpFill : ThumbsUp;\n\n if (view === FeedbackView.Wide) {\n return (\n <Button\n size=\"m\"\n view=\"normal\"\n ref={ref}\n onClick={onClick}\n className={b('control', {view})}\n >\n <Button.Icon>\n <Icon width={14} height={14} />\n </Button.Icon>\n {t<string>('button-like-text')}\n </Button>\n );\n }\n\n return (\n <Control\n onClick={onClick}\n className={b('control', {view}, controlClassName)}\n isVerticalView={isVerticalView}\n tooltipText={tooltipText}\n ref={ref}\n icon={Icon}\n popupPosition={popupPosition}\n />\n );\n }),\n);\n\nLikeControl.displayName = 'LikeControl';\n\nexport default LikeControl;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkD;AAElD,mBAAqC;AACrC,mBAAqB;AACrB,yBAAkB;AAGlB,mBAA6B;AAC7B,qBAAsB;AACtB,4BAAoC;AACpC,sBAA2B;AAW3B,IAAM,QAAI,mBAAAA,SAAM,aAAa;AAE7B,IAAM,kBAAc;AAAA,MAChB,yBAAgD,CAAC,EAAC,SAAS,MAAM,QAAO,GAAG,QAAQ;AAC/E,UAAM,EAAC,EAAC,QAAI,6BAAe,UAAU;AACrC,UAAM,EAAC,gBAAgB,eAAe,iBAAgB,QAAI,yBAAW,2CAAqB;AAC1F,UAAM,cAAc,UAAU,EAAE,kBAAkB,IAAI,EAAE,WAAW;AAEnE,UAAM,OAAO,UAAU,4BAAe;AAEtC,QAAI,SAAS,6BAAa,MAAM;AAC5B,aACI,6BAAAC,QAAA;AAAA,QAAC;AAAA;AAAA,UACG,MAAK;AAAA,UACL,MAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA,WAAW,EAAE,WAAW,EAAC,KAAI,CAAC;AAAA;AAAA,QAE9B,6BAAAA,QAAA,cAAC,oBAAO,MAAP,MACG,6BAAAA,QAAA,cAAC,QAAK,OAAO,IAAI,QAAQ,IAAI,CACjC;AAAA,QACC,EAAU,kBAAkB;AAAA,MACjC;AAAA,IAER;AAEA,WACI,6BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA,WAAW,EAAE,WAAW,EAAC,KAAI,GAAG,gBAAgB;AAAA,QAChD;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN;AAAA;AAAA,IACJ;AAAA,EAER,CAAC;AACL;AAEA,YAAY,cAAc;AAE1B,IAAO,sBAAQ;",
4
+ "sourcesContent": ["import type {PopperPosition} from '../../../hooks';\n\nimport React, {forwardRef, memo, useContext} from 'react';\nimport {ThumbsUp, ThumbsUpFill} from '@gravity-ui/icons';\nimport {Button} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport {useTranslation} from '../../../hooks';\nimport {Control} from '../../Control';\nimport {ControlsLayoutContext} from '../../Controls/ControlsLayout';\nimport {FeedbackView} from '../Feedback';\n\ntype LikeControlProps = {\n isVerticalView?: boolean | undefined;\n isLiked: boolean | undefined;\n isPopupVisible: boolean;\n className?: string | undefined;\n view: FeedbackView | undefined;\n onClick: () => void;\n popupPosition?: PopperPosition | undefined;\n};\n\nconst b = block('dc-feedback');\n\nconst LikeControl = memo(\n forwardRef<HTMLButtonElement, LikeControlProps>(\n ({isLiked, isPopupVisible, view, onClick}, ref) => {\n const {t} = useTranslation('feedback');\n const {isVerticalView, popupPosition, controlClassName} =\n useContext(ControlsLayoutContext);\n const tooltipText = isLiked ? t('cancel-like-text') : t('like-text');\n\n const Icon = isLiked ? ThumbsUpFill : ThumbsUp;\n\n if (view === FeedbackView.Wide) {\n return (\n <Button\n size=\"m\"\n view=\"normal\"\n ref={ref}\n onClick={onClick}\n className={b('control', {view})}\n >\n <Button.Icon>\n <Icon width={14} height={14} />\n </Button.Icon>\n {t<string>('button-like-text')}\n </Button>\n );\n }\n\n return (\n <Control\n onClick={onClick}\n className={b('control', {view}, controlClassName)}\n isVerticalView={isVerticalView}\n tooltipText={tooltipText}\n ref={ref}\n icon={Icon}\n popupPosition={popupPosition}\n buttonExtraProps={{\n 'aria-expanded': isPopupVisible,\n }}\n />\n );\n },\n ),\n);\n\nLikeControl.displayName = 'LikeControl';\n\nexport default LikeControl;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAkD;AAClD,mBAAqC;AACrC,mBAAqB;AACrB,yBAAkB;AAElB,mBAA6B;AAC7B,qBAAsB;AACtB,4BAAoC;AACpC,sBAA2B;AAY3B,IAAM,QAAI,mBAAAA,SAAM,aAAa;AAE7B,IAAM,kBAAc;AAAA,MAChB;AAAA,IACI,CAAC,EAAC,SAAS,gBAAgB,MAAM,QAAO,GAAG,QAAQ;AAC/C,YAAM,EAAC,EAAC,QAAI,6BAAe,UAAU;AACrC,YAAM,EAAC,gBAAgB,eAAe,iBAAgB,QAClD,yBAAW,2CAAqB;AACpC,YAAM,cAAc,UAAU,EAAE,kBAAkB,IAAI,EAAE,WAAW;AAEnE,YAAM,OAAO,UAAU,4BAAe;AAEtC,UAAI,SAAS,6BAAa,MAAM;AAC5B,eACI,6BAAAC,QAAA;AAAA,UAAC;AAAA;AAAA,YACG,MAAK;AAAA,YACL,MAAK;AAAA,YACL;AAAA,YACA;AAAA,YACA,WAAW,EAAE,WAAW,EAAC,KAAI,CAAC;AAAA;AAAA,UAE9B,6BAAAA,QAAA,cAAC,oBAAO,MAAP,MACG,6BAAAA,QAAA,cAAC,QAAK,OAAO,IAAI,QAAQ,IAAI,CACjC;AAAA,UACC,EAAU,kBAAkB;AAAA,QACjC;AAAA,MAER;AAEA,aACI,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACG;AAAA,UACA,WAAW,EAAE,WAAW,EAAC,KAAI,GAAG,gBAAgB;AAAA,UAChD;AAAA,UACA;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN;AAAA,UACA,kBAAkB;AAAA,YACd,iBAAiB;AAAA,UACrB;AAAA;AAAA,MACJ;AAAA,IAER;AAAA,EACJ;AACJ;AAEA,YAAY,cAAc;AAE1B,IAAO,sBAAQ;",
6
6
  "names": ["block", "React"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/Feedback/controls/SuccessPopup.tsx"],
4
- "sourcesContent": ["import React, {RefObject, memo, useContext, useMemo} from 'react';\n\nimport {Popup, useDirection} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport {PopperPosition, useTranslation} from '../../../hooks';\nimport {getPopupPosition} from '../../../utils';\nimport {ControlsLayoutContext} from '../../Controls/ControlsLayout';\nimport {FeedbackView} from '../Feedback';\n\ntype SuccessPopupProps = {\n view: FeedbackView;\n visible: boolean;\n anchor: RefObject<HTMLButtonElement>;\n onOutsideClick: () => void;\n};\n\nconst b = block('dc-feedback');\n\nconst SuccessPopup = memo<SuccessPopupProps>(({visible, anchor, onOutsideClick, view}) => {\n const {t} = useTranslation('feedback');\n const {isVerticalView} = useContext(ControlsLayoutContext);\n const direction = useDirection();\n\n const position = useMemo(() => {\n if (!view || view === FeedbackView.Regular) {\n return getPopupPosition(isVerticalView, direction);\n }\n\n return PopperPosition.RIGHT;\n }, [isVerticalView, view, direction]);\n\n return (\n <Popup\n anchorRef={anchor}\n open={visible}\n onOutsideClick={onOutsideClick}\n contentClassName={b('success-popup', {view})}\n placement={position}\n modifiers={[\n {name: 'preventOverflow', options: {padding: 1, altBoundary: true, altAxis: true}},\n ]}\n >\n <h3 className={b('popup-title')}>{t<string>('success-title')}</h3>\n <p className={b('popup-text')}>{t<string>('success-text')}</p>\n </Popup>\n );\n});\n\nSuccessPopup.displayName = 'FeedbackSuccessPopup';\n\nexport default SuccessPopup;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA0D;AAE1D,mBAAkC;AAClC,yBAAkB;AAElB,mBAA6C;AAC7C,mBAA+B;AAC/B,4BAAoC;AACpC,sBAA2B;AAS3B,IAAM,QAAI,mBAAAA,SAAM,aAAa;AAE7B,IAAM,mBAAe,mBAAwB,CAAC,EAAC,SAAS,QAAQ,gBAAgB,KAAI,MAAM;AACtF,QAAM,EAAC,EAAC,QAAI,6BAAe,UAAU;AACrC,QAAM,EAAC,eAAc,QAAI,yBAAW,2CAAqB;AACzD,QAAM,gBAAY,2BAAa;AAE/B,QAAM,eAAW,sBAAQ,MAAM;AAC3B,QAAI,CAAC,QAAQ,SAAS,6BAAa,SAAS;AACxC,iBAAO,+BAAiB,gBAAgB,SAAS;AAAA,IACrD;AAEA,WAAO,4BAAe;AAAA,EAC1B,GAAG,CAAC,gBAAgB,MAAM,SAAS,CAAC;AAEpC,SACI,6BAAAC,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,MACX,MAAM;AAAA,MACN;AAAA,MACA,kBAAkB,EAAE,iBAAiB,EAAC,KAAI,CAAC;AAAA,MAC3C,WAAW;AAAA,MACX,WAAW;AAAA,QACP,EAAC,MAAM,mBAAmB,SAAS,EAAC,SAAS,GAAG,aAAa,MAAM,SAAS,KAAI,EAAC;AAAA,MACrF;AAAA;AAAA,IAEA,6BAAAA,QAAA,cAAC,QAAG,WAAW,EAAE,aAAa,KAAI,EAAU,eAAe,CAAE;AAAA,IAC7D,6BAAAA,QAAA,cAAC,OAAE,WAAW,EAAE,YAAY,KAAI,EAAU,cAAc,CAAE;AAAA,EAC9D;AAER,CAAC;AAED,aAAa,cAAc;AAE3B,IAAO,uBAAQ;",
4
+ "sourcesContent": ["import React, {RefObject, memo, useContext, useMemo} from 'react';\nimport {Popup, useDirection} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport {PopperPosition, useTranslation} from '../../../hooks';\nimport {getPopupPosition} from '../../../utils';\nimport {ControlsLayoutContext} from '../../Controls/ControlsLayout';\nimport {FeedbackView} from '../Feedback';\n\ntype SuccessPopupProps = {\n view: FeedbackView;\n visible: boolean;\n anchor: RefObject<HTMLButtonElement>;\n onOutsideClick: () => void;\n};\n\nconst b = block('dc-feedback');\n\nconst SuccessPopup = memo<SuccessPopupProps>(({visible, anchor, onOutsideClick, view}) => {\n const {t} = useTranslation('feedback');\n const {isVerticalView} = useContext(ControlsLayoutContext);\n const direction = useDirection();\n\n const position = useMemo(() => {\n if (!view || view === FeedbackView.Regular) {\n return getPopupPosition(isVerticalView, direction);\n }\n\n return PopperPosition.RIGHT;\n }, [isVerticalView, view, direction]);\n\n return (\n <Popup\n anchorRef={anchor}\n open={visible}\n onOutsideClick={onOutsideClick}\n contentClassName={b('success-popup', {view})}\n placement={position}\n modifiers={[\n {name: 'preventOverflow', options: {padding: 1, altBoundary: true, altAxis: true}},\n ]}\n >\n <h3 className={b('popup-title')}>{t<string>('success-title')}</h3>\n <p className={b('popup-text')}>{t<string>('success-text')}</p>\n </Popup>\n );\n});\n\nSuccessPopup.displayName = 'FeedbackSuccessPopup';\n\nexport default SuccessPopup;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA0D;AAC1D,mBAAkC;AAClC,yBAAkB;AAElB,mBAA6C;AAC7C,mBAA+B;AAC/B,4BAAoC;AACpC,sBAA2B;AAS3B,IAAM,QAAI,mBAAAA,SAAM,aAAa;AAE7B,IAAM,mBAAe,mBAAwB,CAAC,EAAC,SAAS,QAAQ,gBAAgB,KAAI,MAAM;AACtF,QAAM,EAAC,EAAC,QAAI,6BAAe,UAAU;AACrC,QAAM,EAAC,eAAc,QAAI,yBAAW,2CAAqB;AACzD,QAAM,gBAAY,2BAAa;AAE/B,QAAM,eAAW,sBAAQ,MAAM;AAC3B,QAAI,CAAC,QAAQ,SAAS,6BAAa,SAAS;AACxC,iBAAO,+BAAiB,gBAAgB,SAAS;AAAA,IACrD;AAEA,WAAO,4BAAe;AAAA,EAC1B,GAAG,CAAC,gBAAgB,MAAM,SAAS,CAAC;AAEpC,SACI,6BAAAC,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,MACX,MAAM;AAAA,MACN;AAAA,MACA,kBAAkB,EAAE,iBAAiB,EAAC,KAAI,CAAC;AAAA,MAC3C,WAAW;AAAA,MACX,WAAW;AAAA,QACP,EAAC,MAAM,mBAAmB,SAAS,EAAC,SAAS,GAAG,aAAa,MAAM,SAAS,KAAI,EAAC;AAAA,MACrF;AAAA;AAAA,IAEA,6BAAAA,QAAA,cAAC,QAAG,WAAW,EAAE,aAAa,KAAI,EAAU,eAAe,CAAE;AAAA,IAC7D,6BAAAA,QAAA,cAAC,OAAE,WAAW,EAAE,YAAY,KAAI,EAAU,cAAc,CAAE;AAAA,EAC9D;AAER,CAAC;AAED,aAAa,cAAc;AAE3B,IAAO,uBAAQ;",
6
6
  "names": ["block", "React"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/components/Mark/home/runner/work/components/components/src/components/Mark/Mark.scss", "../../../../src/components/Mark/%3Cinput%20css%20yMXmSo%3E"],
3
+ "sources": ["../../../../src/components/Mark/home/runner/work/components/components/src/components/Mark/Mark.scss", "../../../../src/components/Mark/%3Cinput%20css%20kc4EtK%3E"],
4
4
  "sourcesContent": [".dc-mark {\n display: inline-block;\n font-weight: bold;\n line-height: 1;\n\n &_color {\n &_blue {\n color: #67b0f8;\n }\n\n &_green {\n color: #56bd67;\n }\n }\n\n &_size {\n &_s {\n font-size: 10px;\n letter-spacing: 0.25px;\n }\n\n &_m {\n font-size: 12px;\n letter-spacing: 0.3px;\n }\n }\n}\n", ".dc-mark {\n display: inline-block;\n font-weight: bold;\n line-height: 1;\n}\n.dc-mark_color_blue {\n color: #67b0f8;\n}\n.dc-mark_color_green {\n color: #56bd67;\n}\n.dc-mark_size_s {\n font-size: 10px;\n letter-spacing: 0.25px;\n}\n.dc-mark_size_m {\n font-size: 12px;\n letter-spacing: 0.3px;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL01hcmsiLCJzb3VyY2VzIjpbIk1hcmsuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJO0VBQ0E7RUFDQTs7QUFHSTtFQUNJOztBQUdKO0VBQ0k7O0FBS0o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7RUFDQSIsInNvdXJjZXNDb250ZW50IjpbIi5kYy1tYXJrIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICAmX2NvbG9yIHtcbiAgICAgICAgJl9ibHVlIHtcbiAgICAgICAgICAgIGNvbG9yOiAjNjdiMGY4O1xuICAgICAgICB9XG5cbiAgICAgICAgJl9ncmVlbiB7XG4gICAgICAgICAgICBjb2xvcjogIzU2YmQ2NztcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfc2l6ZSB7XG4gICAgICAgICZfcyB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4yNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJl9tIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjNweDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ== */"],
5
5
  "mappings": ";AAAA,CAAA;AACI,WAAA;AACA,eAAA;AACA,eAAA;ACCJ;ADEQ,CAAA;AACI,SAAA;ACAZ;ADGQ,CAAA;AACI,SAAA;ACDZ;ADMQ,CAAA;AACI,aAAA;AACA,kBAAA;ACJZ;ADOQ,CAAA;AACI,aAAA;AACA,kBAAA;ACLZ;",
6
6
  "names": []
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/Mark/Mark.tsx"],
4
- "sourcesContent": ["import React from 'react';\n\nimport block from 'bem-cn-lite';\n\nimport './Mark.scss';\n\nconst b = block('dc-mark');\n\nexport type MarkColor = 'blue' | 'green';\n\nexport interface MarkProps {\n text: string;\n color?: MarkColor;\n size?: 's' | 'm';\n className?: string;\n}\n\nexport const Mark: React.FC<MarkProps> = ({text, color = 'blue', size = 's', className}) => {\n return <span className={b({color, size}, className)}>{text.toUpperCase()}</span>;\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAElB,yBAAkB;AAElB,kBAAO;AAEP,IAAM,QAAI,mBAAAA,SAAM,SAAS;AAWlB,IAAM,OAA4B,CAAC,EAAC,MAAM,QAAQ,QAAQ,OAAO,KAAK,UAAS,MAAM;AACxF,SAAO,6BAAAC,QAAA,cAAC,UAAK,WAAW,EAAE,EAAC,OAAO,KAAI,GAAG,SAAS,KAAI,KAAK,YAAY,CAAE;AAC7E;",
4
+ "sourcesContent": ["import React from 'react';\nimport block from 'bem-cn-lite';\n\nimport './Mark.scss';\n\nconst b = block('dc-mark');\n\nexport type MarkColor = 'blue' | 'green';\n\nexport interface MarkProps {\n text: string;\n color?: MarkColor;\n size?: 's' | 'm';\n className?: string;\n}\n\nexport const Mark: React.FC<MarkProps> = ({text, color = 'blue', size = 's', className}) => {\n return <span className={b({color, size}, className)}>{text.toUpperCase()}</span>;\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAClB,yBAAkB;AAElB,kBAAO;AAEP,IAAM,QAAI,mBAAAA,SAAM,SAAS;AAWlB,IAAM,OAA4B,CAAC,EAAC,MAAM,QAAQ,QAAQ,OAAO,KAAK,UAAS,MAAM;AACxF,SAAO,6BAAAC,QAAA,cAAC,UAAK,WAAW,EAAE,EAAC,OAAO,KAAI,GAAG,SAAS,KAAI,KAAK,YAAY,CAAE;AAC7E;",
6
6
  "names": ["block", "React"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/components/MiniToc/home/runner/work/components/components/src/components/MiniToc/MiniToc.scss", "../../../../src/components/MiniToc/home/runner/work/components/components/src/styles/mixins.scss", "../../../../src/components/MiniToc/%3Cinput%20css%20lF8Fp4%3E"],
4
- "sourcesContent": ["@import '../../styles/variables';\n@import '../../styles/mixins';\n\n.dc-mini-toc {\n $class: &;\n\n &__title {\n @include text-size(body-2);\n font-weight: 500;\n color: var(--g-color-text-primary);\n margin-bottom: 12px;\n margin-top: 0;\n }\n\n &__sections {\n @include reset-list-style();\n\n height: calc(\n 100vh - var(--dc-header-height, #{$headerHeight}) - #{$miniTocOffset} - var(--dc-subheader-height)\n );\n overflow-y: auto;\n overflow-x: hidden;\n }\n\n &__section {\n display: block;\n\n & > #{$class}__section-link {\n border-left-color: var(--g-color-line-generic);\n\n @include focusable(-2px);\n }\n\n &-link {\n display: flex;\n align-items: center;\n padding: 6px 6px 6px 12px;\n min-height: 28px;\n\n color: var(--g-color-text-secondary);\n border-left: 2px solid transparent;\n text-decoration: none;\n\n &:hover {\n color: var(--g-color-text-complementary);\n }\n }\n\n &_child {\n #{$class}__section-link {\n padding-left: 25px;\n }\n }\n\n &_active > #{$class}__section-link {\n color: var(--g-color-text-primary);\n border-left-color: var(--g-color-text-primary);\n }\n }\n}\n", "@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", ".dc-mini-toc__title {\n font-size: var(--g-text-body-2-font-size);\n line-height: var(--g-text-body-2-line-height);\n font-weight: 500;\n color: var(--g-color-text-primary);\n margin-bottom: 12px;\n margin-top: 0;\n}\n.dc-mini-toc__sections {\n margin: 0;\n padding: 0;\n list-style: none;\n height: calc(\n 100vh - var(--dc-header-height, 0px) - 56px - var(--dc-subheader-height)\n );\n overflow-y: auto;\n overflow-x: hidden;\n}\n.dc-mini-toc__section {\n display: block;\n}\n.dc-mini-toc__section > .dc-mini-toc__section-link {\n border-left-color: var(--g-color-line-generic);\n}\n.dc-mini-toc__section > .dc-mini-toc__section-link:focus {\n outline: 2px solid var(--g-color-line-focus);\n outline-offset: -2px;\n}\n.dc-mini-toc__section > .dc-mini-toc__section-link:focus:not(:focus-visible) {\n outline: 0;\n}\n.dc-mini-toc__section-link {\n display: flex;\n align-items: center;\n padding: 6px 6px 6px 12px;\n min-height: 28px;\n color: var(--g-color-text-secondary);\n border-left: 2px solid transparent;\n text-decoration: none;\n}\n.dc-mini-toc__section-link:hover {\n color: var(--g-color-text-complementary);\n}\n.dc-mini-toc__section_child .dc-mini-toc__section-link {\n padding-left: 25px;\n}\n.dc-mini-toc__section_active > .dc-mini-toc__section-link {\n color: var(--g-color-text-primary);\n border-left-color: var(--g-color-text-primary);\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL01pbmlUb2MiLCJzb3VyY2VzIjpbIk1pbmlUb2Muc2NzcyIsIi4uLy4uL3N0eWxlcy9taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNSTtFQ0hBO0VBQ0E7RURJSTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQ05BO0VBQ0E7RUFDQTtFRE9JO0FBQUE7QUFBQTtFQUdBO0VBQ0E7O0FBR0o7RUFDSTs7QUFFQTtFQUNJOztBQ0tKO0VBQ0k7RUFDQSxnQkRMbUI7O0FDT3ZCO0VBQ0k7O0FETEo7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJOztBQUtKO0VBQ0k7O0FBSVI7RUFDSTtFQUNBIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vc3R5bGVzL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICcuLi8uLi9zdHlsZXMvbWl4aW5zJztcblxuLmRjLW1pbmktdG9jIHtcbiAgICAkY2xhc3M6ICY7XG5cbiAgICAmX190aXRsZSB7XG4gICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTIpO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cblxuICAgICZfX3NlY3Rpb25zIHtcbiAgICAgICAgQGluY2x1ZGUgcmVzZXQtbGlzdC1zdHlsZSgpO1xuXG4gICAgICAgIGhlaWdodDogY2FsYyhcbiAgICAgICAgICAgIDEwMHZoIC0gdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3skaGVhZGVySGVpZ2h0fSkgLSAjeyRtaW5pVG9jT2Zmc2V0fSAtIHZhcigtLWRjLXN1YmhlYWRlci1oZWlnaHQpXG4gICAgICAgICk7XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICB9XG5cbiAgICAmX19zZWN0aW9uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgJiA+ICN7JGNsYXNzfV9fc2VjdGlvbi1saW5rIHtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1nLWNvbG9yLWxpbmUtZ2VuZXJpYyk7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGZvY3VzYWJsZSgtMnB4KTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtbGluayB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIHBhZGRpbmc6IDZweCA2cHggNnB4IDEycHg7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiAyOHB4O1xuXG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LWNvbXBsZW1lbnRhcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJl9jaGlsZCB7XG4gICAgICAgICAgICAjeyRjbGFzc31fX3NlY3Rpb24tbGluayB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAyNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJl9hY3RpdmUgPiAjeyRjbGFzc31fX3NlY3Rpb24tbGluayB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpbXBvcnQgJy4vdmFyaWFibGVzJztcblxuQG1peGluIHRleHQtc2l6ZSgkbmFtZSkge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LSN7JG5hbWV9LWZvbnQtc2l6ZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC0jeyRuYW1lfS1saW5lLWhlaWdodCk7XG59XG5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlKCkge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbkBtaXhpbiBmaXhBbmNob3JQb3NpdGlvbigkb2Zmc2V0OiAwcHgpIHtcbiAgICBwYWRkaW5nLXRvcDogY2FsYyh2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XG4gICAgbWFyZ2luLXRvcDogY2FsYygjeyRvZmZzZXR9IC0gdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3skaGVhZGVySGVpZ2h0fSkpO1xufVxuXG5AbWl4aW4gcmVzZXQtbGluay1zdHlsZSgpIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbkBtaXhpbiBpc2xhbmRzLWZvY3VzKCkge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAudXRpbGl0eWZvY3VzICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgI2ZmZGI0ZDtcbiAgICB9XG59XG5cbkBtaXhpbiBmb2N1c2FibGUoJG9mZnNldDogMCwgJG1vZGU6ICdvdXRsaW5lJykge1xuICAgIEBpZiAkbW9kZSA9PSAnb3V0bGluZScge1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1nLWNvbG9yLWxpbmUtZm9jdXMpO1xuICAgICAgICAgICAgb3V0bGluZS1vZmZzZXQ6ICRvZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgJjpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgICAgIG91dGxpbmU6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJG1vZGUgPT0gJ2JveC1zaGFkb3cnIHtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZy1jb2xvci1saW5lLWZvY3VzKTtcbiAgICAgICAgICAgIG91dGxpbmU6IDA7XG4gICAgICAgIH1cbiAgICAgICAgJjpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiBsaW5rKCkge1xuICAgIEBpbmNsdWRlIGlzbGFuZHMtZm9jdXMoKTtcbiAgICBAaW5jbHVkZSBmb2N1c2FibGUoMCwgJ2JveC1zaGFkb3cnKTtcblxuICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtbGluayk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1nLWZvY3VzLWJvcmRlci1yYWRpdXMpO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtbGluay1ob3Zlcik7XG4gICAgfVxufVxuXG5AbWl4aW4gaGVhZGluZzEoKSB7XG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMyk7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XG4gICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTIpO1xuICAgIH1cbn1cblxuQG1peGluIGhlYWRpbmcyKCkge1xuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTEpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbkBtaXhpbiBoZWFkaW5nMygpIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTIpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbkBtaXhpbiBoZWFkaW5nNCgpIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTEpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbkBtaXhpbiBoZWFkaW5nNSgpIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0zKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG5AbWl4aW4gaGVhZGluZzYoKSB7XG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbn1cblxuQG1peGluIGNvbnRyaWJ1dG9ycy10ZXh0KCkge1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbn1cblxuQG1peGluIHRleHQtYm9keS0xKCkge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWJvZHktMS1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xufVxuXG5AbWl4aW4gZGVza3RvcC1vbmx5KCkge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gZGVza3RvcC10YWJsZXQtb25seSgpIHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdzbScpIC0gMSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIG1vYmlsZS10YWJsZXQtb25seSgpIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gbW9iaWxlLW9ubHkoKSB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cbiJdfQ== */"],
5
- "mappings": ";AAMI,CAAA;ACHA,aAAA,IAAA;AACA,eAAA,IAAA;ADII,eAAA;AACA,SAAA,IAAA;AACA,iBAAA;AACA,cAAA;AEJR;AFOI,CAAA;ACNA,UAAA;AACA,WAAA;AACA,cAAA;ADOI,UAAA;AAAA,UAAA;AAGA,cAAA;AACA,cAAA;AEJR;AFOI,CAAA;AACI,WAAA;AELR;AFOQ,CAHJ,qBAGI,EAAA,CAAA;AACI,qBAAA,IAAA;AELZ;ADUQ,CDTJ,qBCSI,EAAA,CDNA,yBCMA;AACI,WAAA,IAAA,MAAA,IAAA;AACA,kBAAA;ACRZ;ADUQ,CDbJ,qBCaI,EAAA,CDVA,yBCUA,MAAA,KAAA;AACI,WAAA;ACRZ;AFGQ,CANA;AAOI,WAAA;AACA,eAAA;AACA,WAAA,IAAA,IAAA,IAAA;AACA,cAAA;AAEA,SAAA,IAAA;AACA,eAAA,IAAA,MAAA;AACA,2BAAA;AAAA,mBAAA;AEFZ;AFIY,CAhBJ,yBAgBI;AACI,SAAA,IAAA;AEFhB;AFOY,CAAA,2BAAA,CAtBJ;AAuBQ,gBAAA;AELhB;AFSQ,CAAA,4BAAA,EAAA,CA3BA;AA4BI,SAAA,IAAA;AACA,qBAAA,IAAA;AEPZ;",
3
+ "sources": ["../../../../src/components/MiniToc/home/runner/work/components/components/src/components/MiniToc/MiniToc.scss", "../../../../src/components/MiniToc/home/runner/work/components/components/src/styles/mixins.scss", "../../../../src/components/MiniToc/%3Cinput%20css%20hCUytl%3E"],
4
+ "sourcesContent": ["@import '../../styles/variables';\n@import '../../styles/mixins';\n\n.dc-mini-toc {\n $class: &;\n\n &__title {\n @include text-size(body-2);\n font-weight: 500;\n color: var(--g-color-text-primary);\n margin-bottom: 12px;\n margin-top: 0;\n }\n\n &__sections {\n @include reset-list-style();\n\n height: calc(\n 100vh - var(--dc-header-height, #{$headerHeight}) - #{$miniTocOffset} - var(--dc-subheader-height)\n );\n overflow-y: auto;\n overflow-x: hidden;\n }\n\n &__section {\n display: block;\n\n & > #{$class}__section-link {\n border-left-color: var(--g-color-line-generic);\n\n @include focusable(-2px);\n }\n\n &-link {\n display: flex;\n align-items: center;\n padding: 6px 6px 6px 12px;\n min-height: 28px;\n\n color: var(--g-color-text-secondary);\n border-left: 2px solid transparent;\n text-decoration: none;\n\n &:hover {\n color: var(--g-color-text-complementary);\n }\n }\n\n &_child {\n #{$class}__section-link {\n padding-left: 25px;\n }\n }\n\n &_active > #{$class}__section-link {\n color: var(--g-color-text-primary);\n border-left-color: var(--g-color-text-primary);\n }\n }\n}\n", "@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", ".dc-mini-toc__title {\n font-size: var(--g-text-body-2-font-size);\n line-height: var(--g-text-body-2-line-height);\n font-weight: 500;\n color: var(--g-color-text-primary);\n margin-bottom: 12px;\n margin-top: 0;\n}\n.dc-mini-toc__sections {\n margin: 0;\n padding: 0;\n list-style: none;\n height: calc(100vh - var(--dc-header-height, 0px) - 56px - var(--dc-subheader-height));\n overflow-y: auto;\n overflow-x: hidden;\n}\n.dc-mini-toc__section {\n display: block;\n}\n.dc-mini-toc__section > .dc-mini-toc__section-link {\n border-left-color: var(--g-color-line-generic);\n}\n.dc-mini-toc__section > .dc-mini-toc__section-link:focus {\n outline: 2px solid var(--g-color-line-focus);\n outline-offset: -2px;\n}\n.dc-mini-toc__section > .dc-mini-toc__section-link:focus:not(:focus-visible) {\n outline: 0;\n}\n.dc-mini-toc__section-link {\n display: flex;\n align-items: center;\n padding: 6px 6px 6px 12px;\n min-height: 28px;\n color: var(--g-color-text-secondary);\n border-left: 2px solid transparent;\n text-decoration: none;\n}\n.dc-mini-toc__section-link:hover {\n color: var(--g-color-text-complementary);\n}\n.dc-mini-toc__section_child .dc-mini-toc__section-link {\n padding-left: 25px;\n}\n.dc-mini-toc__section_active > .dc-mini-toc__section-link {\n color: var(--g-color-text-primary);\n border-left-color: var(--g-color-text-primary);\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL01pbmlUb2MiLCJzb3VyY2VzIjpbIk1pbmlUb2Muc2NzcyIsIi4uLy4uL3N0eWxlcy9taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNSTtFQ0hBO0VBQ0E7RURJSTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQ05BO0VBQ0E7RUFDQTtFRE9JO0VBR0E7RUFDQTs7QUFHSjtFQUNJOztBQUVBO0VBQ0k7O0FDS0o7RUFDSTtFQUNBLGdCRExtQjs7QUNPdkI7RUFDSTs7QURMSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBOztBQUVBO0VBQ0k7O0FBS0o7RUFDSTs7QUFJUjtFQUNJO0VBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi9zdHlsZXMvdmFyaWFibGVzJztcbkBpbXBvcnQgJy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuXG4uZGMtbWluaS10b2Mge1xuICAgICRjbGFzczogJjtcblxuICAgICZfX3RpdGxlIHtcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMik7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuXG4gICAgJl9fc2VjdGlvbnMge1xuICAgICAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlKCk7XG5cbiAgICAgICAgaGVpZ2h0OiBjYWxjKFxuICAgICAgICAgICAgMTAwdmggLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSAtICN7JG1pbmlUb2NPZmZzZXR9IC0gdmFyKC0tZGMtc3ViaGVhZGVyLWhlaWdodClcbiAgICAgICAgKTtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIH1cblxuICAgICZfX3NlY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAmID4gI3skY2xhc3N9X19zZWN0aW9uLWxpbmsge1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLWctY29sb3ItbGluZS1nZW5lcmljKTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgZm9jdXNhYmxlKC0ycHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi1saW5rIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgcGFkZGluZzogNnB4IDZweCA2cHggMTJweDtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDI4cHg7XG5cbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtY29tcGxlbWVudGFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmX2NoaWxkIHtcbiAgICAgICAgICAgICN7JGNsYXNzfV9fc2VjdGlvbi1saW5rIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDI1cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmX2FjdGl2ZSA+ICN7JGNsYXNzfV9fc2VjdGlvbi1saW5rIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGltcG9ydCAnLi92YXJpYWJsZXMnO1xuXG5AbWl4aW4gdGV4dC1zaXplKCRuYW1lKSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtI3skbmFtZX0tZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LSN7JG5hbWV9LWxpbmUtaGVpZ2h0KTtcbn1cblxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUoKSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuQG1peGluIGZpeEFuY2hvclBvc2l0aW9uKCRvZmZzZXQ6IDBweCkge1xuICAgIHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7JGhlYWRlckhlaWdodH0pKTtcbiAgICBtYXJnaW4tdG9wOiBjYWxjKCN7JG9mZnNldH0gLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XG59XG5cbkBtaXhpbiByZXNldC1saW5rLXN0eWxlKCkge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuQG1peGluIGlzbGFuZHMtZm9jdXMoKSB7XG4gICAgb3V0bGluZTogbm9uZTtcblxuICAgIC51dGlsaXR5Zm9jdXMgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAjZmZkYjRkO1xuICAgIH1cbn1cblxuQG1peGluIGZvY3VzYWJsZSgkb2Zmc2V0OiAwLCAkbW9kZTogJ291dGxpbmUnKSB7XG4gICAgQGlmICRtb2RlID09ICdvdXRsaW5lJyB7XG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWctY29sb3ItbGluZS1mb2N1cyk7XG4gICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogJG9mZnNldDtcbiAgICAgICAgfVxuICAgICAgICAmOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkbW9kZSA9PSAnYm94LXNoYWRvdycge1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1nLWNvbG9yLWxpbmUtZm9jdXMpO1xuICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgfVxuICAgICAgICAmOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1peGluIGxpbmsoKSB7XG4gICAgQGluY2x1ZGUgaXNsYW5kcy1mb2N1cygpO1xuICAgIEBpbmNsdWRlIGZvY3VzYWJsZSgwLCAnYm94LXNoYWRvdycpO1xuXG4gICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1saW5rKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWctZm9jdXMtYm9yZGVyLXJhZGl1cyk7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcbiAgICB9XG59XG5cbkBtaXhpbiBoZWFkaW5nMSgpIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0zKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMik7XG4gICAgfVxufVxuXG5AbWl4aW4gaGVhZGluZzIoKSB7XG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMSk7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuQG1peGluIGhlYWRpbmczKCkge1xuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMik7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuQG1peGluIGhlYWRpbmc0KCkge1xuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMSk7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuQG1peGluIGhlYWRpbmc1KCkge1xuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbkBtaXhpbiBoZWFkaW5nNigpIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0zKTtcbiAgICBmb250LXdlaWdodDogNDAwO1xufVxuXG5AbWl4aW4gY29udHJpYnV0b3JzLXRleHQoKSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xufVxuXG5AbWl4aW4gdGV4dC1ib2R5LTEoKSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LTEtbGluZS1oZWlnaHQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1nLXRleHQtYm9keS1mb250LXdlaWdodCk7XG59XG5cbkBtaXhpbiBkZXNrdG9wLW9ubHkoKSB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBkZXNrdG9wLXRhYmxldC1vbmx5KCkge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykgLSAxKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gbW9iaWxlLXRhYmxldC1vbmx5KCkge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBtb2JpbGUtb25seSgpIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdzbScpKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuIl19 */"],
5
+ "mappings": ";AAMI,CAAA;ACHA,aAAA,IAAA;AACA,eAAA,IAAA;ADII,eAAA;AACA,SAAA,IAAA;AACA,iBAAA;AACA,cAAA;AEJR;AFOI,CAAA;ACNA,UAAA;AACA,WAAA;AACA,cAAA;ADOI,UAAA,KAAA,MAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA;AAAA,UAAA,KAAA,MAAA,EAAA,IAAA,kBAAA,EAAA,KAAA,EAAA,KAAA,EAAA,IAAA;AAGA,cAAA;AACA,cAAA;AENR;AFSI,CAAA;AACI,WAAA;AEPR;AFSQ,CAHJ,qBAGI,EAAA,CAAA;AACI,qBAAA,IAAA;AEPZ;ADYQ,CDTJ,qBCSI,EAAA,CDNA,yBCMA;AACI,WAAA,IAAA,MAAA,IAAA;AACA,kBAAA;ACVZ;ADYQ,CDbJ,qBCaI,EAAA,CDVA,yBCUA,MAAA,KAAA;AACI,WAAA;ACVZ;AFKQ,CANA;AAOI,WAAA;AACA,eAAA;AACA,WAAA,IAAA,IAAA,IAAA;AACA,cAAA;AAEA,SAAA,IAAA;AACA,eAAA,IAAA,MAAA;AACA,2BAAA;AAAA,mBAAA;AEJZ;AFMY,CAhBJ,yBAgBI;AACI,SAAA,IAAA;AEJhB;AFSY,CAAA,2BAAA,CAtBJ;AAuBQ,gBAAA;AEPhB;AFWQ,CAAA,4BAAA,EAAA,CA3BA;AA4BI,SAAA,IAAA;AACA,qBAAA,IAAA;AETZ;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/MiniToc/MiniToc.tsx"],
4
- "sourcesContent": ["import React, {memo, useMemo} from 'react';\n\nimport block from 'bem-cn-lite';\n\nimport {useTranslation} from '../../hooks';\nimport {DocHeadingItem, Router} from '../../models';\nimport {Scrollspy} from '../Scrollspy';\n\nimport './MiniToc.scss';\n\nconst b = block('dc-mini-toc');\n\nexport interface MinitocProps {\n headings: DocHeadingItem[];\n router: Router;\n headerHeight?: number;\n onItemClick?: (event: MouseEvent) => void;\n}\n\nexport interface MinitocSectionProps {\n headings: DocHeadingItem[];\n router: Router;\n headerHeight?: number;\n}\n\ninterface FlatHeadingItem {\n title: string;\n href: string;\n isChild: boolean;\n}\n\nfunction getFlatHeadings(items: DocHeadingItem[], isChild = false): FlatHeadingItem[] {\n return items.reduce((result, {href, title, items: subItems}) => {\n return result.concat({title, href, isChild}, getFlatHeadings(subItems || [], true));\n }, [] as FlatHeadingItem[]);\n}\n\nconst MiniToc = memo<MinitocProps>(({headings, router, headerHeight, onItemClick}) => {\n const {t} = useTranslation('mini-toc');\n const flatHeadings = useMemo(() => getFlatHeadings(headings), [headings]);\n const sectionHrefs = useMemo(\n () => flatHeadings.map<string>(({href}) => href, []),\n [flatHeadings],\n );\n\n if (flatHeadings.length === 0) {\n return null;\n }\n\n return (\n <nav className={b()} aria-label={t('article-navigation')}>\n <h2 className={b('title')}>{t<string>('title')}:</h2>\n <Scrollspy\n className={b('sections')}\n currentClassName={b('section', {active: true})}\n items={sectionHrefs}\n router={router}\n headerHeight={headerHeight}\n onSectionClick={onItemClick}\n aria-label={t('description')}\n >\n {flatHeadings.map(({href, title, isChild}) => (\n <li key={href} data-hash={href} className={b('section', {child: isChild})}>\n <a href={href} className={b('section-link')} data-router-shallow>\n {title}\n </a>\n </li>\n ))}\n </Scrollspy>\n </nav>\n );\n});\n\nMiniToc.displayName = 'MiniToc';\n\nexport default MiniToc;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAmC;AAEnC,yBAAkB;AAElB,mBAA6B;AAE7B,uBAAwB;AAExB,qBAAO;AAEP,IAAM,QAAI,mBAAAA,SAAM,aAAa;AAqB7B,SAAS,gBAAgB,OAAyB,UAAU,OAA0B;AAClF,SAAO,MAAM,OAAO,CAAC,QAAQ,EAAC,MAAM,OAAO,OAAO,SAAQ,MAAM;AAC5D,WAAO,OAAO,OAAO,EAAC,OAAO,MAAM,QAAO,GAAG,gBAAgB,YAAY,CAAC,GAAG,IAAI,CAAC;AAAA,EACtF,GAAG,CAAC,CAAsB;AAC9B;AAEA,IAAM,cAAU,mBAAmB,CAAC,EAAC,UAAU,QAAQ,cAAc,YAAW,MAAM;AAClF,QAAM,EAAC,EAAC,QAAI,6BAAe,UAAU;AACrC,QAAM,mBAAe,sBAAQ,MAAM,gBAAgB,QAAQ,GAAG,CAAC,QAAQ,CAAC;AACxE,QAAM,mBAAe;AAAA,IACjB,MAAM,aAAa,IAAY,CAAC,EAAC,KAAI,MAAM,MAAM,CAAC,CAAC;AAAA,IACnD,CAAC,YAAY;AAAA,EACjB;AAEA,MAAI,aAAa,WAAW,GAAG;AAC3B,WAAO;AAAA,EACX;AAEA,SACI,6BAAAC,QAAA,cAAC,SAAI,WAAW,EAAE,GAAG,cAAY,EAAE,oBAAoB,KACnD,6BAAAA,QAAA,cAAC,QAAG,WAAW,EAAE,OAAO,KAAI,EAAU,OAAO,GAAE,GAAC,GAChD,6BAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,WAAW,EAAE,UAAU;AAAA,MACvB,kBAAkB,EAAE,WAAW,EAAC,QAAQ,KAAI,CAAC;AAAA,MAC7C,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB,cAAY,EAAE,aAAa;AAAA;AAAA,IAE1B,aAAa,IAAI,CAAC,EAAC,MAAM,OAAO,QAAO,MACpC,6BAAAA,QAAA,cAAC,QAAG,KAAK,MAAM,aAAW,MAAM,WAAW,EAAE,WAAW,EAAC,OAAO,QAAO,CAAC,KACpE,6BAAAA,QAAA,cAAC,OAAE,MAAY,WAAW,EAAE,cAAc,GAAG,uBAAmB,QAC3D,KACL,CACJ,CACH;AAAA,EACL,CACJ;AAER,CAAC;AAED,QAAQ,cAAc;AAEtB,IAAO,kBAAQ;",
4
+ "sourcesContent": ["import React, {memo, useMemo} from 'react';\nimport block from 'bem-cn-lite';\n\nimport {useTranslation} from '../../hooks';\nimport {DocHeadingItem, Router} from '../../models';\nimport {Scrollspy} from '../Scrollspy';\n\nimport './MiniToc.scss';\n\nconst b = block('dc-mini-toc');\n\nexport interface MinitocProps {\n headings: DocHeadingItem[];\n router: Router;\n headerHeight?: number;\n onItemClick?: (event: MouseEvent) => void;\n}\n\nexport interface MinitocSectionProps {\n headings: DocHeadingItem[];\n router: Router;\n headerHeight?: number;\n}\n\ninterface FlatHeadingItem {\n title: string;\n href: string;\n isChild: boolean;\n}\n\nfunction getFlatHeadings(items: DocHeadingItem[], isChild = false): FlatHeadingItem[] {\n return items.reduce((result, {href, title, items: subItems}) => {\n return result.concat({title, href, isChild}, getFlatHeadings(subItems || [], true));\n }, [] as FlatHeadingItem[]);\n}\n\nconst MiniToc = memo<MinitocProps>(({headings, router, headerHeight, onItemClick}) => {\n const {t} = useTranslation('mini-toc');\n const flatHeadings = useMemo(() => getFlatHeadings(headings), [headings]);\n const sectionHrefs = useMemo(\n () => flatHeadings.map<string>(({href}) => href, []),\n [flatHeadings],\n );\n\n if (flatHeadings.length === 0) {\n return null;\n }\n\n return (\n <nav className={b()} aria-label={t('article-navigation')}>\n <h2 className={b('title')}>{t<string>('title')}:</h2>\n <Scrollspy\n className={b('sections')}\n currentClassName={b('section', {active: true})}\n items={sectionHrefs}\n router={router}\n headerHeight={headerHeight}\n onSectionClick={onItemClick}\n aria-label={t('description')}\n >\n {flatHeadings.map(({href, title, isChild}) => (\n <li key={href} data-hash={href} className={b('section', {child: isChild})}>\n <a href={href} className={b('section-link')} data-router-shallow>\n {title}\n </a>\n </li>\n ))}\n </Scrollspy>\n </nav>\n );\n});\n\nMiniToc.displayName = 'MiniToc';\n\nexport default MiniToc;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAmC;AACnC,yBAAkB;AAElB,mBAA6B;AAE7B,uBAAwB;AAExB,qBAAO;AAEP,IAAM,QAAI,mBAAAA,SAAM,aAAa;AAqB7B,SAAS,gBAAgB,OAAyB,UAAU,OAA0B;AAClF,SAAO,MAAM,OAAO,CAAC,QAAQ,EAAC,MAAM,OAAO,OAAO,SAAQ,MAAM;AAC5D,WAAO,OAAO,OAAO,EAAC,OAAO,MAAM,QAAO,GAAG,gBAAgB,YAAY,CAAC,GAAG,IAAI,CAAC;AAAA,EACtF,GAAG,CAAC,CAAsB;AAC9B;AAEA,IAAM,cAAU,mBAAmB,CAAC,EAAC,UAAU,QAAQ,cAAc,YAAW,MAAM;AAClF,QAAM,EAAC,EAAC,QAAI,6BAAe,UAAU;AACrC,QAAM,mBAAe,sBAAQ,MAAM,gBAAgB,QAAQ,GAAG,CAAC,QAAQ,CAAC;AACxE,QAAM,mBAAe;AAAA,IACjB,MAAM,aAAa,IAAY,CAAC,EAAC,KAAI,MAAM,MAAM,CAAC,CAAC;AAAA,IACnD,CAAC,YAAY;AAAA,EACjB;AAEA,MAAI,aAAa,WAAW,GAAG;AAC3B,WAAO;AAAA,EACX;AAEA,SACI,6BAAAC,QAAA,cAAC,SAAI,WAAW,EAAE,GAAG,cAAY,EAAE,oBAAoB,KACnD,6BAAAA,QAAA,cAAC,QAAG,WAAW,EAAE,OAAO,KAAI,EAAU,OAAO,GAAE,GAAC,GAChD,6BAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACG,WAAW,EAAE,UAAU;AAAA,MACvB,kBAAkB,EAAE,WAAW,EAAC,QAAQ,KAAI,CAAC;AAAA,MAC7C,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB,cAAY,EAAE,aAAa;AAAA;AAAA,IAE1B,aAAa,IAAI,CAAC,EAAC,MAAM,OAAO,QAAO,MACpC,6BAAAA,QAAA,cAAC,QAAG,KAAK,MAAM,aAAW,MAAM,WAAW,EAAE,WAAW,EAAC,OAAO,QAAO,CAAC,KACpE,6BAAAA,QAAA,cAAC,OAAE,MAAY,WAAW,EAAE,cAAc,GAAG,uBAAmB,QAC3D,KACL,CACJ,CACH;AAAA,EACL,CACJ;AAER,CAAC;AAED,QAAQ,cAAc;AAEtB,IAAO,kBAAQ;",
6
6
  "names": ["block", "React"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/components/Paginator/home/runner/work/components/components/src/components/Paginator/Paginator.scss", "../../../../src/components/Paginator/home/runner/work/components/components/src/styles/mixins.scss", "../../../../src/components/Paginator/%3Cinput%20css%205joqHV%3E"],
3
+ "sources": ["../../../../src/components/Paginator/home/runner/work/components/components/src/components/Paginator/Paginator.scss", "../../../../src/components/Paginator/home/runner/work/components/components/src/styles/mixins.scss", "../../../../src/components/Paginator/%3Cinput%20css%20y1rEAz%3E"],
4
4
  "sourcesContent": ["@import '../../styles/variables';\n@import '../../styles/mixins';\n\n.Paginator {\n $block: &;\n\n @include reset-list-style();\n\n display: flex;\n align-items: center;\n\n\n &__item {\n $item: &;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n min-width: 28px;\n min-height: 28px;\n margin: 4px;\n\n color: var(--g-color-text-primary);\n @include text-size(body-1);\n\n &_type {\n &_prev {\n margin: 4px 6px 4px 0;\n\n [dir='rtl'] & {\n transform: rotate(180deg);\n }\n }\n\n &_dots {\n min-width: 0;\n color: var(--g-color-text-secondary);\n }\n\n &_page {\n cursor: pointer;\n border-radius: 14px;\n\n &:hover {\n background: var(--g-color-base-simple-hover);\n }\n\n &#{$item}_active {\n color: var(--g-color-text-light-primary);\n background: var(--g-color-base-brand);\n cursor: default;\n }\n }\n\n &_next {\n margin: 4px 0 4px 6px;\n\n [dir='rtl'] & {\n transform: rotate(180deg);\n }\n }\n }\n }\n}\n", "@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", ".Paginator {\n margin: 0;\n padding: 0;\n list-style: none;\n display: flex;\n align-items: center;\n}\n.Paginator__item {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 28px;\n min-height: 28px;\n margin: 4px;\n color: var(--g-color-text-primary);\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n}\n.Paginator__item_type_prev {\n margin: 4px 6px 4px 0;\n}\n[dir=rtl] .Paginator__item_type_prev {\n transform: rotate(180deg);\n}\n.Paginator__item_type_dots {\n min-width: 0;\n color: var(--g-color-text-secondary);\n}\n.Paginator__item_type_page {\n cursor: pointer;\n border-radius: 14px;\n}\n.Paginator__item_type_page:hover {\n background: var(--g-color-base-simple-hover);\n}\n.Paginator__item_type_page.Paginator__item_active {\n color: var(--g-color-text-light-primary);\n background: var(--g-color-base-brand);\n cursor: default;\n}\n.Paginator__item_type_next {\n margin: 4px 0 4px 6px;\n}\n[dir=rtl] .Paginator__item_type_next {\n transform: rotate(180deg);\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1BhZ2luYXRvciIsInNvdXJjZXMiOlsiUGFnaW5hdG9yLnNjc3MiLCIuLi8uLi9zdHlsZXMvbWl4aW5zLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUNLSTtFQUNBO0VBQ0E7RURGQTtFQUNBOztBQUdBO0VBR0k7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBRUE7RUNwQko7RUFDQTs7QUR1QlE7RUFDSTs7QUFFQTtFQUNJOztBQUlSO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBRUE7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFJUjtFQUNJOztBQUVBO0VBQ0kiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi9zdHlsZXMvdmFyaWFibGVzJztcbkBpbXBvcnQgJy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuXG4uUGFnaW5hdG9yIHtcbiAgICAkYmxvY2s6ICY7XG5cbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlKCk7XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblxuICAgICZfX2l0ZW0ge1xuICAgICAgICAkaXRlbTogJjtcblxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgbWluLXdpZHRoOiAyOHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAyOHB4O1xuICAgICAgICBtYXJnaW46IDRweDtcblxuICAgICAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0xKTtcblxuICAgICAgICAmX3R5cGUge1xuICAgICAgICAgICAgJl9wcmV2IHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDRweCA2cHggNHB4IDA7XG5cbiAgICAgICAgICAgICAgICBbZGlyPSdydGwnXSAmIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfZG90cyB7XG4gICAgICAgICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9wYWdlIHtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTRweDtcblxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nLWNvbG9yLWJhc2Utc2ltcGxlLWhvdmVyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmI3skaXRlbX1fYWN0aXZlIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1saWdodC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZy1jb2xvci1iYXNlLWJyYW5kKTtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9uZXh0IHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDRweCAwIDRweCA2cHg7XG5cbiAgICAgICAgICAgICAgICBbZGlyPSdydGwnXSAmIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaW1wb3J0ICcuL3ZhcmlhYmxlcyc7XG5cbkBtaXhpbiB0ZXh0LXNpemUoJG5hbWUpIHtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC0jeyRuYW1lfS1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtI3skbmFtZX0tbGluZS1oZWlnaHQpO1xufVxuXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSgpIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG5AbWl4aW4gZml4QW5jaG9yUG9zaXRpb24oJG9mZnNldDogMHB4KSB7XG4gICAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3skaGVhZGVySGVpZ2h0fSkpO1xuICAgIG1hcmdpbi10b3A6IGNhbGMoI3skb2Zmc2V0fSAtIHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7JGhlYWRlckhlaWdodH0pKTtcbn1cblxuQG1peGluIHJlc2V0LWxpbmstc3R5bGUoKSB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG5AbWl4aW4gaXNsYW5kcy1mb2N1cygpIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgLnV0aWxpdHlmb2N1cyAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICNmZmRiNGQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZm9jdXNhYmxlKCRvZmZzZXQ6IDAsICRtb2RlOiAnb3V0bGluZScpIHtcbiAgICBAaWYgJG1vZGUgPT0gJ291dGxpbmUnIHtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tZy1jb2xvci1saW5lLWZvY3VzKTtcbiAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAkb2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgICY6Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRtb2RlID09ICdib3gtc2hhZG93JyB7XG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWctY29sb3ItbGluZS1mb2N1cyk7XG4gICAgICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICB9XG4gICAgICAgICY6Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gbGluaygpIHtcbiAgICBAaW5jbHVkZSBpc2xhbmRzLWZvY3VzKCk7XG4gICAgQGluY2x1ZGUgZm9jdXNhYmxlKDAsICdib3gtc2hhZG93Jyk7XG5cbiAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LWxpbmspO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZy1mb2N1cy1ib3JkZXItcmFkaXVzKTtcblxuICAgICY6aG92ZXIsXG4gICAgJjphY3RpdmUge1xuICAgICAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LWxpbmstaG92ZXIpO1xuICAgIH1cbn1cblxuQG1peGluIGhlYWRpbmcxKCkge1xuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTMpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xuICAgICAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0yKTtcbiAgICB9XG59XG5cbkBtaXhpbiBoZWFkaW5nMigpIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0xKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG5AbWl4aW4gaGVhZGluZzMoKSB7XG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGhlYWRlci0yKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG5AbWl4aW4gaGVhZGluZzQoKSB7XG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGhlYWRlci0xKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG5AbWl4aW4gaGVhZGluZzUoKSB7XG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuQG1peGluIGhlYWRpbmc2KCkge1xuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbkBtaXhpbiBjb250cmlidXRvcnMtdGV4dCgpIHtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG59XG5cbkBtaXhpbiB0ZXh0LWJvZHktMSgpIHtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC1ib2R5LTEtZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LWZvbnQtd2VpZ2h0KTtcbn1cblxuQG1peGluIGRlc2t0b3Atb25seSgpIHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIGRlc2t0b3AtdGFibGV0LW9ubHkoKSB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSAtIDEpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBtb2JpbGUtdGFibGV0LW9ubHkoKSB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIG1vYmlsZS1vbmx5KCkge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG4iXX0= */"],
5
5
  "mappings": ";AAGA,CAAA;ACKI,UAAA;AACA,WAAA;AACA,cAAA;ADFA,WAAA;AACA,eAAA;AEHJ;AFMI,CAAA;AAGI,WAAA;AACA,eAAA;AACA,mBAAA;AAEA,aAAA;AACA,cAAA;AACA,UAAA;AAEA,SAAA,IAAA;ACpBJ,aAAA,IAAA;AACA,eAAA,IAAA;ACaJ;AFUY,CAAA;AACI,UAAA,IAAA,IAAA,IAAA;AERhB;AFUgB,CAAA,SAAA,CAHJ;AAIQ,aAAA,OAAA;AERpB;AFYY,CAAA;AACI,aAAA;AACA,SAAA,IAAA;AEVhB;AFaY,CAAA;AACI,UAAA;AACA,iBAAA;AEXhB;AFagB,CAJJ,yBAII;AACI,cAAA,IAAA;AEXpB;AFcgB,CARJ,yBAQI,CAAA;AACI,SAAA,IAAA;AACA,cAAA,IAAA;AACA,UAAA;AEZpB;AFgBY,CAAA;AACI,UAAA,IAAA,EAAA,IAAA;AEdhB;AFgBgB,CAAA,SAAA,CAHJ;AAIQ,aAAA,OAAA;AEdpB;",
6
6
  "names": []
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/Paginator/Paginator.tsx"],
4
- "sourcesContent": ["import React, {ReactNode} from 'react';\n\nimport {ArrowLeft, ArrowRight} from '@gravity-ui/icons';\nimport {Button} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport {useTranslation} from '../../hooks';\n\nimport './Paginator.scss';\n\nconst b = block('Paginator');\n\nconst MOBILE_VISIBLE_PAGES = 1;\nconst DESKTOP_VISIBLE_PAGES = 3;\nconst MAX_VISIBLE_PAGES = 6;\n\nexport interface PaginatorDefaultProps {\n page: number;\n maxPages?: number;\n onPageChange: (page: number) => void;\n}\n\nexport interface PaginatorExtraProps {\n className?: string;\n isMobile?: boolean;\n}\n\nexport interface TotalCountItems {\n totalItems: number;\n itemsPerPage?: number;\n}\n\nexport type PaginatorProps = PaginatorExtraProps & PaginatorDefaultProps & TotalCountItems;\n\ninterface Modifications {\n [name: string]: string | boolean | undefined;\n}\n\ninterface PaginatorItemProps<T> {\n key: T;\n mods: Modifications;\n content: ReactNode;\n onClick?: (key: T) => void;\n}\n\nenum ArrowType {\n Prev = 'prev',\n Next = 'next',\n}\n\nconst Paginator = ({\n page = 1,\n itemsPerPage = 10,\n totalItems,\n maxPages = Infinity,\n className,\n isMobile = false,\n onPageChange,\n}: PaginatorProps) => {\n const {t} = useTranslation('paginator');\n\n const getPagesCount = () => {\n const totalPages = Math.ceil(totalItems / itemsPerPage);\n\n return Math.min(totalPages, maxPages);\n };\n\n const pagesCount = getPagesCount();\n\n if (pagesCount <= 1) {\n return null;\n }\n\n const renderPaginatorItem = <T,>({key, mods, content, onClick}: PaginatorItemProps<T>) => {\n return (\n <li\n key={`page_${key}`}\n className={b('item', mods)}\n onClick={onClick && onClick.bind(this, key)}\n aria-current={mods.active ? 'page' : undefined}\n >\n {content}\n </li>\n );\n };\n\n const handlePageChange = (newPage: number) => {\n if (onPageChange) {\n onPageChange(newPage);\n }\n };\n\n const handleArrowClick = (type: string) => {\n let newPage = page;\n if (type === 'prev' && page > 1) {\n newPage = page - 1;\n } else if (type === 'next' && page < pagesCount) {\n newPage = page + 1;\n }\n if (newPage !== page) {\n handlePageChange(newPage);\n }\n };\n\n const handlePageClick = (index: number) => {\n if (index !== page) {\n handlePageChange(index);\n }\n };\n\n const getPageConfigs = () => {\n const visiblePages = isMobile ? MOBILE_VISIBLE_PAGES : DESKTOP_VISIBLE_PAGES;\n\n const pages = [];\n\n for (let i = 1; i <= pagesCount; i++) {\n if (\n pagesCount <= MAX_VISIBLE_PAGES ||\n i <= visiblePages ||\n i > pagesCount - visiblePages ||\n (i >= page - 1 && i <= page + 1)\n ) {\n pages.push({\n key: i,\n mods: {type: 'page', active: page === i},\n onClick: handlePageClick,\n content: i,\n });\n } else if (pages.length > 0 && pages[pages.length - 1].key !== 'dots') {\n pages.push({\n key: 'dots',\n mods: {type: 'dots'},\n content: '...',\n });\n }\n }\n\n return pages;\n };\n\n const arrowButton = (disable: boolean, type: string) => {\n const label = t(type);\n const Icon = type === 'prev' ? ArrowLeft : ArrowRight;\n\n return (\n <Button\n className={b('icon')}\n size=\"s\"\n view={'flat'}\n disabled={disable}\n extraProps={{\n 'aria-label': label,\n }}\n >\n <Button.Icon>\n <Icon width={16} height={16} />\n </Button.Icon>\n </Button>\n );\n };\n\n const pages = getPageConfigs() as PaginatorItemProps<string>[];\n\n pages.unshift({\n key: ArrowType.Prev,\n mods: {type: 'prev'},\n onClick: handleArrowClick,\n content: arrowButton(page === 1, 'prev'),\n });\n\n pages.push({\n key: ArrowType.Next,\n mods: {type: 'next'},\n onClick: handleArrowClick,\n content: arrowButton(page === pagesCount, 'next'),\n });\n\n return <ul className={b(null, className)}>{pages.map(renderPaginatorItem)}</ul>;\n};\n\nexport default Paginator;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import React, {ReactNode} from 'react';\nimport {ArrowLeft, ArrowRight} from '@gravity-ui/icons';\nimport {Button} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport {useTranslation} from '../../hooks';\n\nimport './Paginator.scss';\n\nconst b = block('Paginator');\n\nconst MOBILE_VISIBLE_PAGES = 1;\nconst DESKTOP_VISIBLE_PAGES = 3;\nconst MAX_VISIBLE_PAGES = 6;\n\nexport interface PaginatorDefaultProps {\n page: number;\n maxPages?: number;\n onPageChange: (page: number) => void;\n}\n\nexport interface PaginatorExtraProps {\n className?: string;\n isMobile?: boolean;\n}\n\nexport interface TotalCountItems {\n totalItems: number;\n itemsPerPage?: number;\n}\n\nexport type PaginatorProps = PaginatorExtraProps & PaginatorDefaultProps & TotalCountItems;\n\ninterface Modifications {\n [name: string]: string | boolean | undefined;\n}\n\ninterface PaginatorItemProps<T> {\n key: T;\n mods: Modifications;\n content: ReactNode;\n onClick?: (key: T) => void;\n}\n\nenum ArrowType {\n Prev = 'prev',\n Next = 'next',\n}\n\nconst Paginator = ({\n page = 1,\n itemsPerPage = 10,\n totalItems,\n maxPages = Infinity,\n className,\n isMobile = false,\n onPageChange,\n}: PaginatorProps) => {\n const {t} = useTranslation('paginator');\n\n const getPagesCount = () => {\n const totalPages = Math.ceil(totalItems / itemsPerPage);\n\n return Math.min(totalPages, maxPages);\n };\n\n const pagesCount = getPagesCount();\n\n if (pagesCount <= 1) {\n return null;\n }\n\n const renderPaginatorItem = <T,>({key, mods, content, onClick}: PaginatorItemProps<T>) => {\n return (\n <li\n key={`page_${key}`}\n className={b('item', mods)}\n onClick={onClick && onClick.bind(this, key)}\n aria-current={mods.active ? 'page' : undefined}\n >\n {content}\n </li>\n );\n };\n\n const handlePageChange = (newPage: number) => {\n if (onPageChange) {\n onPageChange(newPage);\n }\n };\n\n const handleArrowClick = (type: string) => {\n let newPage = page;\n if (type === 'prev' && page > 1) {\n newPage = page - 1;\n } else if (type === 'next' && page < pagesCount) {\n newPage = page + 1;\n }\n if (newPage !== page) {\n handlePageChange(newPage);\n }\n };\n\n const handlePageClick = (index: number) => {\n if (index !== page) {\n handlePageChange(index);\n }\n };\n\n const getPageConfigs = () => {\n const visiblePages = isMobile ? MOBILE_VISIBLE_PAGES : DESKTOP_VISIBLE_PAGES;\n\n const pages = [];\n\n for (let i = 1; i <= pagesCount; i++) {\n if (\n pagesCount <= MAX_VISIBLE_PAGES ||\n i <= visiblePages ||\n i > pagesCount - visiblePages ||\n (i >= page - 1 && i <= page + 1)\n ) {\n pages.push({\n key: i,\n mods: {type: 'page', active: page === i},\n onClick: handlePageClick,\n content: i,\n });\n } else if (pages.length > 0 && pages[pages.length - 1].key !== 'dots') {\n pages.push({\n key: 'dots',\n mods: {type: 'dots'},\n content: '...',\n });\n }\n }\n\n return pages;\n };\n\n const arrowButton = (disable: boolean, type: string) => {\n const label = t(type);\n const Icon = type === 'prev' ? ArrowLeft : ArrowRight;\n\n return (\n <Button\n className={b('icon')}\n size=\"s\"\n view={'flat'}\n disabled={disable}\n extraProps={{\n 'aria-label': label,\n }}\n >\n <Button.Icon>\n <Icon width={16} height={16} />\n </Button.Icon>\n </Button>\n );\n };\n\n const pages = getPageConfigs() as PaginatorItemProps<string>[];\n\n pages.unshift({\n key: ArrowType.Prev,\n mods: {type: 'prev'},\n onClick: handleArrowClick,\n content: arrowButton(page === 1, 'prev'),\n });\n\n pages.push({\n key: ArrowType.Next,\n mods: {type: 'next'},\n onClick: handleArrowClick,\n content: arrowButton(page === pagesCount, 'next'),\n });\n\n return <ul className={b(null, className)}>{pages.map(renderPaginatorItem)}</ul>;\n};\n\nexport default Paginator;\n"],
5
+ "mappings": "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",
6
6
  "names": ["block", "React", "pages"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/Scrollspy/Scrollspy.tsx"],
4
- "sourcesContent": ["import React, {HTMLProps, ReactElement} from 'react';\n\nimport debounce from 'lodash/debounce';\nimport isEqual from 'lodash/isEqual';\nimport scrollIntoView from 'scroll-into-view-if-needed';\n\nimport {Router} from '../../models';\nimport {InnerProps} from '../../utils';\n\ninterface ScrollspyDefaultProps {\n currentClassName: string;\n sectionOffset: number;\n headerHeight: number;\n}\n\nexport interface ScrollspyProps\n extends Partial<ScrollspyDefaultProps>,\n Partial<HTMLProps<HTMLUListElement>> {\n items: string[];\n children: ReactElement[];\n router: Router;\n onSectionClick?: (event: MouseEvent) => void;\n className?: string;\n scrollToListItem?: boolean;\n}\n\ninterface ScrollspyState {\n targetItems: HTMLElement[];\n inViewState: boolean[];\n}\n\ntype ScrollspyInnerProps = InnerProps<ScrollspyProps, ScrollspyDefaultProps>;\n\nexport class Scrollspy extends React.Component<ScrollspyInnerProps, ScrollspyState> {\n static defaultProps: ScrollspyDefaultProps = {\n currentClassName: 'Scrollspy',\n sectionOffset: 20,\n headerHeight: 0,\n };\n\n containerRef = React.createRef<HTMLUListElement>();\n itemRefs = this.props.items.map(() => React.createRef<HTMLDivElement>());\n\n scrollByClick: boolean;\n firstItemIndexInView: number;\n lastItemIndexInView: number;\n\n constructor(props: ScrollspyInnerProps) {\n super(props);\n\n this.state = {\n targetItems: [],\n inViewState: [],\n };\n\n this.scrollByClick = false;\n this.firstItemIndexInView = -1;\n this.lastItemIndexInView = -1;\n }\n\n componentDidMount() {\n this.initItems();\n window.addEventListener('scroll', this.handleScroll);\n\n const containerEl = this.containerRef.current;\n if (containerEl) {\n containerEl.addEventListener('scroll', this.updateScrollValues);\n }\n }\n\n componentDidUpdate(prevProps: Readonly<ScrollspyProps>, prevState: Readonly<ScrollspyState>) {\n const {items, router} = this.props;\n const {inViewState} = this.state;\n\n if (!isEqual(inViewState, prevState.inViewState)) {\n this.scrollToListItem();\n }\n\n if (!isEqual(items, prevProps.items) || prevProps.router.pathname !== router.pathname) {\n this.initItems();\n }\n\n if (router.hash !== prevProps.router.hash) {\n this.pauseScrollHandler();\n this.saveActiveItems(router.hash);\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('scroll', this.handleScroll);\n\n const containerEl = this.containerRef.current;\n if (containerEl) {\n containerEl.removeEventListener('scroll', this.updateScrollValues);\n }\n }\n\n render() {\n const {children, currentClassName, className, ...rest} = this.props;\n const {inViewState} = this.state;\n\n const items = children.map((child, index) => {\n if (!child) {\n return null;\n }\n\n const ChildTag = child.type;\n let childClassNames = child.props.className;\n\n if (inViewState[index] && currentClassName.length > 0) {\n childClassNames += ` ${currentClassName}`;\n\n this.syncScroll(index);\n }\n\n return (\n <ChildTag\n key={child.key}\n className={childClassNames}\n onClick={this.handleSectionClick}\n ref={this.itemRefs[index]}\n aria-current={inViewState[index] ? 'location' : undefined}\n >\n {child.props.children}\n </ChildTag>\n );\n });\n\n return (\n <ul className={className} ref={this.containerRef} {...rest}>\n {items}\n </ul>\n );\n }\n\n private updateFirstItemIndexInView(maxItemsInView: number) {\n this.firstItemIndexInView = Math.max(this.lastItemIndexInView - (maxItemsInView - 1), 0);\n }\n\n private getContainerValues(containerEl: HTMLUListElement) {\n const {children} = this.props;\n\n /* Average values */\n const childHeight = Math.round(containerEl.scrollHeight / children.length);\n const maxItemsInView = Math.round(containerEl.clientHeight / childHeight);\n\n return {childHeight, maxItemsInView};\n }\n\n private updateScrollValues = () => {\n const containerEl = this.containerRef.current;\n\n if (!containerEl) {\n return;\n }\n\n const {childHeight, maxItemsInView} = this.getContainerValues(containerEl);\n this.lastItemIndexInView =\n Math.round(containerEl.scrollTop / childHeight) + maxItemsInView - 1;\n\n this.updateFirstItemIndexInView(maxItemsInView);\n };\n\n private syncScroll(index: number) {\n const {children} = this.props;\n const containerEl = this.containerRef.current;\n\n if (!containerEl) {\n return;\n }\n\n const {childHeight, maxItemsInView} = this.getContainerValues(containerEl);\n\n if (this.lastItemIndexInView === -1) {\n this.lastItemIndexInView = maxItemsInView - 1;\n }\n\n this.updateFirstItemIndexInView(maxItemsInView);\n\n let itemInView = false;\n if (index >= this.lastItemIndexInView) {\n this.lastItemIndexInView = Math.min(index + 1, children.length - 1);\n } else if (index <= this.firstItemIndexInView) {\n this.lastItemIndexInView = Math.max(index + maxItemsInView - 2, maxItemsInView - 1);\n } else {\n itemInView = true;\n }\n\n this.updateFirstItemIndexInView(maxItemsInView);\n\n const endIsNear = index + maxItemsInView / 2 > children.length;\n if (itemInView) {\n return;\n } else if (endIsNear) {\n containerEl.scrollTop = containerEl.scrollHeight;\n } else {\n containerEl.scrollTop = childHeight * this.firstItemIndexInView;\n }\n }\n\n private scrollToListItem = () => {\n if (!this.props.scrollToListItem) {\n return;\n }\n\n let itemIndex = this.state.inViewState.findIndex((isActive) => isActive);\n\n if (itemIndex < 0) {\n itemIndex = 0;\n }\n\n const ref = this.itemRefs[itemIndex] && this.itemRefs[itemIndex].current;\n\n if (ref) {\n scrollIntoView(ref, {\n scrollMode: 'if-needed',\n block: 'nearest',\n inline: 'nearest',\n behavior: 'smooth',\n });\n }\n };\n\n private initItems() {\n const {items} = this.props;\n const targetItems = items\n .map((item) => document.getElementById(item.split('#')[1]))\n .filter(Boolean) as HTMLElement[];\n\n this.setState({targetItems}, this.initSections);\n this.scrollToListItem();\n }\n\n private initSections = () => {\n this.saveActiveItems();\n };\n\n private saveActiveItems(hash?: string) {\n const visibleItems = this.getViewState(hash);\n\n this.setState({inViewState: visibleItems});\n }\n\n private getViewState(hash?: string) {\n const {targetItems, inViewState} = this.state;\n const {headerHeight} = this.props;\n const currentOffset = window.pageYOffset;\n const visibleItemOffset: boolean[] = [];\n let isOneActive = false;\n\n const pureHash = hash && hash.startsWith('#') ? hash.substring(1) : hash;\n\n targetItems.forEach((item, index) => {\n if (!item) {\n return;\n }\n\n const offsetTop = item.getBoundingClientRect().top;\n const isVisibleItem = offsetTop < headerHeight + 1;\n\n if (pureHash) {\n if (pureHash === item.getAttribute('id')) {\n visibleItemOffset.push(true);\n isOneActive = true;\n } else {\n visibleItemOffset.push(false);\n }\n } else if (isVisibleItem) {\n if (visibleItemOffset[index - 1]) {\n visibleItemOffset[index - 1] = false;\n }\n\n visibleItemOffset.push(true);\n isOneActive = true;\n } else {\n visibleItemOffset.push(false);\n }\n });\n\n if (targetItems && targetItems.length && !isOneActive) {\n if (currentOffset < targetItems[0].getBoundingClientRect().top) {\n visibleItemOffset[0] = true;\n isOneActive = true;\n }\n }\n\n return isOneActive ? visibleItemOffset : inViewState;\n }\n\n private handleScroll = () => {\n if (this.scrollByClick) {\n // the end of smooth auto-scroll\n window.removeEventListener('scroll', this.handleScrollDebounced);\n window.addEventListener('scroll', this.handleScroll);\n this.scrollByClick = false;\n }\n this.saveActiveItems();\n };\n\n // eslint-disable-next-line @typescript-eslint/member-ordering, react/sort-comp\n private handleScrollDebounced = debounce(this.handleScroll, 100);\n\n private pauseScrollHandler() {\n // wait for the end of smooth auto-scroll\n this.scrollByClick = true;\n window.removeEventListener('scroll', this.handleScroll);\n window.addEventListener('scroll', this.handleScrollDebounced);\n }\n\n private handleSectionClick = (event: MouseEvent) => {\n const {onSectionClick} = this.props;\n const {target} = event;\n\n if (target && (target as HTMLElement).tagName === 'A') {\n event.stopPropagation();\n this.pauseScrollHandler();\n this.saveActiveItems((target as HTMLAnchorElement).hash);\n\n if (onSectionClick) {\n onSectionClick(event);\n }\n }\n };\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import React, {HTMLProps, ReactElement} from 'react';\nimport debounce from 'lodash/debounce';\nimport isEqual from 'lodash/isEqual';\nimport scrollIntoView from 'scroll-into-view-if-needed';\n\nimport {Router} from '../../models';\nimport {InnerProps} from '../../utils';\n\ninterface ScrollspyDefaultProps {\n currentClassName: string;\n sectionOffset: number;\n headerHeight: number;\n}\n\nexport interface ScrollspyProps\n extends Partial<ScrollspyDefaultProps>,\n Partial<HTMLProps<HTMLUListElement>> {\n items: string[];\n children: ReactElement[];\n router: Router;\n onSectionClick?: (event: MouseEvent) => void;\n className?: string;\n scrollToListItem?: boolean;\n}\n\ninterface ScrollspyState {\n targetItems: HTMLElement[];\n inViewState: boolean[];\n}\n\ntype ScrollspyInnerProps = InnerProps<ScrollspyProps, ScrollspyDefaultProps>;\n\nexport class Scrollspy extends React.Component<ScrollspyInnerProps, ScrollspyState> {\n static defaultProps: ScrollspyDefaultProps = {\n currentClassName: 'Scrollspy',\n sectionOffset: 20,\n headerHeight: 0,\n };\n\n containerRef = React.createRef<HTMLUListElement>();\n itemRefs = this.props.items.map(() => React.createRef<HTMLDivElement>());\n\n scrollByClick: boolean;\n firstItemIndexInView: number;\n lastItemIndexInView: number;\n\n constructor(props: ScrollspyInnerProps) {\n super(props);\n\n this.state = {\n targetItems: [],\n inViewState: [],\n };\n\n this.scrollByClick = false;\n this.firstItemIndexInView = -1;\n this.lastItemIndexInView = -1;\n }\n\n componentDidMount() {\n this.initItems();\n window.addEventListener('scroll', this.handleScroll);\n\n const containerEl = this.containerRef.current;\n if (containerEl) {\n containerEl.addEventListener('scroll', this.updateScrollValues);\n }\n }\n\n componentDidUpdate(prevProps: Readonly<ScrollspyProps>, prevState: Readonly<ScrollspyState>) {\n const {items, router} = this.props;\n const {inViewState} = this.state;\n\n if (!isEqual(inViewState, prevState.inViewState)) {\n this.scrollToListItem();\n }\n\n if (!isEqual(items, prevProps.items) || prevProps.router.pathname !== router.pathname) {\n this.initItems();\n }\n\n if (router.hash !== prevProps.router.hash) {\n this.pauseScrollHandler();\n this.saveActiveItems(router.hash);\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('scroll', this.handleScroll);\n\n const containerEl = this.containerRef.current;\n if (containerEl) {\n containerEl.removeEventListener('scroll', this.updateScrollValues);\n }\n }\n\n render() {\n const {children, currentClassName, className, ...rest} = this.props;\n const {inViewState} = this.state;\n\n const items = children.map((child, index) => {\n if (!child) {\n return null;\n }\n\n const ChildTag = child.type;\n let childClassNames = child.props.className;\n\n if (inViewState[index] && currentClassName.length > 0) {\n childClassNames += ` ${currentClassName}`;\n\n this.syncScroll(index);\n }\n\n return (\n <ChildTag\n key={child.key}\n className={childClassNames}\n onClick={this.handleSectionClick}\n ref={this.itemRefs[index]}\n aria-current={inViewState[index] ? 'location' : undefined}\n >\n {child.props.children}\n </ChildTag>\n );\n });\n\n return (\n <ul className={className} ref={this.containerRef} {...rest}>\n {items}\n </ul>\n );\n }\n\n private updateFirstItemIndexInView(maxItemsInView: number) {\n this.firstItemIndexInView = Math.max(this.lastItemIndexInView - (maxItemsInView - 1), 0);\n }\n\n private getContainerValues(containerEl: HTMLUListElement) {\n const {children} = this.props;\n\n /* Average values */\n const childHeight = Math.round(containerEl.scrollHeight / children.length);\n const maxItemsInView = Math.round(containerEl.clientHeight / childHeight);\n\n return {childHeight, maxItemsInView};\n }\n\n private updateScrollValues = () => {\n const containerEl = this.containerRef.current;\n\n if (!containerEl) {\n return;\n }\n\n const {childHeight, maxItemsInView} = this.getContainerValues(containerEl);\n this.lastItemIndexInView =\n Math.round(containerEl.scrollTop / childHeight) + maxItemsInView - 1;\n\n this.updateFirstItemIndexInView(maxItemsInView);\n };\n\n private syncScroll(index: number) {\n const {children} = this.props;\n const containerEl = this.containerRef.current;\n\n if (!containerEl) {\n return;\n }\n\n const {childHeight, maxItemsInView} = this.getContainerValues(containerEl);\n\n if (this.lastItemIndexInView === -1) {\n this.lastItemIndexInView = maxItemsInView - 1;\n }\n\n this.updateFirstItemIndexInView(maxItemsInView);\n\n let itemInView = false;\n if (index >= this.lastItemIndexInView) {\n this.lastItemIndexInView = Math.min(index + 1, children.length - 1);\n } else if (index <= this.firstItemIndexInView) {\n this.lastItemIndexInView = Math.max(index + maxItemsInView - 2, maxItemsInView - 1);\n } else {\n itemInView = true;\n }\n\n this.updateFirstItemIndexInView(maxItemsInView);\n\n const endIsNear = index + maxItemsInView / 2 > children.length;\n if (itemInView) {\n return;\n } else if (endIsNear) {\n containerEl.scrollTop = containerEl.scrollHeight;\n } else {\n containerEl.scrollTop = childHeight * this.firstItemIndexInView;\n }\n }\n\n private scrollToListItem = () => {\n if (!this.props.scrollToListItem) {\n return;\n }\n\n let itemIndex = this.state.inViewState.findIndex((isActive) => isActive);\n\n if (itemIndex < 0) {\n itemIndex = 0;\n }\n\n const ref = this.itemRefs[itemIndex] && this.itemRefs[itemIndex].current;\n\n if (ref) {\n scrollIntoView(ref, {\n scrollMode: 'if-needed',\n block: 'nearest',\n inline: 'nearest',\n behavior: 'smooth',\n });\n }\n };\n\n private initItems() {\n const {items} = this.props;\n const targetItems = items\n .map((item) => document.getElementById(item.split('#')[1]))\n .filter(Boolean) as HTMLElement[];\n\n this.setState({targetItems}, this.initSections);\n this.scrollToListItem();\n }\n\n private initSections = () => {\n this.saveActiveItems();\n };\n\n private saveActiveItems(hash?: string) {\n const visibleItems = this.getViewState(hash);\n\n this.setState({inViewState: visibleItems});\n }\n\n private getViewState(hash?: string) {\n const {targetItems, inViewState} = this.state;\n const {headerHeight} = this.props;\n const currentOffset = window.pageYOffset;\n const visibleItemOffset: boolean[] = [];\n let isOneActive = false;\n\n const pureHash = hash && hash.startsWith('#') ? hash.substring(1) : hash;\n\n targetItems.forEach((item, index) => {\n if (!item) {\n return;\n }\n\n const offsetTop = item.getBoundingClientRect().top;\n const isVisibleItem = offsetTop < headerHeight + 1;\n\n if (pureHash) {\n if (pureHash === item.getAttribute('id')) {\n visibleItemOffset.push(true);\n isOneActive = true;\n } else {\n visibleItemOffset.push(false);\n }\n } else if (isVisibleItem) {\n if (visibleItemOffset[index - 1]) {\n visibleItemOffset[index - 1] = false;\n }\n\n visibleItemOffset.push(true);\n isOneActive = true;\n } else {\n visibleItemOffset.push(false);\n }\n });\n\n if (targetItems && targetItems.length && !isOneActive) {\n if (currentOffset < targetItems[0].getBoundingClientRect().top) {\n visibleItemOffset[0] = true;\n isOneActive = true;\n }\n }\n\n return isOneActive ? visibleItemOffset : inViewState;\n }\n\n private handleScroll = () => {\n if (this.scrollByClick) {\n // the end of smooth auto-scroll\n window.removeEventListener('scroll', this.handleScrollDebounced);\n window.addEventListener('scroll', this.handleScroll);\n this.scrollByClick = false;\n }\n this.saveActiveItems();\n };\n\n // eslint-disable-next-line @typescript-eslint/member-ordering, react/sort-comp\n private handleScrollDebounced = debounce(this.handleScroll, 100);\n\n private pauseScrollHandler() {\n // wait for the end of smooth auto-scroll\n this.scrollByClick = true;\n window.removeEventListener('scroll', this.handleScroll);\n window.addEventListener('scroll', this.handleScrollDebounced);\n }\n\n private handleSectionClick = (event: MouseEvent) => {\n const {onSectionClick} = this.props;\n const {target} = event;\n\n if (target && (target as HTMLElement).tagName === 'A') {\n event.stopPropagation();\n this.pauseScrollHandler();\n this.saveActiveItems((target as HTMLAnchorElement).hash);\n\n if (onSectionClick) {\n onSectionClick(event);\n }\n }\n };\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["React", "scrollIntoView", "debounce", "isEqual"]
7
7
  }