@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,553 +0,0 @@
1
- import { _ as __rest } from './tslib.es6-3cd4e99f.js';
2
- import * as React from 'react';
3
- import React__default from 'react';
4
- import { Icon, Tabs, TextInput, Loader, Flex } from '@gravity-ui/uikit';
5
- import { b as block, N as NAMESPACE } from './cn-ffe5e9f5.js';
6
- import { s as styleInject } from './style-inject.es-1f59c1d0.js';
7
- import { d as debounce_1 } from './debounce-64cd2b4c.js';
8
- import { addComponentKeysets } from '@gravity-ui/uikit/i18n';
9
- import { T as Title } from './Title-03b4255a.js';
10
-
11
- function useStableCallback(func) {
12
- const funcRef = React.useRef();
13
- React.useEffect(() => {
14
- funcRef.current = func;
15
- return () => {
16
- funcRef.current = undefined;
17
- };
18
- }, [func]);
19
- return React.useCallback((...args) => {
20
- if (typeof funcRef.current === 'function') {
21
- return funcRef.current(...args);
22
- }
23
- return undefined;
24
- }, []);
25
- }
26
- function useCurrent(value) {
27
- const ref = React.useRef(value);
28
- ref.current = value;
29
- return React.useCallback(() => ref.current, []);
30
- }
31
- function invariant(cond, message) {
32
- if (!cond) {
33
- throw new Error(message);
34
- }
35
- }
36
- function escapeStringForRegExp(input) {
37
- return input.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
38
- }
39
-
40
- function getSettingsFromChildren(children, searchText = '') {
41
- // 'abc def fg' -> abc.*?cde.*?fg
42
- const preparedFilter = escapeStringForRegExp(searchText).replace(/\s+/g, '.*?');
43
- const filterRe = new RegExp(preparedFilter, 'i');
44
- return getSettingsFromChildrenRecursive(children, '', filterRe);
45
- }
46
- function getSettingsFromChildrenRecursive(children, basepath = '', filterRe) {
47
- const menu = [];
48
- const pages = {};
49
- let hasGroup = false;
50
- let hasItems = false;
51
- React__default.Children.forEach(children, (element) => {
52
- var _a, _b;
53
- if (!React__default.isValidElement(element)) {
54
- // Ignore non-elements.
55
- return;
56
- }
57
- if (element.type === React__default.Fragment) {
58
- // Transparently support React.Fragment and its children.
59
- const { menu: menuFragment, pages: pagesFragment } = getSettingsFromChildrenRecursive(element.props.children, basepath, filterRe);
60
- menu.push(...menuFragment);
61
- Object.assign(pages, pagesFragment);
62
- }
63
- else if (element.props.groupTitle) {
64
- if (process.env.NODE_ENV === 'development') {
65
- invariant(!hasItems, 'Setting menu must not mix groups and pages on one level');
66
- }
67
- const pageId = `${basepath}/${(_a = element.props.id) !== null && _a !== void 0 ? _a : element.props.groupTitle}`;
68
- hasGroup = true;
69
- const { menu: menuFragment, pages: pagesFragment } = getSettingsFromChildrenRecursive(element.props.children, pageId, filterRe);
70
- if (process.env.NODE_ENV === 'development') {
71
- const hasInnerGroup = menuFragment.some((item) => 'groupTitle' in item);
72
- invariant(!hasInnerGroup, `Group ${element.props.groupTitle} should not include groups`);
73
- }
74
- menu.push({
75
- groupTitle: element.props.groupTitle,
76
- // @ts-ignore
77
- items: menuFragment,
78
- });
79
- Object.assign(pages, pagesFragment);
80
- }
81
- else {
82
- hasItems = true;
83
- const pageId = `${basepath}/${(_b = element.props.id) !== null && _b !== void 0 ? _b : element.props.title}`;
84
- if (process.env.NODE_ENV === 'development') {
85
- invariant(Boolean(element.props.title), 'Component must include title prop');
86
- invariant(!hasGroup, 'Setting menu must not mix groups and pages on one level');
87
- invariant(!pages[pageId], `Setting menu page id must be uniq (${pageId})`);
88
- }
89
- pages[pageId] = getSettingsPageFromChildren(element.props.children, filterRe);
90
- pages[pageId].id = pageId;
91
- menu.push({
92
- id: pageId,
93
- title: element.props.title,
94
- icon: element.props.icon,
95
- withBadge: pages[pageId].withBadge,
96
- disabled: pages[pageId].hidden,
97
- });
98
- }
99
- });
100
- return { menu, pages };
101
- }
102
- function getSettingsPageFromChildren(children, filterRe) {
103
- const page = { id: '', sections: [], hidden: true };
104
- React__default.Children.forEach(children, (element) => {
105
- if (!React__default.isValidElement(element)) {
106
- // Ignore non-elements.
107
- return;
108
- }
109
- if (element.type === React__default.Fragment) {
110
- // Transparently support React.Fragment and its children.
111
- const { sections, withBadge, hidden } = getSettingsPageFromChildren(element.props.children, filterRe);
112
- page.sections.push(...sections);
113
- page.withBadge = withBadge || page.withBadge;
114
- page.hidden = hidden && page.hidden;
115
- }
116
- else {
117
- const { withBadge, showTitle = true } = element.props;
118
- const { items, hidden } = getSettingsItemsFromChildren(element.props.children, filterRe);
119
- page.withBadge = withBadge || page.withBadge;
120
- page.hidden = hidden && page.hidden;
121
- page.sections.push(Object.assign(Object.assign({}, element.props), { withBadge,
122
- items,
123
- hidden,
124
- showTitle }));
125
- }
126
- });
127
- return page;
128
- }
129
- function getSettingsItemsFromChildren(children, filterRe) {
130
- let hidden = true;
131
- const items = [];
132
- React__default.Children.forEach(children, (element) => {
133
- if (!React__default.isValidElement(element)) {
134
- // Ignore non-elements.
135
- return;
136
- }
137
- if (element.type === React__default.Fragment) {
138
- // Transparently support React.Fragment and its children.
139
- const fragmentItems = getSettingsItemsFromChildren(element.props.children, filterRe);
140
- items.push(...fragmentItems.items);
141
- hidden = hidden && fragmentItems.hidden;
142
- }
143
- else {
144
- const item = Object.assign(Object.assign({}, element.props), { element, hidden: !filterRe.test(element.props.title) });
145
- items.push(item);
146
- hidden = hidden && item.hidden;
147
- }
148
- });
149
- return { items, hidden };
150
- }
151
- function getSelectedSettingsPart(pages, selection) {
152
- if (!selection.settingId && !selection.section && !selection.page) {
153
- return {};
154
- }
155
- for (const page of Object.values(pages)) {
156
- if (!selection.settingId && !selection.section) {
157
- if (selection.page !== page.id)
158
- continue;
159
- return { page };
160
- }
161
- for (const section of page.sections) {
162
- if (selection.settingId) {
163
- for (const setting of section.items) {
164
- if (setting.id === selection.settingId) {
165
- return { page, section, setting };
166
- }
167
- }
168
- }
169
- else if (selection.section &&
170
- ('id' in selection.section
171
- ? selection.section.id === section.id
172
- : selection.section.title === section.title)) {
173
- return { page, section };
174
- }
175
- }
176
- }
177
- return {};
178
- }
179
-
180
- const defaultValue = {};
181
- const context = React__default.createContext(defaultValue);
182
- context.displayName = 'SettingsSelectionContext';
183
- function useSettingsSelectionProviderValue(pages, selection) {
184
- const selectedRef = React__default.useRef(null);
185
- const contextValue = React__default.useMemo(() => {
186
- if (!selection)
187
- return { selectedRef };
188
- return Object.assign({ selectedRef }, getSelectedSettingsPart(pages, selection));
189
- }, [pages, selection]);
190
- return contextValue;
191
- }
192
- const SettingsSelectionContextProvider = context.Provider;
193
- function useSettingsSelectionContext() {
194
- return React__default.useContext(context);
195
- }
196
-
197
- /**
198
- * This method returns the first argument it receives.
199
- *
200
- * @static
201
- * @since 0.1.0
202
- * @memberOf _
203
- * @category Util
204
- * @param {*} value Any value.
205
- * @returns {*} Returns `value`.
206
- * @example
207
- *
208
- * var object = { 'a': 1 };
209
- *
210
- * console.log(_.identity(object) === object);
211
- * // => true
212
- */
213
-
214
- function identity(value) {
215
- return value;
216
- }
217
-
218
- var identity_1 = identity;
219
-
220
- function isSectionSelected(selected, pageId, section) {
221
- var _a;
222
- if (!selected.section || selected.setting) {
223
- return false;
224
- }
225
- else if (selected.section.id && selected.section.id === section.id) {
226
- return true;
227
- }
228
- else if (((_a = selected.page) === null || _a === void 0 ? void 0 : _a.id) === pageId &&
229
- selected.section.title &&
230
- selected.section.title === section.title) {
231
- return true;
232
- }
233
- else {
234
- return false;
235
- }
236
- }
237
-
238
- 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}";
239
- styleInject(css_248z$2);
240
-
241
- const b$3 = block('settings-menu');
242
- const SettingsMenu = React__default.forwardRef(
243
- // eslint-disable-next-line prefer-arrow-callback
244
- function SettingsMenu({ items, onChange, activeItemId }, ref) {
245
- const [focusItemId, setFocusId] = React__default.useState();
246
- const containerRef = React__default.useRef(null);
247
- const handleChange = useStableCallback(onChange);
248
- const getFocused = useCurrent(focusItemId);
249
- React__default.useImperativeHandle(ref, () => ({
250
- handleKeyDown(event) {
251
- if (!containerRef.current) {
252
- return false;
253
- }
254
- const focused = getFocused();
255
- if (focused && event.key === 'Enter') {
256
- handleChange(focused);
257
- return true;
258
- }
259
- else if (event.key === 'ArrowDown') {
260
- setFocusId(focusNext(containerRef.current, focused, 1));
261
- return true;
262
- }
263
- else if (event.key === 'ArrowUp') {
264
- setFocusId(focusNext(containerRef.current, focused, -1));
265
- return true;
266
- }
267
- return false;
268
- },
269
- clearFocus() {
270
- setFocusId(undefined);
271
- },
272
- }), [getFocused, handleChange]);
273
- return (React__default.createElement("div", { ref: containerRef, className: b$3() }, items.map((firstLevelItem) => {
274
- if ('groupTitle' in firstLevelItem) {
275
- return (React__default.createElement("div", { key: firstLevelItem.groupTitle, className: b$3('group') },
276
- React__default.createElement("span", { className: b$3('group-heading') }, firstLevelItem.groupTitle),
277
- firstLevelItem.items.map((item) => {
278
- return renderMenuItem(item, onChange, activeItemId, focusItemId);
279
- })));
280
- }
281
- return renderMenuItem(firstLevelItem, onChange, activeItemId, focusItemId);
282
- })));
283
- });
284
- function renderMenuItem(item, onChange, activeItemId, focusItemId) {
285
- return (React__default.createElement("span", { key: item.title, className: b$3('item', {
286
- selected: activeItemId === item.id,
287
- disabled: item.disabled,
288
- focused: focusItemId === item.id,
289
- badge: item.withBadge,
290
- }), onClick: () => {
291
- if (!item.disabled) {
292
- onChange(item.id);
293
- }
294
- }, "data-id": item.id },
295
- item.icon ? React__default.createElement(Icon, Object.assign({ size: 16 }, item.icon, { className: b$3('item-icon') })) : undefined,
296
- React__default.createElement("span", null, item.title)));
297
- }
298
- function focusNext(container, focused, direction) {
299
- var _a;
300
- const elements = container.querySelectorAll(`.${b$3('item')}:not(.${b$3('item')}_disabled)`);
301
- if (elements.length === 0) {
302
- return undefined;
303
- }
304
- let currentIndex = direction > 0 ? -1 : 0;
305
- if (focused) {
306
- currentIndex = Array.prototype.findIndex.call(elements, (element) => element.getAttribute('data-id') === focused);
307
- }
308
- currentIndex = (elements.length + currentIndex + direction) % elements.length;
309
- return (_a = elements[currentIndex].getAttribute('data-id')) !== null && _a !== void 0 ? _a : undefined;
310
- }
311
-
312
- 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}";
313
- styleInject(css_248z$1);
314
-
315
- const b$2 = block('settings-menu-mobile');
316
- const SettingsMenuMobile = ({ items, onChange, activeItemId, className, }) => {
317
- const ref = React__default.useRef(null);
318
- const tabItems = React__default.useMemo(() => {
319
- const tabItems = [];
320
- items.forEach((firstLevelItem) => {
321
- if ('groupTitle' in firstLevelItem) {
322
- tabItems.push(...firstLevelItem.items.map(({ id, title, disabled, withBadge }) => ({
323
- id,
324
- title,
325
- disabled,
326
- className: b$2('item', { badge: withBadge }),
327
- })));
328
- }
329
- else {
330
- const { id, title, disabled, withBadge } = firstLevelItem;
331
- tabItems.push({ id, title, disabled, className: b$2('item', { badge: withBadge }) });
332
- }
333
- });
334
- return tabItems;
335
- }, [items]);
336
- const handleTouchMove = (e) => {
337
- e.stopPropagation();
338
- };
339
- return (React__default.createElement("div", { ref: ref, onTouchMove: handleTouchMove },
340
- React__default.createElement(Tabs, { items: tabItems, className: b$2(null, className), size: "l", activeTab: activeItemId, onSelectTab: onChange })));
341
- };
342
-
343
- var label_title$1 = "Settings";
344
- var label_search$1 = "Search";
345
- var en = {
346
- label_title: label_title$1,
347
- "label_filter-placeholder": "Search settings",
348
- "label_empty-placeholder": "No results found",
349
- label_search: label_search$1
350
- };
351
-
352
- var label_title = "Настройки";
353
- var label_search = "Поиск";
354
- var ru = {
355
- label_title: label_title,
356
- "label_filter-placeholder": "Найти настройки",
357
- "label_empty-placeholder": "Ничего не найдено",
358
- label_search: label_search
359
- };
360
-
361
- const COMPONENT = 'Settings';
362
- var i18n = addComponentKeysets({ en, ru }, `${NAMESPACE}${COMPONENT}`);
363
-
364
- const b$1 = block('settings-search');
365
- function SettingsSearch({ className, initialValue, onChange, debounce = 200, inputRef, inputSize, placeholder, autoFocus = true, }) {
366
- const [value, setValue] = React__default.useState(initialValue !== null && initialValue !== void 0 ? initialValue : '');
367
- const onChangeDebounced = useStableCallback(debounce_1(onChange, debounce));
368
- const handleUpdate = useStableCallback((updated) => {
369
- setValue(updated);
370
- onChangeDebounced(updated);
371
- });
372
- return (React__default.createElement("div", { className: b$1(null, className) },
373
- React__default.createElement(TextInput, { value: value, controlRef: inputRef, hasClear: true, autoFocus: autoFocus, size: inputSize, placeholder: placeholder, onUpdate: handleUpdate, controlProps: {
374
- 'aria-label': i18n('label_search'),
375
- } })));
376
- }
377
-
378
- 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)}";
379
- styleInject(css_248z);
380
-
381
- const b = block('settings');
382
- const SettingsContext = React__default.createContext({});
383
- const useSettingsContext = () => React__default.useContext(SettingsContext);
384
- function Settings(_a) {
385
- var { loading, renderLoading, children, view = 'normal', renderRightAdornment, renderSectionRightAdornment, showRightAdornmentOnHover = true } = _a, props = __rest(_a, ["loading", "renderLoading", "children", "view", "renderRightAdornment", "renderSectionRightAdornment", "showRightAdornmentOnHover"]);
386
- if (loading) {
387
- return (React__default.createElement("div", { className: b({ loading: true, view }) }, typeof renderLoading === 'function' ? (renderLoading()) : (React__default.createElement(Loader, { className: b('loader'), size: "m" }))));
388
- }
389
- return (React__default.createElement(SettingsContext.Provider, { value: { renderRightAdornment, renderSectionRightAdornment, showRightAdornmentOnHover } },
390
- React__default.createElement(SettingsContent, Object.assign({ view: view }, props), children)));
391
- }
392
- const getPageTitleById = (menu, activePage) => {
393
- for (const firstLevel of menu) {
394
- if ('groupTitle' in firstLevel) {
395
- for (const secondLevel of firstLevel.items)
396
- if (secondLevel.id === activePage)
397
- return secondLevel.title;
398
- }
399
- else if (firstLevel.id === activePage)
400
- return firstLevel.title;
401
- }
402
- return '';
403
- };
404
- function SettingsContent({ initialPage, initialSearch, selection, children, renderNotFound, title = i18n('label_title'), filterPlaceholder = i18n('label_filter-placeholder'), emptyPlaceholder = i18n('label_empty-placeholder'), view, onPageChange, onClose, }) {
405
- var _a, _b;
406
- const { renderSectionRightAdornment, showRightAdornmentOnHover } = useSettingsContext();
407
- const [search, setSearch] = React__default.useState(initialSearch !== null && initialSearch !== void 0 ? initialSearch : '');
408
- const { menu, pages } = getSettingsFromChildren(children, search);
409
- const selected = useSettingsSelectionProviderValue(pages, selection);
410
- const pageKeys = Object.keys(pages);
411
- const selectionInitialPage = selected.page && pageKeys.includes(selected.page.id) ? selected.page.id : undefined;
412
- const [selectedPage, setCurrentPage] = React__default.useState(selectionInitialPage ||
413
- (initialPage && pageKeys.includes(initialPage) ? initialPage : undefined));
414
- const searchInputRef = React__default.useRef(null);
415
- const menuRef = React__default.useRef(null);
416
- const isMobile = view === 'mobile';
417
- React__default.useEffect(() => {
418
- var _a;
419
- (_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.clearFocus();
420
- }, [search]);
421
- React__default.useEffect(() => {
422
- const handler = () => {
423
- var _a;
424
- (_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.clearFocus();
425
- };
426
- window.addEventListener('click', handler);
427
- return () => {
428
- window.removeEventListener('click', handler);
429
- };
430
- }, []);
431
- let activePage = selectedPage;
432
- if (!activePage || ((_a = pages[activePage]) === null || _a === void 0 ? void 0 : _a.hidden)) {
433
- activePage = (_b = Object.values(pages).find(({ hidden }) => !hidden)) === null || _b === void 0 ? void 0 : _b.id;
434
- }
435
- const handlePageChange = (newPage) => {
436
- setCurrentPage((prevPage) => {
437
- if (prevPage !== newPage) {
438
- onPageChange === null || onPageChange === void 0 ? void 0 : onPageChange(newPage);
439
- }
440
- return newPage;
441
- });
442
- };
443
- React__default.useEffect(() => {
444
- if (activePage !== selectedPage) {
445
- handlePageChange(activePage);
446
- }
447
- });
448
- React__default.useEffect(() => {
449
- if (!selectionInitialPage)
450
- return;
451
- setCurrentPage(selectionInitialPage);
452
- }, [selectionInitialPage]);
453
- React__default.useEffect(() => {
454
- var _a;
455
- if ((_a = selected.selectedRef) === null || _a === void 0 ? void 0 : _a.current) {
456
- selected.selectedRef.current.scrollIntoView();
457
- }
458
- }, [selected.selectedRef]);
459
- const renderSetting = ({ title: settingTitle, element }) => {
460
- return (React__default.createElement("div", { key: settingTitle, className: b('section-item') }, React__default.cloneElement(element, Object.assign(Object.assign({}, element.props), { highlightedTitle: search && settingTitle ? prepareTitle(settingTitle, search) : settingTitle }))));
461
- };
462
- const renderSection = (page, section) => {
463
- const isSelected = isSectionSelected(selected, page, section);
464
- return (React__default.createElement("div", { key: section.title, className: b('section', { selected: isSelected, 'only-child': section.onlyChild }), ref: isSelected ? selected.selectedRef : undefined },
465
- section.showTitle && (React__default.createElement("h3", { className: b('section-heading') }, renderSectionRightAdornment ? (React__default.createElement(Flex, { gap: 2, alignItems: 'center' },
466
- section.title,
467
- React__default.createElement("div", { className: b('section-right-adornment', {
468
- hidden: showRightAdornmentOnHover,
469
- }) }, renderSectionRightAdornment(section)))) : (section.title))),
470
- section.header &&
471
- (isMobile ? (React__default.createElement("div", { className: b('section-subheader') }, section.header)) : (section.header)),
472
- section.items.map((setting) => (setting.hidden ? null : renderSetting(setting)))));
473
- };
474
- const renderPageContent = (page) => {
475
- if (!page) {
476
- return typeof renderNotFound === 'function' ? (renderNotFound()) : (React__default.createElement("div", { className: b('not-found') }, emptyPlaceholder));
477
- }
478
- const filteredSections = pages[page].sections.filter((section) => !section.hidden);
479
- return (React__default.createElement(React__default.Fragment, null,
480
- !isMobile && (React__default.createElement(Title, { hasSeparator: true, onClose: onClose }, getPageTitleById(menu, page))),
481
- React__default.createElement("div", { className: b('content') }, filteredSections.map((section) => renderSection(page, section)))));
482
- };
483
- return (React__default.createElement(SettingsSelectionContextProvider, { value: selected },
484
- React__default.createElement("div", { className: b({ view }) },
485
- isMobile ? (React__default.createElement(React__default.Fragment, null,
486
- React__default.createElement(SettingsSearch, { inputRef: searchInputRef, className: b('search'), initialValue: initialSearch, onChange: setSearch, autoFocus: false, inputSize: 'xl' }),
487
- React__default.createElement(SettingsMenuMobile, { items: menu, onChange: handlePageChange, activeItemId: activePage, className: b('tabs') }))) : (React__default.createElement("div", { className: b('menu'), onClick: () => {
488
- if (searchInputRef.current) {
489
- searchInputRef.current.focus();
490
- }
491
- }, onKeyDown: (event) => {
492
- if (menuRef.current) {
493
- if (menuRef.current.handleKeyDown(event)) {
494
- event.preventDefault();
495
- }
496
- }
497
- } },
498
- React__default.createElement(Title, null, title),
499
- React__default.createElement(SettingsSearch, { inputRef: searchInputRef, className: b('search'), initialValue: initialSearch, onChange: setSearch, placeholder: filterPlaceholder, autoFocus: true }),
500
- React__default.createElement(SettingsMenu, { ref: menuRef, items: menu, onChange: handlePageChange, activeItemId: activePage }))),
501
- React__default.createElement("div", { className: b('page') }, renderPageContent(activePage)))));
502
- }
503
- Settings.Group = function SettingsGroup({ children }) {
504
- return React__default.createElement(React__default.Fragment, null, children);
505
- };
506
- Settings.Page = function SettingsPage({ children }) {
507
- return React__default.createElement(React__default.Fragment, null, children);
508
- };
509
- Settings.Section = function SettingsSection({ children }) {
510
- return React__default.createElement(React__default.Fragment, null, children);
511
- };
512
- Settings.Item = function SettingsItem(setting) {
513
- const { id, labelId, highlightedTitle, children, align = 'center', withBadge, renderTitleComponent = identity_1, mode, description, } = setting;
514
- const selected = useSettingsSelectionContext();
515
- const isSettingSelected = selected.setting && selected.setting.id === id;
516
- const { renderRightAdornment, showRightAdornmentOnHover } = useSettingsContext();
517
- const titleNode = (React__default.createElement("span", { className: b('item-title', { badge: withBadge }) }, renderTitleComponent(highlightedTitle)));
518
- return (React__default.createElement("div", { className: b('item', { align, mode, selected: isSettingSelected }), ref: isSettingSelected ? selected.selectedRef : undefined },
519
- React__default.createElement("label", { className: b('item-heading'), id: labelId },
520
- renderRightAdornment ? (React__default.createElement(Flex, { className: b('item-title-wrapper'), gap: 3 },
521
- titleNode,
522
- React__default.createElement("div", { className: b('item-right-adornment', {
523
- hidden: showRightAdornmentOnHover,
524
- }) }, renderRightAdornment(setting)))) : (titleNode),
525
- description ? React__default.createElement("span", { className: b('item-description') }, description) : null),
526
- React__default.createElement("div", { className: b('item-content') }, children)));
527
- };
528
- function prepareTitle(string, search) {
529
- let temp = string.slice(0);
530
- const title = [];
531
- const parts = escapeStringForRegExp(search).split(' ').filter(Boolean);
532
- let key = 0;
533
- for (const part of parts) {
534
- const regex = new RegExp(part, 'ig');
535
- const match = regex.exec(temp);
536
- if (match) {
537
- const m = match[0];
538
- const i = match.index;
539
- if (i > 0) {
540
- title.push(temp.slice(0, i));
541
- }
542
- title.push(React__default.createElement("strong", { key: key++, className: b('found') }, m));
543
- temp = temp.slice(i + m.length);
544
- }
545
- }
546
- if (temp) {
547
- title.push(temp);
548
- }
549
- return title;
550
- }
551
-
552
- export { Settings as S, useSettingsContext as a, useSettingsSelectionContext as u };
553
- //# sourceMappingURL=Settings-e660a4c5.js.map