@gravity-ui/navigation 2.32.0 → 3.0.0-beta-lunory.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 (278) hide show
  1. package/README.md +1 -1
  2. package/build/cjs/components/ActionBar/ActionBar.d.ts +3 -3
  3. package/build/cjs/components/ActionBar/__stories__/ActionBar.stories.d.ts +17 -0
  4. package/build/cjs/components/ActionBar/__stories__/ActionBarShowcase.d.ts +2 -0
  5. package/build/cjs/components/ActionBar/__stories__/ActionBarSingleSection.d.ts +2 -0
  6. package/build/cjs/components/ActionBar/__tests__/helpersPlaywright.d.ts +1 -1
  7. package/build/cjs/components/ActionBar/types.d.ts +1 -1
  8. package/build/cjs/components/AllPagesPanel/i18n/index.d.ts +5 -1
  9. package/build/cjs/components/AsideHeader/AsideHeaderContext.d.ts +1 -1
  10. package/build/cjs/components/AsideHeader/__stories__/AsideHeader.stories.d.ts +18 -0
  11. package/build/cjs/components/AsideHeader/__stories__/AsideHeaderShowcase.d.ts +14 -0
  12. package/build/cjs/components/AsideHeader/__stories__/getAsideHeaderWrapper.d.ts +3 -0
  13. package/build/cjs/components/AsideHeader/__stories__/moc.d.ts +6 -0
  14. package/build/cjs/components/AsideHeader/__tests__/helpersPlaywright.d.ts +1 -1
  15. package/build/cjs/components/AsideHeader/components/index.d.ts +0 -1
  16. package/build/cjs/components/AsideHeader/i18n/index.d.ts +5 -1
  17. package/build/cjs/components/AsideHeader/types.d.ts +3 -4
  18. package/build/cjs/components/CompositeBar/CompositeBar.d.ts +1 -1
  19. package/build/cjs/components/CompositeBar/HighlightedItem/HighlightedItem.d.ts +1 -1
  20. package/build/cjs/components/CompositeBar/Item/Item.d.ts +15 -2
  21. package/build/cjs/components/Drawer/Drawer.d.ts +0 -5
  22. package/build/cjs/components/Drawer/__stories__/DisablePortal.d.ts +3 -0
  23. package/build/cjs/components/Drawer/__stories__/Drawer.stories.d.ts +7 -0
  24. package/build/cjs/components/Drawer/__stories__/DrawerShowcase.d.ts +3 -0
  25. package/build/cjs/components/Drawer/__stories__/HideVeil.d.ts +3 -0
  26. package/build/cjs/components/Drawer/__stories__/ResizableItem.d.ts +3 -0
  27. package/build/cjs/components/Drawer/__stories__/moc.d.ts +2 -0
  28. package/build/cjs/components/Drawer/__tests__/helpersPlaywright.d.ts +1 -1
  29. package/build/cjs/components/Drawer/utils.d.ts +2 -2
  30. package/build/cjs/components/Footer/desktop/__stories__/Footer.stories.d.ts +8 -0
  31. package/build/cjs/components/Footer/desktop/__stories__/FooterShowcase.d.ts +4 -0
  32. package/build/cjs/components/Footer/desktop/__stories__/moc.d.ts +3 -0
  33. package/build/cjs/components/Footer/desktop/__tests__/helpersPlaywright.d.ts +1 -1
  34. package/build/cjs/components/Footer/mobile/__stories__/MobileFooter.stories.d.ts +8 -0
  35. package/build/cjs/components/Footer/mobile/__stories__/MobileFooterShowcase.d.ts +4 -0
  36. package/build/cjs/components/Footer/mobile/__stories__/moc.d.ts +3 -0
  37. package/build/cjs/components/Footer/mobile/__tests__/helpersPlaywright.d.ts +1 -1
  38. package/build/cjs/components/FooterItem/__stories__/FooterItem.stories.d.ts +6 -0
  39. package/build/cjs/components/FooterItem/__tests__/helpersPlaywright.d.ts +1 -1
  40. package/build/cjs/components/HotkeysPanel/HotkeysPanel.d.ts +1 -3
  41. package/build/cjs/components/HotkeysPanel/__stories__/HotkeysPanel.stories.d.ts +5 -0
  42. package/build/cjs/components/HotkeysPanel/__stories__/HotkeysPanelShowcase.d.ts +6 -0
  43. package/build/cjs/components/HotkeysPanel/__stories__/moc.d.ts +2 -0
  44. package/build/cjs/components/HotkeysPanel/__tests__/helpersPlaywright.d.ts +1 -1
  45. package/build/cjs/components/Logo/Logo.d.ts +1 -1
  46. package/build/cjs/components/Logo/__stories__/Logo.stories.d.ts +6 -0
  47. package/build/cjs/components/Logo/__tests__/helpersPlaywright.d.ts +1 -1
  48. package/build/cjs/components/MobileHeader/BurgerMenu/__stories__/BurgerMenu.stories.d.ts +6 -0
  49. package/build/cjs/components/MobileHeader/BurgerMenu/__stories__/moc.d.ts +2 -0
  50. package/build/cjs/components/MobileHeader/BurgerMenu/__tests__/helpersPlaywright.d.ts +1 -1
  51. package/build/cjs/components/MobileHeader/MobileHeader.d.ts +2 -1
  52. package/build/cjs/components/MobileHeader/OverlapPanel/__stories__/OverlapPanel.stories.d.ts +6 -0
  53. package/build/cjs/components/MobileHeader/OverlapPanel/__stories__/moc.d.ts +2 -0
  54. package/build/cjs/components/MobileHeader/OverlapPanel/__tests__/helpersPlaywright.d.ts +1 -1
  55. package/build/cjs/components/MobileHeader/__stories__/MobileHeader.stories.d.ts +4 -0
  56. package/build/cjs/components/MobileHeader/__stories__/MobileHeaderShowcase.d.ts +3 -0
  57. package/build/cjs/components/MobileHeader/__stories__/moc.d.ts +1 -0
  58. package/build/cjs/components/MobileHeader/__tests__/helpersPlaywright.d.ts +1 -1
  59. package/build/cjs/components/MobileHeader/i18n/index.d.ts +5 -1
  60. package/build/cjs/components/MobileHeader/types.d.ts +0 -1
  61. package/build/cjs/components/MobileLogo/__stories__/MobileLogo.stories.d.ts +6 -0
  62. package/build/cjs/components/MobileLogo/__tests__/helpersPlaywright.d.ts +1 -1
  63. package/build/cjs/components/Settings/Settings.d.ts +1 -3
  64. package/build/cjs/components/Settings/__stories__/Settings.stories.d.ts +5 -0
  65. package/build/cjs/components/Settings/__stories__/SettingsDemo.d.ts +14 -0
  66. package/build/cjs/components/Settings/__stories__/SettingsMobileDemo.d.ts +8 -0
  67. package/build/cjs/components/Settings/__tests__/helpersPlaywright.d.ts +1 -1
  68. package/build/cjs/components/Settings/collect-settings.d.ts +0 -2
  69. package/build/cjs/components/Settings/i18n/index.d.ts +5 -1
  70. package/build/cjs/components/Title/i18n/index.d.ts +5 -1
  71. package/build/cjs/components/TopAlert/TopAlert.d.ts +10 -0
  72. package/build/cjs/components/TopAlert/index.d.ts +1 -0
  73. package/build/cjs/components/TopAlert/useTopAlertHeight.d.ts +10 -0
  74. package/build/cjs/components/types.d.ts +9 -5
  75. package/build/cjs/hooks/useForwardRef.d.ts +1 -1
  76. package/build/cjs/index-HbnaVyaN.js +69 -0
  77. package/build/cjs/index-HbnaVyaN.js.map +1 -0
  78. package/build/cjs/index-j1vouNtm.js +5734 -0
  79. package/build/cjs/index-j1vouNtm.js.map +1 -0
  80. package/build/cjs/index.js +32 -194
  81. package/build/cjs/index.js.map +1 -1
  82. package/build/esm/components/ActionBar/ActionBar.d.ts +3 -3
  83. package/build/esm/components/ActionBar/__stories__/ActionBar.stories.d.ts +17 -0
  84. package/build/esm/components/ActionBar/__stories__/ActionBarShowcase.d.ts +2 -0
  85. package/build/esm/components/ActionBar/__stories__/ActionBarSingleSection.d.ts +2 -0
  86. package/build/esm/components/ActionBar/__tests__/helpersPlaywright.d.ts +1 -1
  87. package/build/esm/components/ActionBar/types.d.ts +1 -1
  88. package/build/esm/components/AllPagesPanel/i18n/index.d.ts +5 -1
  89. package/build/esm/components/AsideHeader/AsideHeaderContext.d.ts +1 -1
  90. package/build/esm/components/AsideHeader/__stories__/AsideHeader.stories.d.ts +18 -0
  91. package/build/esm/components/AsideHeader/__stories__/AsideHeaderShowcase.d.ts +14 -0
  92. package/build/esm/components/AsideHeader/__stories__/getAsideHeaderWrapper.d.ts +3 -0
  93. package/build/esm/components/AsideHeader/__stories__/moc.d.ts +6 -0
  94. package/build/esm/components/AsideHeader/__tests__/helpersPlaywright.d.ts +1 -1
  95. package/build/esm/components/AsideHeader/components/index.d.ts +0 -1
  96. package/build/esm/components/AsideHeader/i18n/index.d.ts +5 -1
  97. package/build/esm/components/AsideHeader/types.d.ts +3 -4
  98. package/build/esm/components/CompositeBar/CompositeBar.d.ts +1 -1
  99. package/build/esm/components/CompositeBar/HighlightedItem/HighlightedItem.d.ts +1 -1
  100. package/build/esm/components/CompositeBar/Item/Item.d.ts +15 -2
  101. package/build/esm/components/Drawer/Drawer.d.ts +0 -5
  102. package/build/esm/components/Drawer/__stories__/DisablePortal.d.ts +3 -0
  103. package/build/esm/components/Drawer/__stories__/Drawer.stories.d.ts +7 -0
  104. package/build/esm/components/Drawer/__stories__/DrawerShowcase.d.ts +3 -0
  105. package/build/esm/components/Drawer/__stories__/HideVeil.d.ts +3 -0
  106. package/build/esm/components/Drawer/__stories__/ResizableItem.d.ts +3 -0
  107. package/build/esm/components/Drawer/__stories__/moc.d.ts +2 -0
  108. package/build/esm/components/Drawer/__tests__/helpersPlaywright.d.ts +1 -1
  109. package/build/esm/components/Drawer/utils.d.ts +2 -2
  110. package/build/esm/components/Footer/desktop/__stories__/Footer.stories.d.ts +8 -0
  111. package/build/esm/components/Footer/desktop/__stories__/FooterShowcase.d.ts +4 -0
  112. package/build/esm/components/Footer/desktop/__stories__/moc.d.ts +3 -0
  113. package/build/esm/components/Footer/desktop/__tests__/helpersPlaywright.d.ts +1 -1
  114. package/build/esm/components/Footer/mobile/__stories__/MobileFooter.stories.d.ts +8 -0
  115. package/build/esm/components/Footer/mobile/__stories__/MobileFooterShowcase.d.ts +4 -0
  116. package/build/esm/components/Footer/mobile/__stories__/moc.d.ts +3 -0
  117. package/build/esm/components/Footer/mobile/__tests__/helpersPlaywright.d.ts +1 -1
  118. package/build/esm/components/FooterItem/__stories__/FooterItem.stories.d.ts +6 -0
  119. package/build/esm/components/FooterItem/__tests__/helpersPlaywright.d.ts +1 -1
  120. package/build/esm/components/HotkeysPanel/HotkeysPanel.d.ts +1 -3
  121. package/build/esm/components/HotkeysPanel/__stories__/HotkeysPanel.stories.d.ts +5 -0
  122. package/build/esm/components/HotkeysPanel/__stories__/HotkeysPanelShowcase.d.ts +6 -0
  123. package/build/esm/components/HotkeysPanel/__stories__/moc.d.ts +2 -0
  124. package/build/esm/components/HotkeysPanel/__tests__/helpersPlaywright.d.ts +1 -1
  125. package/build/esm/components/Logo/Logo.d.ts +1 -1
  126. package/build/esm/components/Logo/__stories__/Logo.stories.d.ts +6 -0
  127. package/build/esm/components/Logo/__tests__/helpersPlaywright.d.ts +1 -1
  128. package/build/esm/components/MobileHeader/BurgerMenu/__stories__/BurgerMenu.stories.d.ts +6 -0
  129. package/build/esm/components/MobileHeader/BurgerMenu/__stories__/moc.d.ts +2 -0
  130. package/build/esm/components/MobileHeader/BurgerMenu/__tests__/helpersPlaywright.d.ts +1 -1
  131. package/build/esm/components/MobileHeader/MobileHeader.d.ts +2 -1
  132. package/build/esm/components/MobileHeader/OverlapPanel/__stories__/OverlapPanel.stories.d.ts +6 -0
  133. package/build/esm/components/MobileHeader/OverlapPanel/__stories__/moc.d.ts +2 -0
  134. package/build/esm/components/MobileHeader/OverlapPanel/__tests__/helpersPlaywright.d.ts +1 -1
  135. package/build/esm/components/MobileHeader/__stories__/MobileHeader.stories.d.ts +4 -0
  136. package/build/esm/components/MobileHeader/__stories__/MobileHeaderShowcase.d.ts +3 -0
  137. package/build/esm/components/MobileHeader/__stories__/moc.d.ts +1 -0
  138. package/build/esm/components/MobileHeader/__tests__/helpersPlaywright.d.ts +1 -1
  139. package/build/esm/components/MobileHeader/i18n/index.d.ts +5 -1
  140. package/build/esm/components/MobileHeader/types.d.ts +0 -1
  141. package/build/esm/components/MobileLogo/__stories__/MobileLogo.stories.d.ts +6 -0
  142. package/build/esm/components/MobileLogo/__tests__/helpersPlaywright.d.ts +1 -1
  143. package/build/esm/components/Settings/Settings.d.ts +1 -3
  144. package/build/esm/components/Settings/__stories__/Settings.stories.d.ts +5 -0
  145. package/build/esm/components/Settings/__stories__/SettingsDemo.d.ts +14 -0
  146. package/build/esm/components/Settings/__stories__/SettingsMobileDemo.d.ts +8 -0
  147. package/build/esm/components/Settings/__tests__/helpersPlaywright.d.ts +1 -1
  148. package/build/esm/components/Settings/collect-settings.d.ts +0 -2
  149. package/build/esm/components/Settings/i18n/index.d.ts +5 -1
  150. package/build/esm/components/Title/i18n/index.d.ts +5 -1
  151. package/build/esm/components/TopAlert/TopAlert.d.ts +10 -0
  152. package/build/esm/components/TopAlert/index.d.ts +1 -0
  153. package/build/esm/components/TopAlert/useTopAlertHeight.d.ts +10 -0
  154. package/build/esm/components/types.d.ts +9 -5
  155. package/build/esm/hooks/useForwardRef.d.ts +1 -1
  156. package/build/esm/index-C7O46WxY.js +5689 -0
  157. package/build/esm/index-C7O46WxY.js.map +1 -0
  158. package/build/esm/index-DruPZQaT.js +67 -0
  159. package/build/esm/index-DruPZQaT.js.map +1 -0
  160. package/build/esm/index.js +6 -167
  161. package/build/esm/index.js.map +1 -1
  162. package/package.json +48 -45
  163. package/build/cjs/ActionBar-3c6cdf57.js +0 -63
  164. package/build/cjs/ActionBar-3c6cdf57.js.map +0 -1
  165. package/build/cjs/AsideFallback.js +0 -31
  166. package/build/cjs/AsideFallback.js.map +0 -1
  167. package/build/cjs/AsideHeader.js +0 -38
  168. package/build/cjs/AsideHeader.js.map +0 -1
  169. package/build/cjs/AsideHeaderContext.js +0 -44
  170. package/build/cjs/AsideHeaderContext.js.map +0 -1
  171. package/build/cjs/Content-64d5738a.js +0 -20
  172. package/build/cjs/Content-64d5738a.js.map +0 -1
  173. package/build/cjs/Drawer.js +0 -3197
  174. package/build/cjs/Drawer.js.map +0 -1
  175. package/build/cjs/FooterItem-de603636.js +0 -336
  176. package/build/cjs/FooterItem-de603636.js.map +0 -1
  177. package/build/cjs/FooterItem.js +0 -31
  178. package/build/cjs/FooterItem.js.map +0 -1
  179. package/build/cjs/HotkeysPanel-1ed9fc32.js +0 -67
  180. package/build/cjs/HotkeysPanel-1ed9fc32.js.map +0 -1
  181. package/build/cjs/Item-ff6bc440.js +0 -303
  182. package/build/cjs/Item-ff6bc440.js.map +0 -1
  183. package/build/cjs/PageLayout.js +0 -40
  184. package/build/cjs/PageLayout.js.map +0 -1
  185. package/build/cjs/PageLayoutAside-30f2015c.js +0 -1008
  186. package/build/cjs/PageLayoutAside-30f2015c.js.map +0 -1
  187. package/build/cjs/PageLayoutAside.js +0 -25
  188. package/build/cjs/PageLayoutAside.js.map +0 -1
  189. package/build/cjs/Settings-8dc2a8ee.js +0 -579
  190. package/build/cjs/Settings-8dc2a8ee.js.map +0 -1
  191. package/build/cjs/Title-54580605.js +0 -42
  192. package/build/cjs/Title-54580605.js.map +0 -1
  193. package/build/cjs/TopPanel-c6b83157.js +0 -82
  194. package/build/cjs/TopPanel-c6b83157.js.map +0 -1
  195. package/build/cjs/cn-9933321a.js +0 -11
  196. package/build/cjs/cn-9933321a.js.map +0 -1
  197. package/build/cjs/components/AsideHeader/components/TopPanel.d.ts +0 -7
  198. package/build/cjs/components/AsideHeader/useAsideHeaderTopPanel.d.ts +0 -10
  199. package/build/cjs/constants-d81c3867.js +0 -14
  200. package/build/cjs/constants-d81c3867.js.map +0 -1
  201. package/build/cjs/debounce-8772fd80.js +0 -545
  202. package/build/cjs/debounce-8772fd80.js.map +0 -1
  203. package/build/cjs/divider-collapsed-b743122e.js +0 -41
  204. package/build/cjs/divider-collapsed-b743122e.js.map +0 -1
  205. package/build/cjs/index2.js +0 -14
  206. package/build/cjs/index2.js.map +0 -1
  207. package/build/cjs/index3.js +0 -17
  208. package/build/cjs/index3.js.map +0 -1
  209. package/build/cjs/index4.js +0 -18
  210. package/build/cjs/index4.js.map +0 -1
  211. package/build/cjs/index5.js +0 -22
  212. package/build/cjs/index5.js.map +0 -1
  213. package/build/cjs/index6.js +0 -23
  214. package/build/cjs/index6.js.map +0 -1
  215. package/build/cjs/style-inject.es-dcee06b6.js +0 -31
  216. package/build/cjs/style-inject.es-dcee06b6.js.map +0 -1
  217. package/build/cjs/tslib.es6-705c6589.js +0 -36
  218. package/build/cjs/tslib.es6-705c6589.js.map +0 -1
  219. package/build/cjs/utils-db3e03c2.js +0 -8
  220. package/build/cjs/utils-db3e03c2.js.map +0 -1
  221. package/build/esm/ActionBar-834b178a.js +0 -57
  222. package/build/esm/ActionBar-834b178a.js.map +0 -1
  223. package/build/esm/AsideFallback.js +0 -23
  224. package/build/esm/AsideFallback.js.map +0 -1
  225. package/build/esm/AsideHeader.js +0 -30
  226. package/build/esm/AsideHeader.js.map +0 -1
  227. package/build/esm/AsideHeaderContext.js +0 -31
  228. package/build/esm/AsideHeaderContext.js.map +0 -1
  229. package/build/esm/Content-f94ba85d.js +0 -14
  230. package/build/esm/Content-f94ba85d.js.map +0 -1
  231. package/build/esm/Drawer.js +0 -3169
  232. package/build/esm/Drawer.js.map +0 -1
  233. package/build/esm/FooterItem-3cc816a3.js +0 -326
  234. package/build/esm/FooterItem-3cc816a3.js.map +0 -1
  235. package/build/esm/FooterItem.js +0 -23
  236. package/build/esm/FooterItem.js.map +0 -1
  237. package/build/esm/HotkeysPanel-0576deee.js +0 -61
  238. package/build/esm/HotkeysPanel-0576deee.js.map +0 -1
  239. package/build/esm/Item-55899ec8.js +0 -289
  240. package/build/esm/Item-55899ec8.js.map +0 -1
  241. package/build/esm/PageLayout.js +0 -32
  242. package/build/esm/PageLayout.js.map +0 -1
  243. package/build/esm/PageLayoutAside-5d010e96.js +0 -983
  244. package/build/esm/PageLayoutAside-5d010e96.js.map +0 -1
  245. package/build/esm/PageLayoutAside.js +0 -17
  246. package/build/esm/PageLayoutAside.js.map +0 -1
  247. package/build/esm/Settings-e660a4c5.js +0 -553
  248. package/build/esm/Settings-e660a4c5.js.map +0 -1
  249. package/build/esm/Title-03b4255a.js +0 -36
  250. package/build/esm/Title-03b4255a.js.map +0 -1
  251. package/build/esm/TopPanel-cd270f27.js +0 -76
  252. package/build/esm/TopPanel-cd270f27.js.map +0 -1
  253. package/build/esm/cn-ffe5e9f5.js +0 -8
  254. package/build/esm/cn-ffe5e9f5.js.map +0 -1
  255. package/build/esm/components/AsideHeader/components/TopPanel.d.ts +0 -7
  256. package/build/esm/components/AsideHeader/useAsideHeaderTopPanel.d.ts +0 -10
  257. package/build/esm/constants-b1604ff5.js +0 -8
  258. package/build/esm/constants-b1604ff5.js.map +0 -1
  259. package/build/esm/debounce-64cd2b4c.js +0 -543
  260. package/build/esm/debounce-64cd2b4c.js.map +0 -1
  261. package/build/esm/divider-collapsed-a0ef54c3.js +0 -19
  262. package/build/esm/divider-collapsed-a0ef54c3.js.map +0 -1
  263. package/build/esm/index2.js +0 -6
  264. package/build/esm/index2.js.map +0 -1
  265. package/build/esm/index3.js +0 -9
  266. package/build/esm/index3.js.map +0 -1
  267. package/build/esm/index4.js +0 -10
  268. package/build/esm/index4.js.map +0 -1
  269. package/build/esm/index5.js +0 -12
  270. package/build/esm/index5.js.map +0 -1
  271. package/build/esm/index6.js +0 -12
  272. package/build/esm/index6.js.map +0 -1
  273. package/build/esm/style-inject.es-1f59c1d0.js +0 -29
  274. package/build/esm/style-inject.es-1f59c1d0.js.map +0 -1
  275. package/build/esm/tslib.es6-3cd4e99f.js +0 -34
  276. package/build/esm/tslib.es6-3cd4e99f.js.map +0 -1
  277. package/build/esm/utils-117463a5.js +0 -6
  278. package/build/esm/utils-117463a5.js.map +0 -1
@@ -1,579 +0,0 @@
1
- 'use strict';
2
-
3
- var tslib_es6 = require('./tslib.es6-705c6589.js');
4
- var React = require('react');
5
- var uikit = require('@gravity-ui/uikit');
6
- var cn = require('./cn-9933321a.js');
7
- var styleInject_es = require('./style-inject.es-dcee06b6.js');
8
- var debounce = require('./debounce-8772fd80.js');
9
- var i18n$1 = require('@gravity-ui/uikit/i18n');
10
- var Title = require('./Title-54580605.js');
11
-
12
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
-
14
- function _interopNamespace(e) {
15
- if (e && e.__esModule) return e;
16
- var n = Object.create(null);
17
- if (e) {
18
- Object.keys(e).forEach(function (k) {
19
- if (k !== 'default') {
20
- var d = Object.getOwnPropertyDescriptor(e, k);
21
- Object.defineProperty(n, k, d.get ? d : {
22
- enumerable: true,
23
- get: function () { return e[k]; }
24
- });
25
- }
26
- });
27
- }
28
- n["default"] = e;
29
- return Object.freeze(n);
30
- }
31
-
32
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
33
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
34
-
35
- function useStableCallback(func) {
36
- const funcRef = React__namespace.useRef();
37
- React__namespace.useEffect(() => {
38
- funcRef.current = func;
39
- return () => {
40
- funcRef.current = undefined;
41
- };
42
- }, [func]);
43
- return React__namespace.useCallback((...args) => {
44
- if (typeof funcRef.current === 'function') {
45
- return funcRef.current(...args);
46
- }
47
- return undefined;
48
- }, []);
49
- }
50
- function useCurrent(value) {
51
- const ref = React__namespace.useRef(value);
52
- ref.current = value;
53
- return React__namespace.useCallback(() => ref.current, []);
54
- }
55
- function invariant(cond, message) {
56
- if (!cond) {
57
- throw new Error(message);
58
- }
59
- }
60
- function escapeStringForRegExp(input) {
61
- return input.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
62
- }
63
-
64
- function getSettingsFromChildren(children, searchText = '') {
65
- // 'abc def fg' -> abc.*?cde.*?fg
66
- const preparedFilter = escapeStringForRegExp(searchText).replace(/\s+/g, '.*?');
67
- const filterRe = new RegExp(preparedFilter, 'i');
68
- return getSettingsFromChildrenRecursive(children, '', filterRe);
69
- }
70
- function getSettingsFromChildrenRecursive(children, basepath = '', filterRe) {
71
- const menu = [];
72
- const pages = {};
73
- let hasGroup = false;
74
- let hasItems = false;
75
- React__default["default"].Children.forEach(children, (element) => {
76
- var _a, _b;
77
- if (!React__default["default"].isValidElement(element)) {
78
- // Ignore non-elements.
79
- return;
80
- }
81
- if (element.type === React__default["default"].Fragment) {
82
- // Transparently support React.Fragment and its children.
83
- const { menu: menuFragment, pages: pagesFragment } = getSettingsFromChildrenRecursive(element.props.children, basepath, filterRe);
84
- menu.push(...menuFragment);
85
- Object.assign(pages, pagesFragment);
86
- }
87
- else if (element.props.groupTitle) {
88
- if (process.env.NODE_ENV === 'development') {
89
- invariant(!hasItems, 'Setting menu must not mix groups and pages on one level');
90
- }
91
- const pageId = `${basepath}/${(_a = element.props.id) !== null && _a !== void 0 ? _a : element.props.groupTitle}`;
92
- hasGroup = true;
93
- const { menu: menuFragment, pages: pagesFragment } = getSettingsFromChildrenRecursive(element.props.children, pageId, filterRe);
94
- if (process.env.NODE_ENV === 'development') {
95
- const hasInnerGroup = menuFragment.some((item) => 'groupTitle' in item);
96
- invariant(!hasInnerGroup, `Group ${element.props.groupTitle} should not include groups`);
97
- }
98
- menu.push({
99
- groupTitle: element.props.groupTitle,
100
- // @ts-ignore
101
- items: menuFragment,
102
- });
103
- Object.assign(pages, pagesFragment);
104
- }
105
- else {
106
- hasItems = true;
107
- const pageId = `${basepath}/${(_b = element.props.id) !== null && _b !== void 0 ? _b : element.props.title}`;
108
- if (process.env.NODE_ENV === 'development') {
109
- invariant(Boolean(element.props.title), 'Component must include title prop');
110
- invariant(!hasGroup, 'Setting menu must not mix groups and pages on one level');
111
- invariant(!pages[pageId], `Setting menu page id must be uniq (${pageId})`);
112
- }
113
- pages[pageId] = getSettingsPageFromChildren(element.props.children, filterRe);
114
- pages[pageId].id = pageId;
115
- menu.push({
116
- id: pageId,
117
- title: element.props.title,
118
- icon: element.props.icon,
119
- withBadge: pages[pageId].withBadge,
120
- disabled: pages[pageId].hidden,
121
- });
122
- }
123
- });
124
- return { menu, pages };
125
- }
126
- function getSettingsPageFromChildren(children, filterRe) {
127
- const page = { id: '', sections: [], hidden: true };
128
- React__default["default"].Children.forEach(children, (element) => {
129
- if (!React__default["default"].isValidElement(element)) {
130
- // Ignore non-elements.
131
- return;
132
- }
133
- if (element.type === React__default["default"].Fragment) {
134
- // Transparently support React.Fragment and its children.
135
- const { sections, withBadge, hidden } = getSettingsPageFromChildren(element.props.children, filterRe);
136
- page.sections.push(...sections);
137
- page.withBadge = withBadge || page.withBadge;
138
- page.hidden = hidden && page.hidden;
139
- }
140
- else {
141
- const { withBadge, showTitle = true } = element.props;
142
- const { items, hidden } = getSettingsItemsFromChildren(element.props.children, filterRe);
143
- page.withBadge = withBadge || page.withBadge;
144
- page.hidden = hidden && page.hidden;
145
- page.sections.push(Object.assign(Object.assign({}, element.props), { withBadge,
146
- items,
147
- hidden,
148
- showTitle }));
149
- }
150
- });
151
- return page;
152
- }
153
- function getSettingsItemsFromChildren(children, filterRe) {
154
- let hidden = true;
155
- const items = [];
156
- React__default["default"].Children.forEach(children, (element) => {
157
- if (!React__default["default"].isValidElement(element)) {
158
- // Ignore non-elements.
159
- return;
160
- }
161
- if (element.type === React__default["default"].Fragment) {
162
- // Transparently support React.Fragment and its children.
163
- const fragmentItems = getSettingsItemsFromChildren(element.props.children, filterRe);
164
- items.push(...fragmentItems.items);
165
- hidden = hidden && fragmentItems.hidden;
166
- }
167
- else {
168
- const item = Object.assign(Object.assign({}, element.props), { element, hidden: !filterRe.test(element.props.title) });
169
- items.push(item);
170
- hidden = hidden && item.hidden;
171
- }
172
- });
173
- return { items, hidden };
174
- }
175
- function getSelectedSettingsPart(pages, selection) {
176
- if (!selection.settingId && !selection.section && !selection.page) {
177
- return {};
178
- }
179
- for (const page of Object.values(pages)) {
180
- if (!selection.settingId && !selection.section) {
181
- if (selection.page !== page.id)
182
- continue;
183
- return { page };
184
- }
185
- for (const section of page.sections) {
186
- if (selection.settingId) {
187
- for (const setting of section.items) {
188
- if (setting.id === selection.settingId) {
189
- return { page, section, setting };
190
- }
191
- }
192
- }
193
- else if (selection.section &&
194
- ('id' in selection.section
195
- ? selection.section.id === section.id
196
- : selection.section.title === section.title)) {
197
- return { page, section };
198
- }
199
- }
200
- }
201
- return {};
202
- }
203
-
204
- const defaultValue = {};
205
- const context = React__default["default"].createContext(defaultValue);
206
- context.displayName = 'SettingsSelectionContext';
207
- function useSettingsSelectionProviderValue(pages, selection) {
208
- const selectedRef = React__default["default"].useRef(null);
209
- const contextValue = React__default["default"].useMemo(() => {
210
- if (!selection)
211
- return { selectedRef };
212
- return Object.assign({ selectedRef }, getSelectedSettingsPart(pages, selection));
213
- }, [pages, selection]);
214
- return contextValue;
215
- }
216
- const SettingsSelectionContextProvider = context.Provider;
217
- function useSettingsSelectionContext() {
218
- return React__default["default"].useContext(context);
219
- }
220
-
221
- /**
222
- * This method returns the first argument it receives.
223
- *
224
- * @static
225
- * @since 0.1.0
226
- * @memberOf _
227
- * @category Util
228
- * @param {*} value Any value.
229
- * @returns {*} Returns `value`.
230
- * @example
231
- *
232
- * var object = { 'a': 1 };
233
- *
234
- * console.log(_.identity(object) === object);
235
- * // => true
236
- */
237
-
238
- function identity(value) {
239
- return value;
240
- }
241
-
242
- var identity_1 = identity;
243
-
244
- function isSectionSelected(selected, pageId, section) {
245
- var _a;
246
- if (!selected.section || selected.setting) {
247
- return false;
248
- }
249
- else if (selected.section.id && selected.section.id === section.id) {
250
- return true;
251
- }
252
- else if (((_a = selected.page) === null || _a === void 0 ? void 0 : _a.id) === pageId &&
253
- selected.section.title &&
254
- selected.section.title === section.title) {
255
- return true;
256
- }
257
- else {
258
- return false;
259
- }
260
- }
261
-
262
- var css_248z$2 = ".gn-settings-menu__group-heading{display:inline-block;font-weight:var(--g-text-accent-font-weight);line-height:18px;margin-bottom:12px;padding:0 20px}.gn-settings-menu__group+.gn-settings-menu__group{margin-top:24px}.gn-settings-menu__item{align-items:center;color:var(--g-color-text-primary);cursor:pointer;display:flex;height:40px;padding:0 20px}.gn-settings-menu__item-icon{color:var(--g-color-text-misc);margin-right:5px}.gn-settings-menu__item:hover,.gn-settings-menu__item_focused{background:var(--g-color-base-simple-hover)}.gn-settings-menu__item_selected{background:var(--g-color-base-selection)}.gn-settings-menu__item_selected.gn-settings-menu__item_focused,.gn-settings-menu__item_selected:hover{background:var(--g-color-base-selection-hover)}.gn-settings-menu__item_disabled{color:var(--g-color-text-secondary);cursor:auto}.gn-settings-menu__item_disabled:hover{background:none}.gn-settings-menu__item_disabled .gn-settings-menu__item-icon{color:var(--g-color-base-misc-heavy)}.gn-settings-menu__item_badge{position:relative}.gn-settings-menu__item_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:\"\";display:block;height:6px;position:absolute;right:9px;top:calc(50% - 3px);width:6px}";
263
- styleInject_es.styleInject(css_248z$2);
264
-
265
- const b$3 = cn.block('settings-menu');
266
- const SettingsMenu = React__default["default"].forwardRef(
267
- // eslint-disable-next-line prefer-arrow-callback
268
- function SettingsMenu({ items, onChange, activeItemId }, ref) {
269
- const [focusItemId, setFocusId] = React__default["default"].useState();
270
- const containerRef = React__default["default"].useRef(null);
271
- const handleChange = useStableCallback(onChange);
272
- const getFocused = useCurrent(focusItemId);
273
- React__default["default"].useImperativeHandle(ref, () => ({
274
- handleKeyDown(event) {
275
- if (!containerRef.current) {
276
- return false;
277
- }
278
- const focused = getFocused();
279
- if (focused && event.key === 'Enter') {
280
- handleChange(focused);
281
- return true;
282
- }
283
- else if (event.key === 'ArrowDown') {
284
- setFocusId(focusNext(containerRef.current, focused, 1));
285
- return true;
286
- }
287
- else if (event.key === 'ArrowUp') {
288
- setFocusId(focusNext(containerRef.current, focused, -1));
289
- return true;
290
- }
291
- return false;
292
- },
293
- clearFocus() {
294
- setFocusId(undefined);
295
- },
296
- }), [getFocused, handleChange]);
297
- return (React__default["default"].createElement("div", { ref: containerRef, className: b$3() }, items.map((firstLevelItem) => {
298
- if ('groupTitle' in firstLevelItem) {
299
- return (React__default["default"].createElement("div", { key: firstLevelItem.groupTitle, className: b$3('group') },
300
- React__default["default"].createElement("span", { className: b$3('group-heading') }, firstLevelItem.groupTitle),
301
- firstLevelItem.items.map((item) => {
302
- return renderMenuItem(item, onChange, activeItemId, focusItemId);
303
- })));
304
- }
305
- return renderMenuItem(firstLevelItem, onChange, activeItemId, focusItemId);
306
- })));
307
- });
308
- function renderMenuItem(item, onChange, activeItemId, focusItemId) {
309
- return (React__default["default"].createElement("span", { key: item.title, className: b$3('item', {
310
- selected: activeItemId === item.id,
311
- disabled: item.disabled,
312
- focused: focusItemId === item.id,
313
- badge: item.withBadge,
314
- }), onClick: () => {
315
- if (!item.disabled) {
316
- onChange(item.id);
317
- }
318
- }, "data-id": item.id },
319
- item.icon ? React__default["default"].createElement(uikit.Icon, Object.assign({ size: 16 }, item.icon, { className: b$3('item-icon') })) : undefined,
320
- React__default["default"].createElement("span", null, item.title)));
321
- }
322
- function focusNext(container, focused, direction) {
323
- var _a;
324
- const elements = container.querySelectorAll(`.${b$3('item')}:not(.${b$3('item')}_disabled)`);
325
- if (elements.length === 0) {
326
- return undefined;
327
- }
328
- let currentIndex = direction > 0 ? -1 : 0;
329
- if (focused) {
330
- currentIndex = Array.prototype.findIndex.call(elements, (element) => element.getAttribute('data-id') === focused);
331
- }
332
- currentIndex = (elements.length + currentIndex + direction) % elements.length;
333
- return (_a = elements[currentIndex].getAttribute('data-id')) !== null && _a !== void 0 ? _a : undefined;
334
- }
335
-
336
- var css_248z$1 = ".gn-settings-menu-mobile.g-tabs_direction_horizontal{-ms-overflow-style:none;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:none;scrollbar-width:none}.gn-settings-menu-mobile.g-tabs_direction_horizontal::-webkit-scrollbar{display:none}.gn-settings-menu-mobile__item_badge{position:relative}.gn-settings-menu-mobile__item_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:\"\";display:block;height:6px;position:absolute;right:-8px;top:11px;width:6px}";
337
- styleInject_es.styleInject(css_248z$1);
338
-
339
- const b$2 = cn.block('settings-menu-mobile');
340
- const SettingsMenuMobile = ({ items, onChange, activeItemId, className, }) => {
341
- const ref = React__default["default"].useRef(null);
342
- const tabItems = React__default["default"].useMemo(() => {
343
- const tabItems = [];
344
- items.forEach((firstLevelItem) => {
345
- if ('groupTitle' in firstLevelItem) {
346
- tabItems.push(...firstLevelItem.items.map(({ id, title, disabled, withBadge }) => ({
347
- id,
348
- title,
349
- disabled,
350
- className: b$2('item', { badge: withBadge }),
351
- })));
352
- }
353
- else {
354
- const { id, title, disabled, withBadge } = firstLevelItem;
355
- tabItems.push({ id, title, disabled, className: b$2('item', { badge: withBadge }) });
356
- }
357
- });
358
- return tabItems;
359
- }, [items]);
360
- const handleTouchMove = (e) => {
361
- e.stopPropagation();
362
- };
363
- return (React__default["default"].createElement("div", { ref: ref, onTouchMove: handleTouchMove },
364
- React__default["default"].createElement(uikit.Tabs, { items: tabItems, className: b$2(null, className), size: "l", activeTab: activeItemId, onSelectTab: onChange })));
365
- };
366
-
367
- var label_title$1 = "Settings";
368
- var label_search$1 = "Search";
369
- var en = {
370
- label_title: label_title$1,
371
- "label_filter-placeholder": "Search settings",
372
- "label_empty-placeholder": "No results found",
373
- label_search: label_search$1
374
- };
375
-
376
- var label_title = "Настройки";
377
- var label_search = "Поиск";
378
- var ru = {
379
- label_title: label_title,
380
- "label_filter-placeholder": "Найти настройки",
381
- "label_empty-placeholder": "Ничего не найдено",
382
- label_search: label_search
383
- };
384
-
385
- const COMPONENT = 'Settings';
386
- var i18n = i18n$1.addComponentKeysets({ en, ru }, `${cn.NAMESPACE}${COMPONENT}`);
387
-
388
- const b$1 = cn.block('settings-search');
389
- function SettingsSearch({ className, initialValue, onChange, debounce: debounce$1 = 200, inputRef, inputSize, placeholder, autoFocus = true, }) {
390
- const [value, setValue] = React__default["default"].useState(initialValue !== null && initialValue !== void 0 ? initialValue : '');
391
- const onChangeDebounced = useStableCallback(debounce.debounce_1(onChange, debounce$1));
392
- const handleUpdate = useStableCallback((updated) => {
393
- setValue(updated);
394
- onChangeDebounced(updated);
395
- });
396
- return (React__default["default"].createElement("div", { className: b$1(null, className) },
397
- React__default["default"].createElement(uikit.TextInput, { value: value, controlRef: inputRef, hasClear: true, autoFocus: autoFocus, size: inputSize, placeholder: placeholder, onUpdate: handleUpdate, controlProps: {
398
- 'aria-label': i18n('label_search'),
399
- } })));
400
- }
401
-
402
- var css_248z = ".gn-settings{display:grid;grid-template-columns:216px 1fr;height:100%;width:834px}.gn-settings_view_mobile{display:block;height:calc(80vh - 56px);overflow-x:hidden;width:auto}@supports (height:90dvh){.gn-settings_view_mobile{height:calc(90dvh - 56px)}}.gn-settings_view_mobile.gn-settings_loading{text-align:center}.gn-settings_view_mobile .gn-settings__loader{margin-top:20px}.gn-settings_view_mobile .gn-settings__search{margin:4px 0 16px;padding:0 20px}.gn-settings_view_mobile .gn-settings__page{overflow-y:visible}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:first-child{margin-left:20px}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:last-child{margin-right:20px}.gn-settings_view_mobile .gn-settings__section-heading{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.gn-settings_view_mobile .gn-settings__section-subheader{color:var(--g-color-text-secondary)}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings-subheader{margin-top:8px}.gn-settings_view_mobile .gn-settings__section-item{margin-top:0}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings__section-item,.gn-settings_view_mobile .gn-settings__section-subheader+.gn-settings__section-item{margin-top:30px}.gn-settings_view_mobile .gn-settings__section-item+.gn-settings__section-item{margin-top:22px}.gn-settings_view_mobile .gn-settings__item:not(.gn-settings_view_mobile .gn-settings__item_mode_row){gap:8px;grid-template-columns:1fr}.gn-settings_view_mobile .gn-settings__item-heading{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.gn-settings_view_mobile .gn-settings__item-description{font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.gn-settings_view_mobile .gn-settings__item_mode_row{grid-template-columns:1fr auto}.gn-settings_view_mobile .gn-settings__item_mode_row .gn-settings__item-heading{padding-right:20px}.gn-settings_view_mobile .gn-settings__item-content{width:100%}.gn-settings_view_mobile .gn-settings__not-found{color:var(--g-color-text-hint);font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);justify-items:start;line-height:var(--g-text-body-2-line-height);margin:20px 0 0 20px}.gn-settings_loading{grid-template-columns:auto}.gn-settings__loader{place-self:center}.gn-settings__not-found{display:grid;height:100%;place-items:center}.gn-settings__menu{border-right:1px solid var(--g-color-line-generic)}.gn-settings__heading{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:20px 20px 0}.gn-settings__search{margin:0 20px 16px}.gn-settings__page{overflow-y:auto}.gn-settings__content{padding:20px}.gn-settings__section-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__section-heading:hover .gn-settings__section-right-adornment_hidden{opacity:1}.gn-settings__section-heading{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:0}.gn-settings__section-item{margin-top:24px}.gn-settings__section+.gn-settings__section{margin-top:32px}.gn-settings__section_only-child:only-child .gn-settings__section-item:first-of-type{margin-top:0}.gn-settings__section_only-child:only-child .gn-settings__section-heading{display:none}.gn-settings__item{display:grid;grid-template-columns:216px 1fr;justify-items:start}.gn-settings__item_align_top{align-items:start}.gn-settings__item_align_center{align-items:center}.gn-settings__item-title_badge{position:relative}.gn-settings__item-title_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:\"\";display:block;height:6px;position:absolute;right:-8px;top:1px;width:6px}.gn-settings__item-description{color:var(--g-color-text-secondary);display:block;font-size:var(--g-text-caption-2-font-size);font-weight:var(--g-text-caption-font-weight);line-height:var(--g-text-caption-2-line-height);margin-top:2px;padding-right:20px}.gn-settings__item-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__item:hover .gn-settings__item-right-adornment_hidden{opacity:1}.gn-settings__item_selected,.gn-settings__section_selected{background:var(--g-color-base-selection);border-radius:8px;margin-left:-8px;padding:8px}.gn-settings__found{background:var(--g-color-base-selection);font-weight:var(--g-text-accent-font-weight)}";
403
- styleInject_es.styleInject(css_248z);
404
-
405
- const b = cn.block('settings');
406
- const SettingsContext = React__default["default"].createContext({});
407
- const useSettingsContext = () => React__default["default"].useContext(SettingsContext);
408
- function Settings(_a) {
409
- var { loading, renderLoading, children, view = 'normal', renderRightAdornment, renderSectionRightAdornment, showRightAdornmentOnHover = true } = _a, props = tslib_es6.__rest(_a, ["loading", "renderLoading", "children", "view", "renderRightAdornment", "renderSectionRightAdornment", "showRightAdornmentOnHover"]);
410
- if (loading) {
411
- return (React__default["default"].createElement("div", { className: b({ loading: true, view }) }, typeof renderLoading === 'function' ? (renderLoading()) : (React__default["default"].createElement(uikit.Loader, { className: b('loader'), size: "m" }))));
412
- }
413
- return (React__default["default"].createElement(SettingsContext.Provider, { value: { renderRightAdornment, renderSectionRightAdornment, showRightAdornmentOnHover } },
414
- React__default["default"].createElement(SettingsContent, Object.assign({ view: view }, props), children)));
415
- }
416
- const getPageTitleById = (menu, activePage) => {
417
- for (const firstLevel of menu) {
418
- if ('groupTitle' in firstLevel) {
419
- for (const secondLevel of firstLevel.items)
420
- if (secondLevel.id === activePage)
421
- return secondLevel.title;
422
- }
423
- else if (firstLevel.id === activePage)
424
- return firstLevel.title;
425
- }
426
- return '';
427
- };
428
- function SettingsContent({ initialPage, initialSearch, selection, children, renderNotFound, title = i18n('label_title'), filterPlaceholder = i18n('label_filter-placeholder'), emptyPlaceholder = i18n('label_empty-placeholder'), view, onPageChange, onClose, }) {
429
- var _a, _b;
430
- const { renderSectionRightAdornment, showRightAdornmentOnHover } = useSettingsContext();
431
- const [search, setSearch] = React__default["default"].useState(initialSearch !== null && initialSearch !== void 0 ? initialSearch : '');
432
- const { menu, pages } = getSettingsFromChildren(children, search);
433
- const selected = useSettingsSelectionProviderValue(pages, selection);
434
- const pageKeys = Object.keys(pages);
435
- const selectionInitialPage = selected.page && pageKeys.includes(selected.page.id) ? selected.page.id : undefined;
436
- const [selectedPage, setCurrentPage] = React__default["default"].useState(selectionInitialPage ||
437
- (initialPage && pageKeys.includes(initialPage) ? initialPage : undefined));
438
- const searchInputRef = React__default["default"].useRef(null);
439
- const menuRef = React__default["default"].useRef(null);
440
- const isMobile = view === 'mobile';
441
- React__default["default"].useEffect(() => {
442
- var _a;
443
- (_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.clearFocus();
444
- }, [search]);
445
- React__default["default"].useEffect(() => {
446
- const handler = () => {
447
- var _a;
448
- (_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.clearFocus();
449
- };
450
- window.addEventListener('click', handler);
451
- return () => {
452
- window.removeEventListener('click', handler);
453
- };
454
- }, []);
455
- let activePage = selectedPage;
456
- if (!activePage || ((_a = pages[activePage]) === null || _a === void 0 ? void 0 : _a.hidden)) {
457
- activePage = (_b = Object.values(pages).find(({ hidden }) => !hidden)) === null || _b === void 0 ? void 0 : _b.id;
458
- }
459
- const handlePageChange = (newPage) => {
460
- setCurrentPage((prevPage) => {
461
- if (prevPage !== newPage) {
462
- onPageChange === null || onPageChange === void 0 ? void 0 : onPageChange(newPage);
463
- }
464
- return newPage;
465
- });
466
- };
467
- React__default["default"].useEffect(() => {
468
- if (activePage !== selectedPage) {
469
- handlePageChange(activePage);
470
- }
471
- });
472
- React__default["default"].useEffect(() => {
473
- if (!selectionInitialPage)
474
- return;
475
- setCurrentPage(selectionInitialPage);
476
- }, [selectionInitialPage]);
477
- React__default["default"].useEffect(() => {
478
- var _a;
479
- if ((_a = selected.selectedRef) === null || _a === void 0 ? void 0 : _a.current) {
480
- selected.selectedRef.current.scrollIntoView();
481
- }
482
- }, [selected.selectedRef]);
483
- const renderSetting = ({ title: settingTitle, element }) => {
484
- return (React__default["default"].createElement("div", { key: settingTitle, className: b('section-item') }, React__default["default"].cloneElement(element, Object.assign(Object.assign({}, element.props), { highlightedTitle: search && settingTitle ? prepareTitle(settingTitle, search) : settingTitle }))));
485
- };
486
- const renderSection = (page, section) => {
487
- const isSelected = isSectionSelected(selected, page, section);
488
- return (React__default["default"].createElement("div", { key: section.title, className: b('section', { selected: isSelected, 'only-child': section.onlyChild }), ref: isSelected ? selected.selectedRef : undefined },
489
- section.showTitle && (React__default["default"].createElement("h3", { className: b('section-heading') }, renderSectionRightAdornment ? (React__default["default"].createElement(uikit.Flex, { gap: 2, alignItems: 'center' },
490
- section.title,
491
- React__default["default"].createElement("div", { className: b('section-right-adornment', {
492
- hidden: showRightAdornmentOnHover,
493
- }) }, renderSectionRightAdornment(section)))) : (section.title))),
494
- section.header &&
495
- (isMobile ? (React__default["default"].createElement("div", { className: b('section-subheader') }, section.header)) : (section.header)),
496
- section.items.map((setting) => (setting.hidden ? null : renderSetting(setting)))));
497
- };
498
- const renderPageContent = (page) => {
499
- if (!page) {
500
- return typeof renderNotFound === 'function' ? (renderNotFound()) : (React__default["default"].createElement("div", { className: b('not-found') }, emptyPlaceholder));
501
- }
502
- const filteredSections = pages[page].sections.filter((section) => !section.hidden);
503
- return (React__default["default"].createElement(React__default["default"].Fragment, null,
504
- !isMobile && (React__default["default"].createElement(Title.Title, { hasSeparator: true, onClose: onClose }, getPageTitleById(menu, page))),
505
- React__default["default"].createElement("div", { className: b('content') }, filteredSections.map((section) => renderSection(page, section)))));
506
- };
507
- return (React__default["default"].createElement(SettingsSelectionContextProvider, { value: selected },
508
- React__default["default"].createElement("div", { className: b({ view }) },
509
- isMobile ? (React__default["default"].createElement(React__default["default"].Fragment, null,
510
- React__default["default"].createElement(SettingsSearch, { inputRef: searchInputRef, className: b('search'), initialValue: initialSearch, onChange: setSearch, autoFocus: false, inputSize: 'xl' }),
511
- React__default["default"].createElement(SettingsMenuMobile, { items: menu, onChange: handlePageChange, activeItemId: activePage, className: b('tabs') }))) : (React__default["default"].createElement("div", { className: b('menu'), onClick: () => {
512
- if (searchInputRef.current) {
513
- searchInputRef.current.focus();
514
- }
515
- }, onKeyDown: (event) => {
516
- if (menuRef.current) {
517
- if (menuRef.current.handleKeyDown(event)) {
518
- event.preventDefault();
519
- }
520
- }
521
- } },
522
- React__default["default"].createElement(Title.Title, null, title),
523
- React__default["default"].createElement(SettingsSearch, { inputRef: searchInputRef, className: b('search'), initialValue: initialSearch, onChange: setSearch, placeholder: filterPlaceholder, autoFocus: true }),
524
- React__default["default"].createElement(SettingsMenu, { ref: menuRef, items: menu, onChange: handlePageChange, activeItemId: activePage }))),
525
- React__default["default"].createElement("div", { className: b('page') }, renderPageContent(activePage)))));
526
- }
527
- Settings.Group = function SettingsGroup({ children }) {
528
- return React__default["default"].createElement(React__default["default"].Fragment, null, children);
529
- };
530
- Settings.Page = function SettingsPage({ children }) {
531
- return React__default["default"].createElement(React__default["default"].Fragment, null, children);
532
- };
533
- Settings.Section = function SettingsSection({ children }) {
534
- return React__default["default"].createElement(React__default["default"].Fragment, null, children);
535
- };
536
- Settings.Item = function SettingsItem(setting) {
537
- const { id, labelId, highlightedTitle, children, align = 'center', withBadge, renderTitleComponent = identity_1, mode, description, } = setting;
538
- const selected = useSettingsSelectionContext();
539
- const isSettingSelected = selected.setting && selected.setting.id === id;
540
- const { renderRightAdornment, showRightAdornmentOnHover } = useSettingsContext();
541
- const titleNode = (React__default["default"].createElement("span", { className: b('item-title', { badge: withBadge }) }, renderTitleComponent(highlightedTitle)));
542
- return (React__default["default"].createElement("div", { className: b('item', { align, mode, selected: isSettingSelected }), ref: isSettingSelected ? selected.selectedRef : undefined },
543
- React__default["default"].createElement("label", { className: b('item-heading'), id: labelId },
544
- renderRightAdornment ? (React__default["default"].createElement(uikit.Flex, { className: b('item-title-wrapper'), gap: 3 },
545
- titleNode,
546
- React__default["default"].createElement("div", { className: b('item-right-adornment', {
547
- hidden: showRightAdornmentOnHover,
548
- }) }, renderRightAdornment(setting)))) : (titleNode),
549
- description ? React__default["default"].createElement("span", { className: b('item-description') }, description) : null),
550
- React__default["default"].createElement("div", { className: b('item-content') }, children)));
551
- };
552
- function prepareTitle(string, search) {
553
- let temp = string.slice(0);
554
- const title = [];
555
- const parts = escapeStringForRegExp(search).split(' ').filter(Boolean);
556
- let key = 0;
557
- for (const part of parts) {
558
- const regex = new RegExp(part, 'ig');
559
- const match = regex.exec(temp);
560
- if (match) {
561
- const m = match[0];
562
- const i = match.index;
563
- if (i > 0) {
564
- title.push(temp.slice(0, i));
565
- }
566
- title.push(React__default["default"].createElement("strong", { key: key++, className: b('found') }, m));
567
- temp = temp.slice(i + m.length);
568
- }
569
- }
570
- if (temp) {
571
- title.push(temp);
572
- }
573
- return title;
574
- }
575
-
576
- exports.Settings = Settings;
577
- exports.useSettingsContext = useSettingsContext;
578
- exports.useSettingsSelectionContext = useSettingsSelectionContext;
579
- //# sourceMappingURL=Settings-8dc2a8ee.js.map