@gravity-ui/navigation 3.0.0-beta.0 → 3.0.0-beta.2

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 (71) hide show
  1. package/build/cjs/AsideHeader.js +2 -2
  2. package/build/cjs/AsideHeaderContext.js.map +1 -1
  3. package/build/cjs/Drawer.js +2 -5
  4. package/build/cjs/Drawer.js.map +1 -1
  5. package/build/cjs/{FooterItem-Bl_XrJ67.js → FooterItem-CLk0aHrc.js} +4 -4
  6. package/build/cjs/FooterItem-CLk0aHrc.js.map +1 -0
  7. package/build/cjs/FooterItem.js +1 -1
  8. package/build/cjs/{HotkeysPanel-D1wI7tZj.js → HotkeysPanel-C436myZY.js} +3 -3
  9. package/build/cjs/HotkeysPanel-C436myZY.js.map +1 -0
  10. package/build/cjs/{Item-B_-IH1_h.js → Item-CLHysLDd.js} +60 -27
  11. package/build/cjs/Item-CLHysLDd.js.map +1 -0
  12. package/build/cjs/PageLayout.js +1 -1
  13. package/build/cjs/{PageLayoutAside-BzYF9W7M.js → PageLayoutAside-SMHlPBAO.js} +40 -14
  14. package/build/cjs/PageLayoutAside-SMHlPBAO.js.map +1 -0
  15. package/build/cjs/PageLayoutAside.js +2 -2
  16. package/build/cjs/{Settings-D6-a2hgE.js → Settings-x0a3P0Vr.js} +6 -7
  17. package/build/cjs/Settings-x0a3P0Vr.js.map +1 -0
  18. package/build/cjs/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.d.ts +3 -0
  19. package/build/cjs/components/AsideHeader/AsideHeaderContext.d.ts +1 -0
  20. package/build/cjs/components/AsideHeader/__stories__/moc.d.ts +3 -3
  21. package/build/cjs/components/AsideHeader/types.d.ts +3 -0
  22. package/build/cjs/components/Drawer/Drawer.d.ts +0 -5
  23. package/build/cjs/components/HotkeysPanel/HotkeysPanel.d.ts +1 -3
  24. package/build/cjs/components/Settings/Settings.d.ts +1 -3
  25. package/build/cjs/components/Settings/collect-settings.d.ts +0 -2
  26. package/build/cjs/components/types.d.ts +5 -1
  27. package/build/cjs/index3.js +1 -1
  28. package/build/cjs/index4.js +1 -1
  29. package/build/cjs/index5.js +1 -1
  30. package/build/cjs/index6.js +5 -5
  31. package/build/esm/AsideHeader.js +2 -2
  32. package/build/esm/AsideHeaderContext.js.map +1 -1
  33. package/build/esm/Drawer.js +2 -5
  34. package/build/esm/Drawer.js.map +1 -1
  35. package/build/esm/{FooterItem-BP7Ya02G.js → FooterItem-DuFjLZPI.js} +4 -4
  36. package/build/esm/FooterItem-DuFjLZPI.js.map +1 -0
  37. package/build/esm/FooterItem.js +1 -1
  38. package/build/esm/{HotkeysPanel-BiJ8VcX-.js → HotkeysPanel-BWL1Xkqi.js} +3 -3
  39. package/build/esm/HotkeysPanel-BWL1Xkqi.js.map +1 -0
  40. package/build/esm/{Item-BnjbUb88.js → Item-BU0M-jfC.js} +61 -28
  41. package/build/esm/Item-BU0M-jfC.js.map +1 -0
  42. package/build/esm/PageLayout.js +1 -1
  43. package/build/esm/{PageLayoutAside-DQVfkCeA.js → PageLayoutAside-Bd3aJNrH.js} +41 -15
  44. package/build/esm/PageLayoutAside-Bd3aJNrH.js.map +1 -0
  45. package/build/esm/PageLayoutAside.js +2 -2
  46. package/build/esm/{Settings-BPE0n6i2.js → Settings-BC6Kmplf.js} +6 -7
  47. package/build/esm/Settings-BC6Kmplf.js.map +1 -0
  48. package/build/esm/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.d.ts +3 -0
  49. package/build/esm/components/AsideHeader/AsideHeaderContext.d.ts +1 -0
  50. package/build/esm/components/AsideHeader/__stories__/moc.d.ts +3 -3
  51. package/build/esm/components/AsideHeader/types.d.ts +3 -0
  52. package/build/esm/components/Drawer/Drawer.d.ts +0 -5
  53. package/build/esm/components/HotkeysPanel/HotkeysPanel.d.ts +1 -3
  54. package/build/esm/components/Settings/Settings.d.ts +1 -3
  55. package/build/esm/components/Settings/collect-settings.d.ts +0 -2
  56. package/build/esm/components/types.d.ts +5 -1
  57. package/build/esm/index3.js +1 -1
  58. package/build/esm/index4.js +1 -1
  59. package/build/esm/index5.js +1 -1
  60. package/build/esm/index6.js +6 -6
  61. package/package.json +1 -1
  62. package/build/cjs/FooterItem-Bl_XrJ67.js.map +0 -1
  63. package/build/cjs/HotkeysPanel-D1wI7tZj.js.map +0 -1
  64. package/build/cjs/Item-B_-IH1_h.js.map +0 -1
  65. package/build/cjs/PageLayoutAside-BzYF9W7M.js.map +0 -1
  66. package/build/cjs/Settings-D6-a2hgE.js.map +0 -1
  67. package/build/esm/FooterItem-BP7Ya02G.js.map +0 -1
  68. package/build/esm/HotkeysPanel-BiJ8VcX-.js.map +0 -1
  69. package/build/esm/Item-BnjbUb88.js.map +0 -1
  70. package/build/esm/PageLayoutAside-DQVfkCeA.js.map +0 -1
  71. package/build/esm/Settings-BPE0n6i2.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"PageLayoutAside-BzYF9W7M.js","sources":["../../../src/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.tsx","../../../src/components/AllPagesPanel/i18n/index.ts","../../../src/components/AllPagesPanel/constants.ts","../../../src/components/AllPagesPanel/useGroupedMenuItems.ts","../../../src/components/AllPagesPanel/AllPagesPanel.tsx","../../../src/components/AllPagesPanel/useVisibleMenuItems.ts","../../node_modules/react-virtualized-auto-sizer/dist/react-virtualized-auto-sizer.esm.js","../../../src/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.tsx","../../../src/components/CompositeBar/MultipleTooltip/MultipleTooltip.tsx","../../../src/components/CompositeBar/CompositeBar.tsx","../../../src/components/AsideHeader/i18n/index.ts","../../assets/icons/control-menu-button.svg","../../../src/components/AsideHeader/components/CollapseButton/CollapseButton.tsx","../../../src/components/Logo/Logo.tsx","../../../src/components/AsideHeader/components/Header.tsx","../../../src/components/AsideHeader/components/Panels.tsx","../../../src/components/AsideHeader/components/FirstPanel.tsx","../../../src/components/AsideHeader/types.tsx","../../../src/components/AsideHeader/useAsideHeaderInnerContextValue.tsx","../../../src/components/AsideHeader/components/PageLayout/PageLayoutAside.tsx"],"sourcesContent":["import React, {MouseEvent, useCallback} from 'react';\n\nimport {Pin, PinFill} from '@gravity-ui/icons';\nimport {Button, Icon} from '@gravity-ui/uikit';\n\nimport {MenuItem} from '../../types';\nimport {block} from '../../utils/cn';\n\nimport './AllPagesListItem.scss';\n\nconst b = block('all-pages-list-item');\n\ninterface AllPagesListItemProps {\n item: MenuItem;\n editMode?: boolean;\n onToggle: () => void;\n}\n\nexport const AllPagesListItem: React.FC<AllPagesListItemProps> = (props) => {\n const {item, editMode, onToggle} = props;\n const onPinButtonClick = useCallback(\n (e: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n e.stopPropagation();\n e.preventDefault();\n onToggle();\n },\n [onToggle],\n );\n\n const onItemClick = (e: MouseEvent<HTMLElement>) => {\n if (editMode) {\n e.stopPropagation();\n e.preventDefault();\n }\n };\n\n const [Tag, tagProps] = item.link ? ['a' as const, {href: item.link}] : ['button' as const, {}];\n\n return (\n <Tag {...tagProps} className={b()} onClick={onItemClick}>\n {item.icon ? (\n <Icon className={b('icon')} data={item.icon} size={item.iconSize} />\n ) : null}\n <span className={b('text')}>{item.title}</span>\n {editMode && !item.preventUserRemoving && (\n <Button\n onClick={onPinButtonClick}\n view={item.hidden ? 'flat-secondary' : 'flat-action'}\n >\n <Button.Icon>{item.hidden ? <Pin /> : <PinFill />}</Button.Icon>\n </Button>\n )}\n </Tag>\n );\n};\n","import {addComponentKeysets} from '@gravity-ui/uikit/i18n';\n\nimport {NAMESPACE} from '../../utils/cn';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nconst COMPONENT = 'AllPagesPanel';\nexport default addComponentKeysets({en, ru}, `${NAMESPACE}${COMPONENT}`);\n","import {Ellipsis} from '@gravity-ui/icons';\n\nimport {MenuItem} from '../types';\n\nimport i18n from './i18n';\n\nexport const ALL_PAGES_ID = 'all-pages' as const;\n\nexport function getAllPagesMenuItem(): MenuItem {\n return {\n id: ALL_PAGES_ID,\n title: i18n('menu-item.all-pages.title'),\n tooltipText: i18n('menu-item.all-pages.title'),\n icon: Ellipsis,\n };\n}\n","import {useMemo} from 'react';\n\nimport {MenuItem} from '../types';\n\nimport {ALL_PAGES_ID} from './constants';\nimport i18n from './i18n';\n\nexport const useGroupedMenuItems = (items: MenuItem[]) => {\n const allPagesMenuItems = useMemo(() => {\n const filteredItems = items.filter(\n (item) => item.type !== 'divider' && item.id !== ALL_PAGES_ID,\n );\n filteredItems.sort((a, b) => {\n if (a.type === 'action') {\n return 1;\n }\n if (b.type === 'action') {\n return -1;\n }\n return 0;\n });\n const groupedItems = filteredItems.reduce(\n (acc, item) => {\n const category = item.category || i18n('all-panel.menu.category.allOther');\n if (!acc[category]) {\n acc[category] = [];\n }\n acc[category].push(item);\n return acc;\n },\n {} as {[key: string]: MenuItem[]},\n );\n return groupedItems;\n }, [items]);\n\n return allPagesMenuItems;\n};\n","import React, {useCallback, useEffect, useRef, useState} from 'react';\n\nimport {Gear} from '@gravity-ui/icons';\nimport {Button, Flex, Icon, List, ListItemData, Text} from '@gravity-ui/uikit';\n\nimport {useAsideHeaderInnerContext} from '../AsideHeader/AsideHeaderContext';\nimport {MenuItem} from '../types';\nimport {block} from '../utils/cn';\n\nimport {AllPagesListItem} from './AllPagesListItem';\nimport {ALL_PAGES_ID} from './constants';\nimport i18n from './i18n';\nimport {useGroupedMenuItems} from './useGroupedMenuItems';\n\nimport './AllPagesPanel.scss';\n\nconst b = block('all-pages-panel');\n\ninterface AllPagesPanelProps {\n className?: string;\n startEditIcon?: React.ReactNode;\n onEditModeChanged?: (isEditMode: boolean) => void;\n}\n\nexport const AllPagesPanel: React.FC<AllPagesPanelProps> = (props) => {\n const {startEditIcon, onEditModeChanged, className} = props;\n const {menuItems, onMenuItemsChanged, editMenuProps} = useAsideHeaderInnerContext();\n\n const menuItemsRef = useRef(menuItems);\n menuItemsRef.current = menuItems;\n\n const [isEditMode, setIsEditMode] = useState(false);\n const toggleEditMode = useCallback(() => {\n setIsEditMode((prev) => !prev);\n }, []);\n\n const groupedItems = useGroupedMenuItems(menuItems);\n\n useEffect(() => {\n onEditModeChanged?.(isEditMode);\n\n if (isEditMode) {\n editMenuProps?.onOpenEditMode?.();\n }\n }, [isEditMode, onEditModeChanged, editMenuProps]);\n\n const onItemClick = useCallback((item: ListItemData<MenuItem>) => {\n //@ts-ignore TODO fix when @gravity-ui/uikit/List will provide event arg on item click\n item.onItemClick?.(item, false);\n }, []);\n\n const togglePageVisibility = useCallback(\n (item: MenuItem) => {\n if (!onMenuItemsChanged) {\n return;\n }\n const changedItem: MenuItem = {...item, hidden: !item.hidden};\n\n const originItems = menuItemsRef.current.filter(\n (menuItem) => menuItem.id !== ALL_PAGES_ID,\n );\n editMenuProps?.onToggleMenuItem?.(changedItem);\n onMenuItemsChanged(\n originItems.map((menuItem) => {\n if (menuItem.id !== changedItem.id) {\n return menuItem;\n }\n return changedItem;\n }),\n );\n },\n [onMenuItemsChanged, editMenuProps],\n );\n\n const itemRender = useCallback(\n (item: ListItemData<MenuItem>, _isActive: boolean, _itemIndex: number) => (\n <AllPagesListItem\n item={item}\n editMode={isEditMode}\n onToggle={() => togglePageVisibility(item)}\n />\n ),\n [isEditMode, togglePageVisibility],\n );\n\n const onResetToDefaultClick = useCallback(() => {\n if (!onMenuItemsChanged) {\n return;\n }\n editMenuProps?.onResetSettingsToDefault?.();\n const originItems = menuItemsRef.current.filter((item) => item.id !== ALL_PAGES_ID);\n onMenuItemsChanged(\n originItems.map((item) => ({\n ...item,\n hidden: false,\n })),\n );\n }, [onMenuItemsChanged, editMenuProps]);\n return (\n <Flex className={b(null, className)} gap=\"5\" direction=\"column\">\n <Flex gap=\"4\" alignItems=\"center\" justifyContent=\"space-between\">\n <Text variant=\"subheader-2\">\n {isEditMode ? i18n('all-panel.title.editing') : i18n('all-panel.title.main')}\n </Text>\n <Button selected={isEditMode} view=\"normal\" onClick={toggleEditMode}>\n {startEditIcon ? startEditIcon : <Icon data={Gear} />}\n </Button>\n </Flex>\n <Flex className={b('content')} gap=\"5\" direction=\"column\">\n {Object.keys(groupedItems).map((category) => {\n return (\n <Flex key={category} direction=\"column\" gap=\"3\">\n <Text className={b('category')} variant=\"body-1\" color=\"secondary\">\n {category}\n </Text>\n <List\n virtualized={false}\n filterable={false}\n items={groupedItems[category]}\n onItemClick={onItemClick}\n renderItem={itemRender}\n />\n </Flex>\n );\n })}\n </Flex>\n {isEditMode && (\n <Button onClick={onResetToDefaultClick}>{i18n('all-panel.resetToDefault')}</Button>\n )}\n </Flex>\n );\n};\n","import {useMemo} from 'react';\n\nimport {useAsideHeaderInnerContext} from '../AsideHeader/AsideHeaderContext';\nimport {MenuItem} from '../types';\n\nexport const useVisibleMenuItems = (): MenuItem[] => {\n const {menuItems, allPagesIsAvailable} = useAsideHeaderInnerContext();\n return useMemo(() => {\n if (!allPagesIsAvailable) {\n return menuItems;\n }\n let lastVisibleIndex = 0;\n return menuItems.filter((item: MenuItem, index: number, items: MenuItem[]): boolean => {\n if (item.hidden) {\n return false;\n }\n\n if (\n index > 0 &&\n item.type === 'divider' &&\n (items[lastVisibleIndex].type === 'divider' || items[lastVisibleIndex].hidden)\n ) {\n return false;\n }\n lastVisibleIndex = index;\n return true;\n });\n }, [allPagesIsAvailable, menuItems]);\n};\n","import { Component, createElement } from 'react';\n\n/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n * 5) Use 'export' statement over 'module.exports' assignment\n **/\n\n// Check `document` and `window` in case of server-side rendering\nlet windowObject;\nif (typeof window !== \"undefined\") {\n windowObject = window;\n\n // eslint-disable-next-line no-restricted-globals\n} else if (typeof self !== \"undefined\") {\n // eslint-disable-next-line no-restricted-globals\n windowObject = self;\n} else {\n windowObject = global;\n}\nlet cancelFrame = null;\nlet requestFrame = null;\nconst TIMEOUT_DURATION = 20;\nconst clearTimeoutFn = windowObject.clearTimeout;\nconst setTimeoutFn = windowObject.setTimeout;\nconst cancelAnimationFrameFn = windowObject.cancelAnimationFrame || windowObject.mozCancelAnimationFrame || windowObject.webkitCancelAnimationFrame;\nconst requestAnimationFrameFn = windowObject.requestAnimationFrame || windowObject.mozRequestAnimationFrame || windowObject.webkitRequestAnimationFrame;\nif (cancelAnimationFrameFn == null || requestAnimationFrameFn == null) {\n // For environments that don't support animation frame,\n // fallback to a setTimeout based approach.\n cancelFrame = clearTimeoutFn;\n requestFrame = function requestAnimationFrameViaSetTimeout(callback) {\n return setTimeoutFn(callback, TIMEOUT_DURATION);\n };\n} else {\n // Counter intuitively, environments that support animation frames can be trickier.\n // Chrome's \"Throttle non-visible cross-origin iframes\" flag can prevent rAFs from being called.\n // In this case, we should fallback to a setTimeout() implementation.\n cancelFrame = function cancelFrame([animationFrameID, timeoutID]) {\n cancelAnimationFrameFn(animationFrameID);\n clearTimeoutFn(timeoutID);\n };\n requestFrame = function requestAnimationFrameWithSetTimeoutFallback(callback) {\n const animationFrameID = requestAnimationFrameFn(function animationFrameCallback() {\n clearTimeoutFn(timeoutID);\n callback();\n });\n const timeoutID = setTimeoutFn(function timeoutCallback() {\n cancelAnimationFrameFn(animationFrameID);\n callback();\n }, TIMEOUT_DURATION);\n return [animationFrameID, timeoutID];\n };\n}\nfunction createDetectElementResize(nonce) {\n let animationKeyframes;\n let animationName;\n let animationStartEvent;\n let animationStyle;\n let checkTriggers;\n let resetTriggers;\n let scrollListener;\n const attachEvent = typeof document !== \"undefined\" && document.attachEvent;\n if (!attachEvent) {\n resetTriggers = function (element) {\n const triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + \"px\";\n expandChild.style.height = expand.offsetHeight + 1 + \"px\";\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n checkTriggers = function (element) {\n return element.offsetWidth !== element.__resizeLast__.width || element.offsetHeight !== element.__resizeLast__.height;\n };\n scrollListener = function (e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className && typeof e.target.className.indexOf === \"function\" && e.target.className.indexOf(\"contract-trigger\") < 0 && e.target.className.indexOf(\"expand-trigger\") < 0) {\n return;\n }\n const element = this;\n resetTriggers(this);\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n this.__resizeRAF__ = requestFrame(function animationFrame() {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n element.__resizeListeners__.forEach(function forEachResizeListener(fn) {\n fn.call(element, e);\n });\n }\n });\n };\n\n /* Detect CSS Animations support to detect element display/re-attach */\n let animation = false;\n let keyframeprefix = \"\";\n animationStartEvent = \"animationstart\";\n const domPrefixes = \"Webkit Moz O ms\".split(\" \");\n let startEvents = \"webkitAnimationStart animationstart oAnimationStart MSAnimationStart\".split(\" \");\n let pfx = \"\";\n {\n const elm = document.createElement(\"fakeelement\");\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n if (animation === false) {\n for (let i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + \"AnimationName\"] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = \"-\" + pfx.toLowerCase() + \"-\";\n animationStartEvent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n animationName = \"resizeanim\";\n animationKeyframes = \"@\" + keyframeprefix + \"keyframes \" + animationName + \" { from { opacity: 0; } to { opacity: 0; } } \";\n animationStyle = keyframeprefix + \"animation: 1ms \" + animationName + \"; \";\n }\n const createStyles = function (doc) {\n if (!doc.getElementById(\"detectElementResize\")) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n const css = (animationKeyframes ? animationKeyframes : \"\") + \".resize-triggers { \" + (animationStyle ? animationStyle : \"\") + \"visibility: hidden; opacity: 0; } \" + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName(\"head\")[0],\n style = doc.createElement(\"style\");\n style.id = \"detectElementResize\";\n style.type = \"text/css\";\n if (nonce != null) {\n style.setAttribute(\"nonce\", nonce);\n }\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n head.appendChild(style);\n }\n };\n const addResizeListener = function (element, fn) {\n if (attachEvent) {\n element.attachEvent(\"onresize\", fn);\n } else {\n if (!element.__resizeTriggers__) {\n const doc = element.ownerDocument;\n const elementStyle = windowObject.getComputedStyle(element);\n if (elementStyle && elementStyle.position === \"static\") {\n element.style.position = \"relative\";\n }\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement(\"div\")).className = \"resize-triggers\";\n const expandTrigger = doc.createElement(\"div\");\n expandTrigger.className = \"expand-trigger\";\n expandTrigger.appendChild(doc.createElement(\"div\"));\n const contractTrigger = doc.createElement(\"div\");\n contractTrigger.className = \"contract-trigger\";\n element.__resizeTriggers__.appendChild(expandTrigger);\n element.__resizeTriggers__.appendChild(contractTrigger);\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener(\"scroll\", scrollListener, true);\n\n /* Listen for a css animation to detect element display/re-attach */\n if (animationStartEvent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName === animationName) {\n resetTriggers(element);\n }\n };\n element.__resizeTriggers__.addEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n }\n }\n element.__resizeListeners__.push(fn);\n }\n };\n const removeResizeListener = function (element, fn) {\n if (attachEvent) {\n element.detachEvent(\"onresize\", fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n if (!element.__resizeListeners__.length) {\n element.removeEventListener(\"scroll\", scrollListener, true);\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n element.__resizeTriggers__.__animationListener__ = null;\n }\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {\n // Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n return {\n addResizeListener,\n removeResizeListener\n };\n}\n\nclass AutoSizer extends Component {\n constructor(...args) {\n super(...args);\n this.state = {\n height: this.props.defaultHeight || 0,\n scaledHeight: this.props.defaultHeight || 0,\n scaledWidth: this.props.defaultWidth || 0,\n width: this.props.defaultWidth || 0\n };\n this._autoSizer = null;\n this._detectElementResize = null;\n this._parentNode = null;\n this._resizeObserver = null;\n this._timeoutId = null;\n this._onResize = () => {\n this._timeoutId = null;\n const {\n disableHeight,\n disableWidth,\n onResize\n } = this.props;\n if (this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n\n const style = window.getComputedStyle(this._parentNode) || {};\n const paddingLeft = parseFloat(style.paddingLeft || \"0\");\n const paddingRight = parseFloat(style.paddingRight || \"0\");\n const paddingTop = parseFloat(style.paddingTop || \"0\");\n const paddingBottom = parseFloat(style.paddingBottom || \"0\");\n const rect = this._parentNode.getBoundingClientRect();\n const scaledHeight = rect.height - paddingTop - paddingBottom;\n const scaledWidth = rect.width - paddingLeft - paddingRight;\n const height = this._parentNode.offsetHeight - paddingTop - paddingBottom;\n const width = this._parentNode.offsetWidth - paddingLeft - paddingRight;\n if (!disableHeight && (this.state.height !== height || this.state.scaledHeight !== scaledHeight) || !disableWidth && (this.state.width !== width || this.state.scaledWidth !== scaledWidth)) {\n this.setState({\n height,\n width,\n scaledHeight,\n scaledWidth\n });\n if (typeof onResize === \"function\") {\n onResize({\n height,\n scaledHeight,\n scaledWidth,\n width\n });\n }\n }\n }\n };\n this._setRef = autoSizer => {\n this._autoSizer = autoSizer;\n };\n }\n componentDidMount() {\n const {\n nonce\n } = this.props;\n const parentNode = this._autoSizer ? this._autoSizer.parentNode : null;\n if (parentNode != null && parentNode.ownerDocument && parentNode.ownerDocument.defaultView && parentNode instanceof parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = parentNode;\n\n // Use ResizeObserver from the same context where parentNode (which we will observe) was defined\n // Using just global can result into onResize events not being emitted in cases with multiple realms\n const ResizeObserverInstance = parentNode.ownerDocument.defaultView.ResizeObserver;\n if (ResizeObserverInstance != null) {\n this._resizeObserver = new ResizeObserverInstance(() => {\n // Guard against \"ResizeObserver loop limit exceeded\" error;\n // could be triggered if the state update causes the ResizeObserver handler to run long.\n // See https://github.com/bvaughn/react-virtualized-auto-sizer/issues/55\n this._timeoutId = setTimeout(this._onResize, 0);\n });\n this._resizeObserver.observe(parentNode);\n } else {\n // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n this._detectElementResize = createDetectElementResize(nonce);\n this._detectElementResize.addResizeListener(parentNode, this._onResize);\n }\n this._onResize();\n }\n }\n componentWillUnmount() {\n if (this._parentNode) {\n if (this._detectElementResize) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n if (this._timeoutId !== null) {\n clearTimeout(this._timeoutId);\n }\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n }\n }\n }\n render() {\n const {\n children,\n defaultHeight,\n defaultWidth,\n disableHeight = false,\n disableWidth = false,\n doNotBailOutOnEmptyChildren = false,\n nonce,\n onResize,\n style = {},\n tagName = \"div\",\n ...rest\n } = this.props;\n const {\n height,\n scaledHeight,\n scaledWidth,\n width\n } = this.state;\n\n // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n const outerStyle = {\n overflow: \"visible\"\n };\n const childParams = {};\n\n // Avoid rendering children before the initial measurements have been collected.\n // At best this would just be wasting cycles.\n let bailoutOnChildren = false;\n if (!disableHeight) {\n if (height === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.height = 0;\n childParams.height = height;\n childParams.scaledHeight = scaledHeight;\n }\n if (!disableWidth) {\n if (width === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.width = 0;\n childParams.width = width;\n childParams.scaledWidth = scaledWidth;\n }\n if (doNotBailOutOnEmptyChildren) {\n bailoutOnChildren = false;\n }\n return createElement(tagName, {\n ref: this._setRef,\n style: {\n ...outerStyle,\n ...style\n },\n ...rest\n }, !bailoutOnChildren && children(childParams));\n }\n}\n\nfunction isHeightAndWidthProps(props) {\n return props && props.disableHeight !== true && props.disableWidth !== true;\n}\nfunction isHeightOnlyProps(props) {\n return props && props.disableHeight !== true && props.disableWidth === true;\n}\nfunction isWidthOnlyProps(props) {\n return props && props.disableHeight === true && props.disableWidth !== true;\n}\n\nexport { AutoSizer as default, isHeightAndWidthProps, isHeightOnlyProps, isWidthOnlyProps };\n","import React from 'react';\n\ninterface MultipleTooltipContextProps {\n active: boolean;\n activeIndex: number | undefined;\n hideCollapseItemTooltip: boolean;\n lastClickedItemIndex: number | undefined;\n setValue<K extends keyof Omit<MultipleTooltipContextProps, 'setValue'>>(\n value:\n | Pick<Omit<MultipleTooltipContextProps, 'setValue'>, K>\n | Omit<MultipleTooltipContextProps, 'setValue'>,\n ): void;\n}\n\nconst multipleTooltipContextDefaults = {\n active: false,\n activeIndex: undefined,\n hideCollapseItemTooltip: false,\n lastClickedItemIndex: undefined,\n setValue: () => {},\n};\n\nexport const MultipleTooltipContext = React.createContext<MultipleTooltipContextProps>(\n multipleTooltipContextDefaults,\n);\n\ntype MultipleTooltipProviderState = Omit<MultipleTooltipContextProps, 'setValue'>;\n\nexport class MultipleTooltipProvider extends React.PureComponent<\n {children: React.ReactNode},\n MultipleTooltipProviderState\n> {\n state = {\n ...multipleTooltipContextDefaults,\n };\n\n setValue: MultipleTooltipContextProps['setValue'] = (value) => {\n this.setState({...value});\n };\n\n render() {\n const {children} = this.props;\n\n return (\n <MultipleTooltipContext.Provider value={{...this.state, setValue: this.setValue}}>\n {children}\n </MultipleTooltipContext.Provider>\n );\n }\n}\n","import React from 'react';\n\nimport {Popup, PopupProps} from '@gravity-ui/uikit';\n\nimport {MenuItem} from '../../types';\nimport {block} from '../../utils/cn';\nimport {COLLAPSE_ITEM_ID} from '../constants';\n\nimport {MultipleTooltipContext} from './MultipleTooltipContext';\n\nimport './MultipleTooltip.scss';\n\nconst b = block('multiple-tooltip');\n\nconst POPUP_OFFSET: PopupProps['offset'] = {mainAxis: -32, crossAxis: 4};\n\nexport type MultipleTooltipProps = Pick<PopupProps, 'open' | 'anchorRef' | 'placement'> & {\n items: MenuItem[];\n};\n\nexport const MultipleTooltip: React.FC<MultipleTooltipProps> = ({\n items,\n open,\n anchorRef,\n placement,\n}) => {\n const {activeIndex, hideCollapseItemTooltip} = React.useContext(MultipleTooltipContext);\n const activeItem = activeIndex === undefined ? null : items[activeIndex];\n\n return (\n <Popup open={open} anchorRef={anchorRef} placement={placement} offset={POPUP_OFFSET}>\n <div className={b()}>\n {items\n .filter(\n ({type = 'regular', id}) =>\n !hideCollapseItemTooltip ||\n (id !== COLLAPSE_ITEM_ID && type !== 'action'),\n )\n .map((item, idx) => {\n switch (item.type) {\n case 'divider':\n return (\n <div className={b('item', {divider: true})} key={idx}>\n {item.title}\n </div>\n );\n default:\n return (\n <div\n className={b('item', {\n active: item === activeItem,\n })}\n key={idx}\n >\n {item.title}\n </div>\n );\n }\n })}\n </div>\n </Popup>\n );\n};\n","import React, {FC, ReactNode, useCallback, useContext, useRef} from 'react';\n\nimport {List} from '@gravity-ui/uikit';\nimport AutoSizer, {Size} from 'react-virtualized-auto-sizer';\n\nimport {useAsideHeaderContext} from '../AsideHeader/AsideHeaderContext';\nimport {ASIDE_HEADER_COMPACT_WIDTH} from '../constants';\nimport {MenuItem, SubheaderMenuItem} from '../types';\nimport {block} from '../utils/cn';\n\nimport {Item, ItemProps} from './Item/Item';\nimport {MultipleTooltip, MultipleTooltipContext, MultipleTooltipProvider} from './MultipleTooltip';\nimport {COLLAPSE_ITEM_ID} from './constants';\nimport {\n getAutosizeListItems,\n getItemHeight,\n getItemsHeight,\n getItemsMinHeight,\n getMoreButtonItem,\n getSelectedItemIndex,\n isMenuItem,\n} from './utils';\n\nimport './CompositeBar.scss';\n\nconst b = block('composite-bar');\n\nexport type CompositeBarItem = MenuItem | SubheaderMenuItem;\n\ntype CompositeBarItems =\n | {type: 'menu'; items: MenuItem[]}\n | {type: 'subheader'; items: SubheaderMenuItem[]};\n\nexport type CompositeBarProps = CompositeBarItems & {\n onItemClick?: (\n item: MenuItem,\n collapsed: boolean,\n event: React.MouseEvent<HTMLElement, MouseEvent>,\n ) => void;\n multipleTooltip?: boolean;\n menuMoreTitle?: string;\n onMoreClick?: () => void;\n};\n\ntype CompositeBarViewProps = CompositeBarProps & {\n collapseItems?: MenuItem[];\n};\n\nconst CompositeBarView: FC<CompositeBarViewProps> = ({\n type,\n items,\n onItemClick,\n onMoreClick,\n collapseItems,\n multipleTooltip = false,\n}) => {\n const ref = useRef<List<CompositeBarItem>>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n\n const {\n setValue: setMultipleTooltipContextValue,\n active: multipleTooltipActive,\n activeIndex,\n lastClickedItemIndex,\n } = useContext(MultipleTooltipContext);\n const {compact} = useAsideHeaderContext();\n\n React.useEffect(() => {\n function handleBlurWindow() {\n if (multipleTooltip && multipleTooltipActive) {\n setMultipleTooltipContextValue({active: false});\n }\n }\n\n window.addEventListener('blur', handleBlurWindow);\n\n return () => {\n window.removeEventListener('blur', handleBlurWindow);\n };\n }, [multipleTooltip, multipleTooltipActive, setMultipleTooltipContextValue]);\n\n const onTooltipMouseEnter = useCallback(\n (e: {clientX: number}) => {\n if (\n multipleTooltip &&\n compact &&\n !multipleTooltipActive &&\n document.hasFocus() &&\n activeIndex !== lastClickedItemIndex &&\n e.clientX <= ASIDE_HEADER_COMPACT_WIDTH\n ) {\n setMultipleTooltipContextValue?.({\n active: true,\n });\n }\n },\n [\n multipleTooltip,\n compact,\n multipleTooltipActive,\n activeIndex,\n lastClickedItemIndex,\n setMultipleTooltipContextValue,\n ],\n );\n\n const onTooltipMouseLeave = useCallback(() => {\n if (multipleTooltip && multipleTooltipActive && document.hasFocus()) {\n setMultipleTooltipContextValue?.({\n active: false,\n lastClickedItemIndex: undefined,\n });\n }\n }, [multipleTooltip, multipleTooltipActive, setMultipleTooltipContextValue]);\n\n const onMouseEnterByIndex = useCallback(\n (itemIndex: number) => () => {\n if (multipleTooltip && document.hasFocus()) {\n let multipleTooltipActiveValue = multipleTooltipActive;\n if (!multipleTooltipActive && itemIndex !== lastClickedItemIndex) {\n multipleTooltipActiveValue = true;\n }\n if (\n activeIndex === itemIndex &&\n multipleTooltipActive === multipleTooltipActiveValue\n ) {\n return;\n }\n setMultipleTooltipContextValue({\n activeIndex: itemIndex,\n active: multipleTooltipActiveValue,\n });\n }\n },\n [\n multipleTooltip,\n multipleTooltipActive,\n lastClickedItemIndex,\n activeIndex,\n setMultipleTooltipContextValue,\n ],\n );\n\n const onMouseLeave = useCallback(() => {\n if (compact && document.hasFocus()) {\n ref.current?.activateItem(undefined as unknown as number);\n if (\n multipleTooltip &&\n (activeIndex !== undefined || lastClickedItemIndex !== undefined)\n ) {\n setMultipleTooltipContextValue({\n activeIndex: undefined,\n lastClickedItemIndex: undefined,\n });\n }\n }\n }, [\n activeIndex,\n compact,\n lastClickedItemIndex,\n multipleTooltip,\n setMultipleTooltipContextValue,\n ]);\n\n const onItemClickByIndex = useCallback(\n (itemIndex: number): ItemProps['onItemClick'] =>\n (item, collapsed, event) => {\n if (\n compact &&\n multipleTooltip &&\n itemIndex !== lastClickedItemIndex &&\n item.id !== COLLAPSE_ITEM_ID\n ) {\n setMultipleTooltipContextValue({\n lastClickedItemIndex: itemIndex,\n active: false,\n });\n }\n onItemClick?.(item, collapsed, event);\n },\n [\n compact,\n lastClickedItemIndex,\n multipleTooltip,\n onItemClick,\n setMultipleTooltipContextValue,\n ],\n );\n\n return (\n <React.Fragment>\n <div\n ref={tooltipRef}\n onMouseEnter={onTooltipMouseEnter}\n onMouseLeave={onTooltipMouseLeave}\n >\n <List<CompositeBarItem>\n ref={ref}\n items={items}\n selectedItemIndex={type === 'menu' ? getSelectedItemIndex(items) : undefined}\n itemHeight={getItemHeight}\n itemsHeight={getItemsHeight}\n itemClassName={b('root-menu-item')}\n virtualized={false}\n filterable={false}\n sortable={false}\n renderItem={(item, _isItemActive, itemIndex) => {\n const itemExtraProps = isMenuItem(item) ? {item} : item;\n const enableTooltip = isMenuItem(item)\n ? !multipleTooltip\n : item.enableTooltip;\n\n return (\n <Item\n {...itemExtraProps}\n enableTooltip={enableTooltip}\n onMouseEnter={onMouseEnterByIndex(itemIndex)}\n onMouseLeave={onMouseLeave}\n onItemClick={onItemClickByIndex(itemIndex)}\n onCollapseItemClick={onMoreClick}\n collapseItems={collapseItems}\n />\n );\n }}\n />\n </div>\n {type === 'menu' && multipleTooltip && (\n <MultipleTooltip\n open={compact && multipleTooltipActive}\n anchorRef={tooltipRef}\n placement={['right-start']}\n items={items}\n />\n )}\n </React.Fragment>\n );\n};\n\nexport const CompositeBar: FC<CompositeBarProps> = ({\n type,\n items,\n menuMoreTitle,\n onItemClick,\n onMoreClick,\n multipleTooltip = false,\n}) => {\n if (items.length === 0) {\n return null;\n }\n let node: ReactNode;\n\n if (type === 'menu') {\n const minHeight = getItemsMinHeight(items);\n const collapseItem = getMoreButtonItem(menuMoreTitle);\n node = (\n <div className={b({autosizer: true})} style={{minHeight}}>\n {items.length !== 0 && (\n <AutoSizer>\n {(size: Size) => {\n const width = Number.isNaN(size.width) ? 0 : size.width;\n const height = Number.isNaN(size.height) ? 0 : size.height;\n\n const {listItems, collapseItems} = getAutosizeListItems(\n items,\n height,\n collapseItem,\n );\n return (\n <div style={{width, height}}>\n <CompositeBarView\n type=\"menu\"\n items={listItems}\n onItemClick={onItemClick}\n onMoreClick={onMoreClick}\n collapseItems={collapseItems}\n multipleTooltip={multipleTooltip}\n />\n </div>\n );\n }}\n </AutoSizer>\n )}\n </div>\n );\n } else {\n node = (\n <div className={b({subheader: true})}>\n <CompositeBarView type=\"subheader\" items={items} onItemClick={onItemClick} />\n </div>\n );\n }\n return <MultipleTooltipProvider>{node}</MultipleTooltipProvider>;\n};\n","import {addComponentKeysets} from '@gravity-ui/uikit/i18n';\n\nimport {NAMESPACE} from '../../utils/cn';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nconst COMPONENT = 'AsideHeader';\nexport default addComponentKeysets({en, ru}, `${NAMESPACE}${COMPONENT}`);\n","<svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m.72 7.64 6.39-3.2a.5.5 0 0 0 0-.89L.72.36A.5.5 0 0 0 0 .81v6.38c0 .37.4.61.72.45Z\"/></svg>\n","import React, {useCallback} from 'react';\n\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {block} from '../../../utils/cn';\nimport {useAsideHeaderInnerContext} from '../../AsideHeaderContext';\nimport i18n from '../../i18n';\n\nimport controlMenuButtonIcon from '../../../../../assets/icons/control-menu-button.svg';\n\nimport './CollapseButton.scss';\n\nconst b = block('collapse-button');\n\nexport interface CollapseButtonProps {\n className?: string;\n}\n\nexport const CollapseButton = ({className}: CollapseButtonProps) => {\n const {onChangeCompact, compact, expandTitle, collapseTitle} = useAsideHeaderInnerContext();\n\n const onCollapseButtonClick = useCallback(() => {\n onChangeCompact?.(!compact);\n }, [compact, onChangeCompact]);\n\n const buttonTitle = compact\n ? expandTitle || i18n('button_expand')\n : collapseTitle || i18n('button_collapse');\n return (\n <button\n className={b({compact}, className)}\n onClick={onCollapseButtonClick}\n title={buttonTitle}\n >\n <Icon data={controlMenuButtonIcon} className={b('icon')} width=\"16\" height=\"10\" />\n </button>\n );\n};\n","import React from 'react';\n\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {LogoProps} from '../types';\nimport {block} from '../utils/cn';\n\nimport './Logo.scss';\n\nconst b = block('logo');\n\nexport const Logo: React.FC<\n LogoProps & {compact?: boolean; buttonClassName?: string; iconPlaceClassName?: string}\n> = ({\n text,\n icon,\n iconSrc,\n iconClassName,\n iconPlaceClassName,\n iconSize = 24,\n textSize = 15,\n href,\n target = '_self',\n wrapper,\n onClick,\n compact,\n className,\n buttonClassName,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n}) => {\n const hasWrapper = typeof wrapper === 'function';\n\n let buttonIcon;\n\n if (iconSrc) {\n buttonIcon = (\n <span className={iconClassName}>\n <img alt=\"logo icon\" src={iconSrc} width={iconSize} height={iconSize} />\n </span>\n );\n } else if (icon) {\n buttonIcon = <Icon data={icon} size={iconSize} className={iconClassName} />;\n }\n\n let logo: React.ReactNode;\n\n if (typeof text === 'function') {\n logo = text();\n } else {\n logo = (\n <div className={b('logo')} style={{fontSize: textSize}}>\n {text}\n </div>\n );\n }\n\n const button = (\n <a\n className={b('btn-logo', buttonClassName)}\n onClick={onClick}\n target={target}\n rel={target === '_self' ? undefined : 'noreferrer'}\n href={href}\n aria-label={href && ariaLabel}\n aria-labelledby={href && ariaLabelledby}\n >\n <span className={b('logo-icon-place', iconPlaceClassName)}>{buttonIcon}</span>\n {!compact && logo}\n </a>\n );\n\n return (\n <div className={b(null, className)}>\n {hasWrapper ? wrapper(button, Boolean(compact)) : button}\n </div>\n );\n};\n","import React, {useCallback} from 'react';\n\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {CompositeBar} from '../../CompositeBar/CompositeBar';\nimport {Logo} from '../../Logo';\nimport {ASIDE_HEADER_COMPACT_WIDTH, HEADER_DIVIDER_HEIGHT} from '../../constants';\nimport {SubheaderMenuItem} from '../../types';\nimport {useAsideHeaderContext, useAsideHeaderInnerContext} from '../AsideHeaderContext';\nimport {b} from '../utils';\n\nimport headerDividerCollapsedIcon from '../../../../assets/icons/divider-collapsed.svg';\n\nconst DEFAULT_SUBHEADER_ITEMS: SubheaderMenuItem[] = [];\n\nexport const Header = () => {\n const {logo, onItemClick, onClosePanel, headerDecoration, subheaderItems} =\n useAsideHeaderInnerContext();\n const {compact} = useAsideHeaderContext();\n\n const onLogoClick = useCallback(\n (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n onClosePanel?.();\n logo?.onClick?.(event);\n },\n [onClosePanel, logo],\n );\n\n return (\n <div className={b('header', {['with-decoration']: headerDecoration})}>\n {logo && (\n <Logo\n {...logo}\n onClick={onLogoClick}\n compact={compact}\n buttonClassName={b('logo-button')}\n iconPlaceClassName={b('logo-icon-place')}\n />\n )}\n\n <CompositeBar\n type=\"subheader\"\n items={subheaderItems || DEFAULT_SUBHEADER_ITEMS}\n onItemClick={onItemClick}\n />\n\n {headerDecoration && (\n <Icon\n data={headerDividerCollapsedIcon}\n className={b('header-divider')}\n width={ASIDE_HEADER_COMPACT_WIDTH}\n height={HEADER_DIVIDER_HEIGHT}\n />\n )}\n </div>\n );\n};\n","import React from 'react';\n\nimport {Drawer, DrawerItem} from '../../Drawer/Drawer';\nimport {useAsideHeaderInnerContext} from '../AsideHeaderContext';\nimport {b} from '../utils';\n\nexport const Panels = () => {\n const {panelItems, onClosePanel, size} = useAsideHeaderInnerContext();\n\n return panelItems ? (\n <Drawer\n className={b('panels')}\n onVeilClick={onClosePanel}\n onEscape={onClosePanel}\n style={{left: size}}\n >\n {panelItems.map((item) => (\n <DrawerItem key={item.id} {...item} />\n ))}\n </Drawer>\n ) : null;\n};\n","import React, {useRef} from 'react';\n\nimport {setRef} from '@gravity-ui/uikit';\n\nimport {useVisibleMenuItems} from '../../AllPagesPanel';\nimport {CompositeBar} from '../../CompositeBar/CompositeBar';\nimport {useAsideHeaderInnerContext} from '../AsideHeaderContext';\nimport i18n from '../i18n';\nimport {b} from '../utils';\n\nimport {CollapseButton} from './CollapseButton/CollapseButton';\nimport {Header} from './Header';\nimport {Panels} from './Panels';\n\nexport const FirstPanel = React.forwardRef<HTMLDivElement>((_props, ref) => {\n const {\n size,\n onItemClick,\n headerDecoration,\n multipleTooltip,\n menuMoreTitle,\n onMenuMoreClick,\n renderFooter,\n compact,\n customBackground,\n customBackgroundClassName,\n className,\n hideCollapseButton,\n qa,\n } = useAsideHeaderInnerContext();\n const visibleMenuItems = useVisibleMenuItems();\n\n const asideRef = useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n setRef<HTMLDivElement>(ref, asideRef.current);\n }, [ref]);\n\n return (\n <React.Fragment>\n <div className={b('aside', className)} style={{width: size}} data-qa={qa}>\n <div className={b('aside-popup-anchor')} ref={asideRef} />\n\n <div className={b('aside-content', {['with-decoration']: headerDecoration})}>\n {customBackground && (\n <div className={b('aside-custom-background', customBackgroundClassName)}>\n {customBackground}\n </div>\n )}\n <Header />\n {visibleMenuItems?.length ? (\n <CompositeBar\n type=\"menu\"\n items={visibleMenuItems}\n menuMoreTitle={menuMoreTitle ?? i18n('label_more')}\n onItemClick={onItemClick}\n onMoreClick={onMenuMoreClick}\n multipleTooltip={multipleTooltip}\n />\n ) : (\n <div className={b('menu-items')} />\n )}\n <div className={b('footer')}>\n {renderFooter?.({\n size,\n compact: Boolean(compact),\n asideRef,\n })}\n </div>\n {!hideCollapseButton && <CollapseButton />}\n </div>\n </div>\n <Panels />\n </React.Fragment>\n );\n});\n\nFirstPanel.displayName = 'FirstPanel';\n","import {QAProps} from '@gravity-ui/uikit';\n\nimport {RenderContentType} from '../Content';\nimport {DrawerItemProps} from '../Drawer/Drawer';\nimport {LogoProps, MenuItem, OpenModalSubscriber, SubheaderMenuItem, TopAlertProps} from '../types';\n\nimport {AsideHeaderContextType} from './AsideHeaderContext';\n\nexport interface LayoutProps {\n compact: boolean;\n className?: string;\n topAlert?: TopAlertProps;\n}\n\nexport interface EditMenuProps {\n onOpenEditMode?: () => void;\n onToggleMenuItem?: (changedItem: MenuItem) => void;\n onResetSettingsToDefault?: () => void;\n}\n\nexport interface AsideHeaderGeneralProps extends QAProps {\n logo?: LogoProps;\n multipleTooltip?: boolean;\n className?: string;\n collapseTitle?: string;\n expandTitle?: string;\n menuMoreTitle?: string;\n topAlert?: TopAlertProps;\n customBackground?: React.ReactNode;\n customBackgroundClassName?: string;\n hideCollapseButton?: boolean;\n renderContent?: RenderContentType;\n renderFooter?: (data: {\n size: number;\n compact: boolean;\n asideRef: React.RefObject<HTMLDivElement>;\n }) => React.ReactNode;\n editMenuProps?: EditMenuProps;\n onClosePanel?: () => void;\n onChangeCompact?: (compact: boolean) => void;\n onMenuMoreClick?: () => void;\n onAllPagesClick?: () => void;\n openModalSubscriber?: (subscriber: OpenModalSubscriber) => void;\n}\n\nexport interface AsideHeaderDefaultProps {\n panelItems?: DrawerItemProps[];\n subheaderItems?: SubheaderMenuItem[];\n menuItems?: MenuItem[];\n onMenuItemsChanged?: (items: MenuItem[]) => void;\n headerDecoration?: boolean;\n}\n\nexport type AsideHeaderInnerProps = AsideHeaderGeneralProps &\n AsideHeaderDefaultProps &\n AsideHeaderContextType;\n\nexport interface AsideHeaderProps\n extends AsideHeaderGeneralProps,\n LayoutProps,\n Partial<AsideHeaderDefaultProps> {}\n\nexport enum InnerPanels {\n AllPages = 'all-pages',\n}\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\n\nimport {AllPagesPanel, getAllPagesMenuItem} from '../AllPagesPanel';\nimport {MenuItem} from '../types';\n\nimport {AsideHeaderInnerContextType} from './AsideHeaderContext';\nimport {AsideHeaderProps, InnerPanels} from './types';\n\nconst EMPTY_MENU_ITEMS: MenuItem[] = [];\n\nexport const useAsideHeaderInnerContextValue = (\n props: AsideHeaderProps & {size: number},\n): AsideHeaderInnerContextType => {\n const {size, onClosePanel, menuItems, panelItems, onMenuItemsChanged, onAllPagesClick} = props;\n const [innerVisiblePanel, setInnerVisiblePanel] = useState<InnerPanels | undefined>();\n const ALL_PAGES_MENU_ITEM = React.useMemo(() => {\n return getAllPagesMenuItem();\n }, []);\n\n const allPagesIsAvailable =\n Boolean(onMenuItemsChanged) && (!menuItems || menuItems?.length > 0);\n\n useEffect(() => {\n // If any user panel became visible we need to switch off all inner panels\n if (panelItems?.some((x) => x.visible)) {\n setInnerVisiblePanel(undefined);\n }\n }, [panelItems]);\n\n const innerOnClosePanel = useCallback(() => {\n setInnerVisiblePanel(undefined);\n onClosePanel?.();\n }, [onClosePanel]);\n\n const onItemClick = useCallback(\n (item: MenuItem, collapsed: boolean, event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (item.id === ALL_PAGES_MENU_ITEM.id) {\n onClosePanel?.();\n setInnerVisiblePanel((prev) =>\n prev === InnerPanels.AllPages ? undefined : InnerPanels.AllPages,\n );\n } else {\n innerOnClosePanel();\n }\n item.onItemClick?.(item, collapsed, event);\n },\n [innerOnClosePanel, ALL_PAGES_MENU_ITEM, onClosePanel],\n );\n\n const innerMenuItems = useMemo(\n () =>\n allPagesIsAvailable\n ? [\n ...(menuItems || EMPTY_MENU_ITEMS),\n {\n ...ALL_PAGES_MENU_ITEM,\n current: innerVisiblePanel === InnerPanels.AllPages,\n onItemClick: onAllPagesClick,\n },\n ]\n : menuItems || EMPTY_MENU_ITEMS,\n [allPagesIsAvailable, menuItems, innerVisiblePanel, ALL_PAGES_MENU_ITEM, onAllPagesClick],\n );\n\n const innerPanelItems = useMemo(() => {\n if (!allPagesIsAvailable) {\n return panelItems;\n }\n return [\n ...(panelItems || []),\n {\n id: InnerPanels.AllPages,\n content: <AllPagesPanel />,\n visible: innerVisiblePanel === InnerPanels.AllPages,\n },\n ];\n }, [allPagesIsAvailable, panelItems, innerVisiblePanel]);\n\n return {\n ...props,\n onClosePanel: innerOnClosePanel,\n allPagesIsAvailable,\n menuItems: innerMenuItems,\n panelItems: innerPanelItems,\n size,\n onItemClick,\n };\n};\n","import React from 'react';\n\nimport {FirstPanel} from '..';\nimport {AsideHeaderInnerContextProvider, useAsideHeaderContext} from '../../AsideHeaderContext';\nimport {AsideHeaderProps} from '../../types';\nimport {useAsideHeaderInnerContextValue} from '../../useAsideHeaderInnerContextValue';\n\ntype Props = Omit<AsideHeaderProps, 'compact' | 'size'>;\n\nexport const PageLayoutAside = React.forwardRef<HTMLDivElement, Props>((props, ref) => {\n const {size, compact} = useAsideHeaderContext();\n\n const asideHeaderInnerContextValue = useAsideHeaderInnerContextValue({size, compact, ...props});\n\n return (\n <AsideHeaderInnerContextProvider value={asideHeaderInnerContextValue}>\n <FirstPanel ref={ref} />\n </AsideHeaderInnerContextProvider>\n );\n});\n\nPageLayoutAside.displayName = 'PageLayoutAside';\n"],"names":["b","block","useCallback","Icon","Button","Pin","PinFill","COMPONENT","addComponentKeysets","en","ru","NAMESPACE","i18n","Ellipsis","useMemo","useAsideHeaderInnerContext","useRef","useState","useEffect","Flex","Text","Gear","List","Component","createElement","Popup","COLLAPSE_ITEM_ID","useContext","useAsideHeaderContext","ASIDE_HEADER_COMPACT_WIDTH","getSelectedItemIndex","getItemHeight","getItemsHeight","isMenuItem","Item","getItemsMinHeight","getMoreButtonItem","getAutosizeListItems","React","controlMenuButtonIcon","headerDividerCollapsedIcon","HEADER_DIVIDER_HEIGHT","Drawer","DrawerItem","setRef","AsideHeaderInnerContextProvider"],"mappings":"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","x_google_ignoreList":[6]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Settings-D6-a2hgE.js","sources":["../../../src/components/Settings/helpers.ts","../../../src/components/Settings/collect-settings.ts","../../../src/components/Settings/Selection/context.ts","../../node_modules/lodash/identity.js","../../../src/components/Settings/Selection/utils.ts","../../../src/components/Settings/SettingsMenu/SettingsMenu.tsx","../../../src/components/Settings/SettingsMenuMobile/SettingsMenuMobile.tsx","../../../src/components/Settings/i18n/index.ts","../../../src/components/Settings/SettingsSearch/SettingsSearch.tsx","../../../src/components/Settings/Settings.tsx"],"sourcesContent":["import * as React from 'react';\n\ntype AnyFunc = (...args: any[]) => any;\n\nexport function useStableCallback<T extends AnyFunc>(\n func: T,\n): (...args: Parameters<T>) => ReturnType<T> | undefined {\n const funcRef = React.useRef<T>();\n\n React.useEffect(() => {\n funcRef.current = func;\n return () => {\n funcRef.current = undefined;\n };\n }, [func]);\n\n return React.useCallback((...args: Parameters<T>) => {\n if (typeof funcRef.current === 'function') {\n return funcRef.current(...args);\n }\n return undefined;\n }, []);\n}\n\nexport function useCurrent<T>(value: T) {\n const ref = React.useRef(value);\n ref.current = value;\n return React.useCallback(() => ref.current, []);\n}\n\nexport function invariant(cond: boolean, message: string): void {\n if (!cond) {\n throw new Error(message);\n }\n}\n\nexport function escapeStringForRegExp(input: string) {\n return input.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n","import React from 'react';\n\nimport {IconProps} from '@gravity-ui/uikit';\n\nimport {SettingsSelection} from './Selection/types';\nimport {escapeStringForRegExp, invariant} from './helpers';\n\nexport type SettingsMenu = (SettingsMenuGroup | SettingsMenuItem)[];\n\ninterface SettingsMenuGroup {\n groupTitle: string;\n items: SettingsMenuItem[];\n}\n\ninterface SettingsMenuItem {\n id: string;\n title: string;\n icon?: IconProps;\n withBadge?: boolean;\n disabled?: boolean;\n}\n\nexport interface SettingsPage {\n id: string;\n sections: SettingsPageSection[];\n hidden?: boolean;\n withBadge?: boolean;\n}\n\nexport interface SettingsPageSection {\n id?: string;\n title: string;\n header?: React.ReactNode;\n items: SettingsItem[];\n hidden?: boolean;\n withBadge?: boolean;\n showTitle?: boolean;\n onlyChild?: boolean;\n}\n\nexport interface SettingsItem {\n id?: string;\n title: string;\n element: React.ReactElement;\n hidden: boolean;\n titleComponent?: React.ReactNode;\n renderTitleComponent?: (highlightedTitle: React.ReactNode | null) => React.ReactNode;\n}\n\nexport interface SelectedSettingsPart {\n page?: SettingsPage;\n section?: SettingsPageSection;\n setting?: SettingsItem;\n}\n\ninterface SettingsDescription {\n menu: SettingsMenu;\n pages: Record<string, SettingsPage>;\n}\nexport function getSettingsFromChildren(\n children: React.ReactNode,\n searchText = '',\n): SettingsDescription {\n // 'abc def fg' -> abc.*?cde.*?fg\n const preparedFilter = escapeStringForRegExp(searchText).replace(/\\s+/g, '.*?');\n const filterRe = new RegExp(preparedFilter, 'i');\n\n return getSettingsFromChildrenRecursive(children, '', filterRe);\n}\n\nfunction getSettingsFromChildrenRecursive(\n children: React.ReactNode,\n basepath = '',\n filterRe: RegExp,\n): SettingsDescription {\n const menu: SettingsMenu = [];\n const pages: Record<string, SettingsPage> = {};\n let hasGroup = false;\n let hasItems = false;\n React.Children.forEach(children, (element) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements.\n return;\n }\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n const {menu: menuFragment, pages: pagesFragment} = getSettingsFromChildrenRecursive(\n element.props.children,\n basepath,\n filterRe,\n );\n menu.push(...menuFragment);\n Object.assign(pages, pagesFragment);\n } else if (element.props.groupTitle) {\n if (process.env.NODE_ENV === 'development') {\n invariant(!hasItems, 'Setting menu must not mix groups and pages on one level');\n }\n\n const pageId = `${basepath}/${element.props.id ?? element.props.groupTitle}`;\n hasGroup = true;\n\n const {menu: menuFragment, pages: pagesFragment} = getSettingsFromChildrenRecursive(\n element.props.children,\n pageId,\n filterRe,\n );\n\n if (process.env.NODE_ENV === 'development') {\n const hasInnerGroup = menuFragment.some((item) => 'groupTitle' in item);\n invariant(\n !hasInnerGroup,\n `Group ${element.props.groupTitle} should not include groups`,\n );\n }\n\n menu.push({\n groupTitle: element.props.groupTitle,\n // @ts-ignore\n items: menuFragment,\n });\n Object.assign(pages, pagesFragment);\n } else {\n hasItems = true;\n const pageId = `${basepath}/${element.props.id ?? element.props.title}`;\n\n if (process.env.NODE_ENV === 'development') {\n invariant(Boolean(element.props.title), 'Component must include title prop');\n invariant(!hasGroup, 'Setting menu must not mix groups and pages on one level');\n invariant(!pages[pageId], `Setting menu page id must be uniq (${pageId})`);\n }\n\n pages[pageId] = getSettingsPageFromChildren(element.props.children, filterRe);\n pages[pageId].id = pageId;\n menu.push({\n id: pageId,\n title: element.props.title,\n icon: element.props.icon,\n withBadge: pages[pageId].withBadge,\n disabled: pages[pageId].hidden,\n });\n }\n });\n return {menu, pages};\n}\n\nfunction getSettingsPageFromChildren(children: React.ReactNode, filterRe: RegExp): SettingsPage {\n const page: SettingsPage = {id: '', sections: [], hidden: true};\n React.Children.forEach(children, (element) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements.\n return;\n }\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n const {sections, withBadge, hidden} = getSettingsPageFromChildren(\n element.props.children,\n filterRe,\n );\n page.sections.push(...sections);\n page.withBadge = withBadge || page.withBadge;\n page.hidden = hidden && page.hidden;\n } else {\n const {withBadge, showTitle = true} = element.props;\n const {items, hidden} = getSettingsItemsFromChildren(element.props.children, filterRe);\n page.withBadge = withBadge || page.withBadge;\n page.hidden = hidden && page.hidden;\n page.sections.push({\n ...element.props,\n withBadge,\n items,\n hidden,\n showTitle,\n });\n }\n });\n return page;\n}\n\nfunction getSettingsItemsFromChildren(children: React.ReactNode, filterRe: RegExp) {\n let hidden = true;\n const items: SettingsItem[] = [];\n React.Children.forEach(children, (element) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements.\n return;\n }\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n const fragmentItems = getSettingsItemsFromChildren(element.props.children, filterRe);\n items.push(...fragmentItems.items);\n hidden = hidden && fragmentItems.hidden;\n } else {\n const item: SettingsItem = {\n ...element.props,\n element,\n hidden: !filterRe.test(element.props.title),\n };\n items.push(item);\n hidden = hidden && item.hidden;\n }\n });\n return {items, hidden};\n}\n\nexport function getSelectedSettingsPart(\n pages: Record<string, SettingsPage>,\n selection: SettingsSelection,\n): SelectedSettingsPart {\n if (!selection.settingId && !selection.section && !selection.page) {\n return {};\n }\n\n for (const page of Object.values(pages)) {\n if (!selection.settingId && !selection.section) {\n if (selection.page !== page.id) continue;\n\n return {page};\n }\n\n for (const section of page.sections) {\n if (selection.settingId) {\n for (const setting of section.items) {\n if (setting.id === selection.settingId) {\n return {page, section, setting};\n }\n }\n } else if (\n selection.section &&\n ('id' in selection.section\n ? selection.section.id === section.id\n : selection.section.title === section.title)\n ) {\n return {page, section};\n }\n }\n }\n\n return {};\n}\n","import React from 'react';\n\nimport {SelectedSettingsPart, SettingsPage, getSelectedSettingsPart} from '../collect-settings';\n\nimport {SettingsSelection} from './types';\n\ninterface ContextValue extends SelectedSettingsPart {\n selectedRef?: React.RefObject<HTMLDivElement>;\n}\n\nconst defaultValue: ContextValue = {};\n\nconst context = React.createContext(defaultValue);\ncontext.displayName = 'SettingsSelectionContext';\n\nexport function useSettingsSelectionProviderValue(\n pages: Record<string, SettingsPage>,\n selection: SettingsSelection | undefined,\n): ContextValue {\n const selectedRef = React.useRef<HTMLDivElement>(null);\n\n const contextValue: ContextValue = React.useMemo(() => {\n if (!selection) return {selectedRef};\n\n return {selectedRef, ...getSelectedSettingsPart(pages, selection)};\n }, [pages, selection]);\n\n return contextValue;\n}\n\nexport const SettingsSelectionContextProvider = context.Provider;\n\nexport function useSettingsSelectionContext(): ContextValue {\n return React.useContext(context);\n}\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","import {SelectedSettingsPart, SettingsPageSection} from '../collect-settings';\n\nexport function isSectionSelected(\n selected: SelectedSettingsPart,\n pageId: string,\n section: SettingsPageSection,\n) {\n if (!selected.section || selected.setting) {\n return false;\n } else if (selected.section.id && selected.section.id === section.id) {\n return true;\n } else if (\n selected.page?.id === pageId &&\n selected.section.title &&\n selected.section.title === section.title\n ) {\n return true;\n } else {\n return false;\n }\n}\n","import React from 'react';\n\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {block} from '../../utils/cn';\nimport {useCurrent, useStableCallback} from '../helpers';\nimport {Item, SettingsMenuProps} from '../types';\n\nimport './SettingsMenu.scss';\n\nconst b = block('settings-menu');\n\nexport interface SettingsMenuInstance {\n handleKeyDown(event: React.KeyboardEvent): boolean;\n clearFocus(): void;\n}\n\nexport const SettingsMenu = React.forwardRef<SettingsMenuInstance, SettingsMenuProps>(\n // eslint-disable-next-line prefer-arrow-callback\n function SettingsMenu({items, onChange, activeItemId}, ref) {\n const [focusItemId, setFocusId] = React.useState<string>();\n const containerRef = React.useRef<HTMLDivElement>(null);\n const handleChange = useStableCallback(onChange);\n const getFocused = useCurrent(focusItemId);\n\n React.useImperativeHandle(\n ref,\n () => ({\n handleKeyDown(event) {\n if (!containerRef.current) {\n return false;\n }\n const focused = getFocused();\n if (focused && event.key === 'Enter') {\n handleChange(focused);\n return true;\n } else if (event.key === 'ArrowDown') {\n setFocusId(focusNext(containerRef.current, focused, 1));\n return true;\n } else if (event.key === 'ArrowUp') {\n setFocusId(focusNext(containerRef.current, focused, -1));\n return true;\n }\n return false;\n },\n clearFocus() {\n setFocusId(undefined);\n },\n }),\n [getFocused, handleChange],\n );\n\n return (\n <div ref={containerRef} className={b()}>\n {items.map((firstLevelItem) => {\n if ('groupTitle' in firstLevelItem) {\n return (\n <div key={firstLevelItem.groupTitle} className={b('group')}>\n <span className={b('group-heading')}>\n {firstLevelItem.groupTitle}\n </span>\n {firstLevelItem.items.map((item) => {\n return renderMenuItem(\n item,\n onChange,\n activeItemId,\n focusItemId,\n );\n })}\n </div>\n );\n }\n return renderMenuItem(firstLevelItem, onChange, activeItemId, focusItemId);\n })}\n </div>\n );\n },\n);\n\nfunction renderMenuItem(\n item: Item,\n onChange: (id: string) => void,\n activeItemId: string | undefined,\n focusItemId: string | undefined,\n) {\n return (\n <span\n key={item.title}\n className={b('item', {\n selected: activeItemId === item.id,\n disabled: item.disabled,\n focused: focusItemId === item.id,\n badge: item.withBadge,\n })}\n onClick={() => {\n if (!item.disabled) {\n onChange(item.id);\n }\n }}\n data-id={item.id}\n >\n {item.icon ? <Icon size={16} {...item.icon} className={b('item-icon')} /> : undefined}\n <span>{item.title}</span>\n </span>\n );\n}\n\nfunction focusNext(container: HTMLElement, focused: string | undefined, direction: number) {\n const elements = container.querySelectorAll(`.${b('item')}:not(.${b('item')}_disabled)`);\n if (elements.length === 0) {\n return undefined;\n }\n\n let currentIndex = direction > 0 ? -1 : 0;\n if (focused) {\n currentIndex = Array.prototype.findIndex.call(\n elements,\n (element) => element.getAttribute('data-id') === focused,\n );\n }\n\n currentIndex = (elements.length + currentIndex + direction) % elements.length;\n return elements[currentIndex].getAttribute('data-id') ?? undefined;\n}\n","import React from 'react';\n\nimport {Tabs, TabsItemProps} from '@gravity-ui/uikit';\n\nimport {block} from '../../utils/cn';\nimport {SettingsMenuProps} from '../types';\n\nimport './SettingsMenuMobile.scss';\n\nconst b = block('settings-menu-mobile');\n\nexport const SettingsMenuMobile = ({\n items,\n onChange,\n activeItemId,\n className,\n}: SettingsMenuProps) => {\n const ref = React.useRef<HTMLDivElement>(null);\n\n const tabItems = React.useMemo(() => {\n const tabItems: TabsItemProps[] = [];\n\n items.forEach((firstLevelItem) => {\n if ('groupTitle' in firstLevelItem) {\n tabItems.push(\n ...firstLevelItem.items.map(({id, title, disabled, withBadge}) => ({\n id,\n title,\n disabled,\n className: b('item', {badge: withBadge}),\n })),\n );\n } else {\n const {id, title, disabled, withBadge} = firstLevelItem;\n tabItems.push({id, title, disabled, className: b('item', {badge: withBadge})});\n }\n });\n return tabItems;\n }, [items]);\n\n const handleTouchMove = (e: React.TouchEvent<HTMLDivElement>) => {\n e.stopPropagation();\n };\n\n return (\n <div ref={ref} onTouchMove={handleTouchMove}>\n <Tabs\n items={tabItems}\n className={b(null, className)}\n size=\"l\"\n activeTab={activeItemId}\n onSelectTab={onChange}\n />\n </div>\n );\n};\n","import {addComponentKeysets} from '@gravity-ui/uikit/i18n';\n\nimport {NAMESPACE} from '../../utils/cn';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nconst COMPONENT = 'Settings';\nexport default addComponentKeysets({en, ru}, `${NAMESPACE}${COMPONENT}`);\n","import React from 'react';\n\nimport {TextInput, TextInputSize} from '@gravity-ui/uikit';\nimport debounceFn from 'lodash/debounce';\n\nimport {block} from '../../utils/cn';\nimport {useStableCallback} from '../helpers';\nimport i18n from '../i18n';\n\nconst b = block('settings-search');\n\ninterface SettingsSearchProps {\n className?: string;\n initialValue?: string;\n onChange: (search: string) => void;\n debounce?: number;\n inputRef?: React.Ref<HTMLInputElement>;\n inputSize?: TextInputSize;\n placeholder?: string;\n autoFocus?: boolean;\n}\n\nexport function SettingsSearch({\n className,\n initialValue,\n onChange,\n debounce = 200,\n inputRef,\n inputSize,\n placeholder,\n autoFocus = true,\n}: SettingsSearchProps) {\n const [value, setValue] = React.useState(initialValue ?? '');\n\n const onChangeDebounced = useStableCallback(debounceFn(onChange, debounce));\n const handleUpdate = useStableCallback((updated: string) => {\n setValue(updated);\n onChangeDebounced(updated);\n });\n\n return (\n <div className={b(null, className)}>\n <TextInput\n value={value}\n controlRef={inputRef}\n hasClear\n autoFocus={autoFocus}\n size={inputSize}\n placeholder={placeholder}\n onUpdate={handleUpdate}\n controlProps={{\n 'aria-label': i18n('label_search'),\n }}\n />\n </div>\n );\n}\n","import React from 'react';\n\nimport {Flex, IconProps, Loader} from '@gravity-ui/uikit';\nimport identity from 'lodash/identity';\n\nimport {Title} from '../Title';\nimport {block} from '../utils/cn';\n\nimport {SettingsSelection} from './Selection';\nimport {\n SettingsSelectionContextProvider,\n useSettingsSelectionContext,\n useSettingsSelectionProviderValue,\n} from './Selection/context';\nimport {isSectionSelected} from './Selection/utils';\nimport {SettingsMenu, SettingsMenuInstance} from './SettingsMenu/SettingsMenu';\nimport {SettingsMenuMobile} from './SettingsMenuMobile/SettingsMenuMobile';\nimport {SettingsSearch} from './SettingsSearch/SettingsSearch';\nimport type {\n SettingsItem,\n SettingsMenu as SettingsMenuType,\n SettingsPageSection,\n} from './collect-settings';\nimport {getSettingsFromChildren} from './collect-settings';\nimport {escapeStringForRegExp} from './helpers';\nimport i18n from './i18n';\n\nimport './Settings.scss';\n\nconst b = block('settings');\n\nexport interface SettingsProps {\n children: React.ReactNode;\n title?: string;\n filterPlaceholder?: string;\n emptyPlaceholder?: string;\n initialPage?: string;\n initialSearch?: string;\n selection?: SettingsSelection;\n onPageChange?: (page: string | undefined) => void;\n renderNotFound?: () => React.ReactNode;\n renderLoading?: () => React.ReactNode;\n loading?: boolean;\n view?: 'normal' | 'mobile';\n onClose?: () => void;\n renderRightAdornment?: (item: SettingsItemProps) => React.ReactNode;\n renderSectionRightAdornment?: (section: SettingsPageSection) => React.ReactNode;\n showRightAdornmentOnHover?: boolean;\n}\n\nexport interface SettingsGroupProps {\n id?: string;\n groupTitle: string;\n children: React.ReactNode;\n}\n\nexport interface SettingsPageProps {\n id?: string;\n title: string;\n icon?: IconProps;\n children: React.ReactNode;\n}\n\nexport interface SettingsSectionProps {\n id?: string;\n title: string;\n header?: React.ReactNode;\n children: React.ReactNode;\n withBadge?: boolean;\n showTitle?: boolean;\n onlyChild?: boolean;\n}\n\nexport interface SettingsItemProps {\n id?: string;\n labelId?: string;\n title: string;\n highlightedTitle?: React.ReactNode | null;\n renderTitleComponent?: (highlightedTitle: React.ReactNode | null) => React.ReactNode;\n align?: 'top' | 'center';\n children: React.ReactNode;\n withBadge?: boolean;\n mode?: 'row';\n description?: React.ReactNode;\n}\n\nexport interface SettingsContextType\n extends Pick<\n SettingsProps,\n 'renderRightAdornment' | 'renderSectionRightAdornment' | 'showRightAdornmentOnHover'\n > {}\n\nconst SettingsContext = React.createContext<SettingsContextType>({});\n\nexport const useSettingsContext = () => React.useContext(SettingsContext);\n\nexport function Settings({\n loading,\n renderLoading,\n children,\n view = 'normal',\n renderRightAdornment,\n renderSectionRightAdornment,\n showRightAdornmentOnHover = true,\n ...props\n}: SettingsProps) {\n if (loading) {\n return (\n <div className={b({loading: true, view})}>\n {typeof renderLoading === 'function' ? (\n renderLoading()\n ) : (\n <Loader className={b('loader')} size=\"m\" />\n )}\n </div>\n );\n }\n\n return (\n <SettingsContext.Provider\n value={{renderRightAdornment, renderSectionRightAdornment, showRightAdornmentOnHover}}\n >\n <SettingsContent view={view} {...props}>\n {children}\n </SettingsContent>\n </SettingsContext.Provider>\n );\n}\n\nconst getPageTitleById = (menu: SettingsMenuType, activePage: string) => {\n for (const firstLevel of menu) {\n if ('groupTitle' in firstLevel) {\n for (const secondLevel of firstLevel.items)\n if (secondLevel.id === activePage) return secondLevel.title;\n } else if (firstLevel.id === activePage) return firstLevel.title;\n }\n\n return '';\n};\n\ntype SettingsContentProps = Omit<SettingsProps, 'loading' | 'renderLoading'>;\nfunction SettingsContent({\n initialPage,\n initialSearch,\n selection,\n children,\n renderNotFound,\n title = i18n('label_title'),\n filterPlaceholder = i18n('label_filter-placeholder'),\n emptyPlaceholder = i18n('label_empty-placeholder'),\n view,\n onPageChange,\n onClose,\n}: SettingsContentProps) {\n const {renderSectionRightAdornment, showRightAdornmentOnHover} = useSettingsContext();\n\n const [search, setSearch] = React.useState(initialSearch ?? '');\n const {menu, pages} = getSettingsFromChildren(children, search);\n\n const selected = useSettingsSelectionProviderValue(pages, selection);\n\n const pageKeys = Object.keys(pages);\n const selectionInitialPage =\n selected.page && pageKeys.includes(selected.page.id) ? selected.page.id : undefined;\n const [selectedPage, setCurrentPage] = React.useState<string | undefined>(\n selectionInitialPage ||\n (initialPage && pageKeys.includes(initialPage) ? initialPage : undefined),\n );\n const searchInputRef = React.useRef<HTMLInputElement>(null);\n const menuRef = React.useRef<SettingsMenuInstance>(null);\n const isMobile = view === 'mobile';\n\n React.useEffect(() => {\n menuRef.current?.clearFocus();\n }, [search]);\n\n React.useEffect(() => {\n const handler = () => {\n menuRef.current?.clearFocus();\n };\n window.addEventListener('click', handler);\n return () => {\n window.removeEventListener('click', handler);\n };\n }, []);\n\n let activePage = selectedPage;\n if (!activePage || pages[activePage]?.hidden) {\n activePage = Object.values(pages).find(({hidden}) => !hidden)?.id;\n }\n\n const handlePageChange = (newPage: string | undefined) => {\n setCurrentPage((prevPage) => {\n if (prevPage !== newPage) {\n onPageChange?.(newPage);\n }\n return newPage;\n });\n };\n\n React.useEffect(() => {\n if (activePage !== selectedPage) {\n handlePageChange(activePage);\n }\n });\n\n React.useEffect(() => {\n if (!selectionInitialPage) return;\n setCurrentPage(selectionInitialPage);\n }, [selectionInitialPage]);\n\n React.useEffect(() => {\n if (selected.selectedRef?.current) {\n selected.selectedRef.current.scrollIntoView();\n }\n }, [selected.selectedRef]);\n\n const renderSetting = ({title: settingTitle, element}: SettingsItem) => {\n return (\n <div key={settingTitle} className={b('section-item')}>\n {React.cloneElement(element, {\n ...element.props,\n highlightedTitle:\n search && settingTitle ? prepareTitle(settingTitle, search) : settingTitle,\n })}\n </div>\n );\n };\n\n const renderSection = (page: string, section: SettingsPageSection) => {\n const isSelected = isSectionSelected(selected, page, section);\n\n return (\n <div\n key={section.title}\n className={b('section', {selected: isSelected, 'only-child': section.onlyChild})}\n ref={isSelected ? selected.selectedRef : undefined}\n >\n {section.showTitle && (\n <h3 className={b('section-heading')}>\n {renderSectionRightAdornment ? (\n <Flex gap={2} alignItems={'center'}>\n {section.title}\n <div\n className={b('section-right-adornment', {\n hidden: showRightAdornmentOnHover,\n })}\n >\n {renderSectionRightAdornment(section)}\n </div>\n </Flex>\n ) : (\n section.title\n )}\n </h3>\n )}\n\n {section.header &&\n (isMobile ? (\n <div className={b('section-subheader')}>{section.header}</div>\n ) : (\n section.header\n ))}\n\n {section.items.map((setting) => (setting.hidden ? null : renderSetting(setting)))}\n </div>\n );\n };\n\n const renderPageContent = (page: string | undefined) => {\n if (!page) {\n return typeof renderNotFound === 'function' ? (\n renderNotFound()\n ) : (\n <div className={b('not-found')}>{emptyPlaceholder}</div>\n );\n }\n\n const filteredSections = pages[page].sections.filter((section) => !section.hidden);\n\n return (\n <React.Fragment>\n {!isMobile && (\n <Title hasSeparator onClose={onClose}>\n {getPageTitleById(menu, page)}\n </Title>\n )}\n\n <div className={b('content')}>\n {filteredSections.map((section) => renderSection(page, section))}\n </div>\n </React.Fragment>\n );\n };\n\n return (\n <SettingsSelectionContextProvider value={selected}>\n <div className={b({view})}>\n {isMobile ? (\n <React.Fragment>\n <SettingsSearch\n inputRef={searchInputRef}\n className={b('search')}\n initialValue={initialSearch}\n onChange={setSearch}\n autoFocus={false}\n inputSize={'xl'}\n />\n <SettingsMenuMobile\n items={menu}\n onChange={handlePageChange}\n activeItemId={activePage}\n className={b('tabs')}\n />\n </React.Fragment>\n ) : (\n <div\n className={b('menu')}\n onClick={() => {\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }}\n onKeyDown={(event) => {\n if (menuRef.current) {\n if (menuRef.current.handleKeyDown(event)) {\n event.preventDefault();\n }\n }\n }}\n >\n <Title>{title}</Title>\n <SettingsSearch\n inputRef={searchInputRef}\n className={b('search')}\n initialValue={initialSearch}\n onChange={setSearch}\n placeholder={filterPlaceholder}\n autoFocus\n />\n <SettingsMenu\n ref={menuRef}\n items={menu}\n onChange={handlePageChange}\n activeItemId={activePage}\n />\n </div>\n )}\n <div className={b('page')}>{renderPageContent(activePage)}</div>\n </div>\n </SettingsSelectionContextProvider>\n );\n}\n\nSettings.Group = function SettingsGroup({children}: SettingsGroupProps) {\n return <React.Fragment>{children}</React.Fragment>;\n};\n\nSettings.Page = function SettingsPage({children}: SettingsPageProps) {\n return <React.Fragment>{children}</React.Fragment>;\n};\n\nSettings.Section = function SettingsSection({children}: SettingsSectionProps) {\n return <React.Fragment>{children}</React.Fragment>;\n};\n\nSettings.Item = function SettingsItem(setting: SettingsItemProps) {\n const {\n id,\n labelId,\n highlightedTitle,\n children,\n align = 'center',\n withBadge,\n renderTitleComponent = identity,\n mode,\n description,\n } = setting;\n\n const selected = useSettingsSelectionContext();\n const isSettingSelected = selected.setting && selected.setting.id === id;\n\n const {renderRightAdornment, showRightAdornmentOnHover} = useSettingsContext();\n const titleNode = (\n <span className={b('item-title', {badge: withBadge})}>\n {renderTitleComponent(highlightedTitle)}\n </span>\n );\n return (\n <div\n className={b('item', {align, mode, selected: isSettingSelected})}\n ref={isSettingSelected ? selected.selectedRef : undefined}\n >\n <label className={b('item-heading')} id={labelId}>\n {renderRightAdornment ? (\n <Flex className={b('item-title-wrapper')} gap={3}>\n {titleNode}\n <div\n className={b('item-right-adornment', {\n hidden: showRightAdornmentOnHover,\n })}\n >\n {renderRightAdornment(setting)}\n </div>\n </Flex>\n ) : (\n titleNode\n )}\n {description ? <span className={b('item-description')}>{description}</span> : null}\n </label>\n <div className={b('item-content')}>{children}</div>\n </div>\n );\n};\n\nfunction prepareTitle(string: string, search: string) {\n let temp = string.slice(0);\n const title: React.ReactNode[] = [];\n const parts = escapeStringForRegExp(search).split(' ').filter(Boolean);\n let key = 0;\n for (const part of parts) {\n const regex = new RegExp(part, 'ig');\n const match = regex.exec(temp);\n if (match) {\n const m = match[0];\n const i = match.index;\n if (i > 0) {\n title.push(temp.slice(0, i));\n }\n title.push(\n <strong key={key++} className={b('found')}>\n {m}\n </strong>,\n );\n temp = temp.slice(i + m.length);\n }\n }\n if (temp) {\n title.push(temp);\n }\n return title;\n}\n"],"names":["React","b","block","Icon","Tabs","addComponentKeysets","NAMESPACE","debounce","debounceFn","TextInput","__rest","Loader","Flex","Title"],"mappings":"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","x_google_ignoreList":[3]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FooterItem-BP7Ya02G.js","sources":["../../../src/hooks/useForwardRef.tsx","../../../src/components/MobileLogo/MobileLogo.tsx","../../../src/components/MobileHeader/Burger/Burger.tsx","../../../src/components/MobileHeader/constants.ts","../../../src/components/MobileHeader/utils.ts","../../../src/components/MobileHeader/BurgerMenu/BurgerCompositeBar/BurgerCompositeBar.tsx","../../../src/components/MobileHeader/BurgerMenu/BurgerMenu.tsx","../../../src/components/MobileHeader/i18n/index.ts","../../../src/components/MobileHeader/OverlapPanel/OverlapPanel.tsx","../../../src/components/MobileHeader/MobileHeader.tsx","../../../src/components/MobileHeader/FooterItem/FooterItem.tsx"],"sourcesContent":["import React from 'react';\n\nexport const useForwardRef = <T,>(\n ref: ((instance: T | null) => void) | React.MutableRefObject<T | null> | null,\n initialValue: any = null,\n) => {\n const targetRef = React.useRef<T>(initialValue);\n\n React.useEffect(() => {\n if (!ref) return;\n\n if (typeof ref === 'function') {\n ref(targetRef.current);\n } else {\n ref.current = targetRef.current;\n }\n }, [ref]);\n\n return targetRef;\n};\n","import React from 'react';\n\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {LogoProps} from '../types';\nimport {block} from '../utils/cn';\n\nimport './MobileLogo.scss';\n\nconst b = block('mobile-logo');\n\nexport interface MobileLogoProps extends LogoProps {\n compact: boolean;\n}\n\nexport const MobileLogo: React.FC<MobileLogoProps> = ({\n text,\n compact,\n icon,\n iconSrc,\n iconClassName,\n iconSize = 32,\n textSize = 20,\n href = '/',\n target = '_self',\n wrapper,\n onClick,\n className,\n}) => {\n const hasWrapper = typeof wrapper === 'function';\n\n let logoIcon;\n\n if (iconSrc) {\n logoIcon = (\n <img\n alt=\"logo icon\"\n src={iconSrc}\n width={iconSize}\n height={iconSize}\n className={iconClassName}\n />\n );\n } else if (icon) {\n logoIcon = <Icon data={icon} size={iconSize} className={b('icon', iconClassName)} />;\n }\n\n let logoTitle: React.ReactNode;\n\n if (typeof text === 'function') {\n logoTitle = text();\n } else {\n logoTitle = (\n <span className={b('title')} style={{fontSize: textSize}}>\n {text}\n </span>\n );\n }\n\n const logo = (\n <React.Fragment>\n {logoIcon}\n {logoTitle}\n </React.Fragment>\n );\n\n return hasWrapper ? (\n <div className={b(null, className)} onClick={onClick}>\n {wrapper(logo, compact)}\n </div>\n ) : (\n <a\n href={href}\n target={target}\n ref={target === '_self' ? undefined : 'noreferrer'}\n className={b(null, className)}\n onClick={onClick}\n >\n {logo}\n </a>\n );\n};\n","import React from 'react';\n\nimport {block} from '../../utils/cn';\n\nimport './Burger.scss';\n\nconst b = block('mobile-header-burger');\n\ninterface BurgerProps {\n closeTitle: string;\n openTitle: string;\n opened?: boolean;\n className?: string;\n onClick?: (event: React.MouseEvent<HTMLElement>) => void;\n}\n\nexport const Burger = React.memo(\n ({closeTitle, openTitle, opened, className, onClick}: BurgerProps) => (\n <button\n className={b({opened}, className)}\n onClick={onClick}\n aria-label={opened ? closeTitle : openTitle}\n >\n <span className={b('icon')}>\n <span className={b('icon-dash')}></span>\n </span>\n </button>\n ),\n);\n\nBurger.displayName = 'Burger';\n","import {ItemEventsConfig} from './types';\n\nexport const MOBILE_ITEM_HEIGHT = 48;\nexport const MOBILE_HEADER_COMPACT_HEIGHT = 50;\nexport const MOBILE_HEADER_EXPANDED_HEIGHT = 120;\nexport const MOBILE_HEADER_ICON_SIZE = 20;\n\nexport const MOBILE_HEADER_EVENT_NAMES: ItemEventsConfig = {\n toggleEvent: 'MOBILE_PANEL_TOGGLE',\n closeEvent: 'MOBILE_PANEL_CLOSE',\n openEvent: 'MOBILE_PANEL_OPEN',\n};\n\nexport const BURGER_PANEL_ITEM_ID = 'burger';\nexport const OVERLAP_PANEL_ITEM_ID = 'overlap';\n","import {MOBILE_ITEM_HEIGHT} from './constants';\nimport {MobileHeaderEventOptions, MobileMenuItem} from './types';\n\nexport const getItemHeight = (item: MobileMenuItem) => {\n switch (item.type) {\n case 'divider':\n return 1;\n default:\n return MOBILE_ITEM_HEIGHT;\n }\n};\n\nexport const getSelectedItemIndex = (items: MobileMenuItem[]) => {\n const index = items.findIndex(({current}) => Boolean(current));\n\n return index === -1 ? undefined : index;\n};\n\nexport const getMobileHeaderCustomEvent = (\n eventName: string,\n detail?: MobileHeaderEventOptions,\n) => {\n return new CustomEvent<MobileHeaderEventOptions>(eventName, {detail});\n};\n","import React from 'react';\n\nimport {Icon, List} from '@gravity-ui/uikit';\n\nimport {block} from '../../../utils/cn';\nimport {MOBILE_HEADER_ICON_SIZE} from '../../constants';\nimport {MobileMenuItem} from '../../types';\nimport {getItemHeight, getSelectedItemIndex} from '../../utils';\n\nimport './BurgerCompositeBar.scss';\n\nconst b = block('burger-composite-bar');\n\ninterface ItemProps {\n item: MobileMenuItem;\n onItemClick?: (item: MobileMenuItem) => void;\n}\n\nconst Item = ({item, onItemClick}: ItemProps) => {\n const {icon, type = 'regular', iconSize = MOBILE_HEADER_ICON_SIZE} = item;\n\n if (type === 'divider') {\n return <div className={b('menu-divider')} />;\n }\n\n const node = (\n <div\n className={b('item', {type})}\n onClick={() => {\n if (typeof item.onItemClick === 'function') {\n item.onItemClick(item);\n }\n\n if (type === 'regular') {\n onItemClick?.(item);\n }\n }}\n >\n <div className={b('item-icon-place')}>\n {icon && <Icon data={icon} size={iconSize} className={b('item-icon')} />}\n </div>\n <div className={b('item-title')}>{item.title}</div>\n </div>\n );\n\n if (typeof item.itemWrapper === 'function') {\n return item.itemWrapper(node, item) as React.ReactElement;\n }\n\n return item.link ? (\n <a href={item.link} className={b('link')}>\n {node}\n </a>\n ) : (\n node\n );\n};\nItem.displayName = 'Item';\n\ninterface BurgerCompositeBarProps {\n items: MobileMenuItem[];\n onItemClick?: (item: MobileMenuItem) => void;\n}\n\nexport const BurgerCompositeBar = React.memo(({items, onItemClick}: BurgerCompositeBarProps) => {\n return (\n <nav className={b()}>\n <List<MobileMenuItem>\n items={items}\n selectedItemIndex={getSelectedItemIndex(items)}\n itemHeight={getItemHeight}\n itemClassName={b('root-menu-item')}\n virtualized={false}\n filterable={false}\n sortable={false}\n renderItem={(item) => <Item item={item} onItemClick={onItemClick} />}\n />\n </nav>\n );\n});\n\nBurgerCompositeBar.displayName = 'BurgerCompositeBar';\n","import React from 'react';\n\nimport {Sheet} from '@gravity-ui/uikit';\n\nimport {block} from '../../utils/cn';\nimport {MobileMenuItem, ModalItem} from '../types';\n\nimport {BurgerCompositeBar} from './BurgerCompositeBar/BurgerCompositeBar';\n\nimport './BurgerMenu.scss';\n\nconst b = block('mobile-header-burger-menu');\n\nexport interface BurgerMenuInnerProps {\n items?: MobileMenuItem[];\n modalItem?: ModalItem;\n renderFooter?: () => React.ReactNode;\n onItemClick?: (item: MobileMenuItem) => void;\n className?: string;\n}\n\nexport const BurgerMenu = React.memo(\n ({items = [], renderFooter, modalItem, className, onItemClick}: BurgerMenuInnerProps) => {\n return (\n <div className={b(null, className)}>\n {modalItem && (\n <Sheet\n visible={modalItem.visible}\n id={modalItem.id}\n title={modalItem.title}\n onClose={modalItem.onClose}\n contentClassName={modalItem.contentClassName}\n className={modalItem.className}\n >\n {modalItem.renderContent?.()}\n </Sheet>\n )}\n\n <BurgerCompositeBar items={items} onItemClick={onItemClick} />\n\n {renderFooter && <div className={b('footer')}>{renderFooter?.()}</div>}\n </div>\n );\n },\n);\n\nBurgerMenu.displayName = 'BurgerMenu';\n","import {addComponentKeysets} from '@gravity-ui/uikit/i18n';\n\nimport {NAMESPACE} from '../../utils/cn';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nconst COMPONENT = 'MobileHeader';\nexport default addComponentKeysets({en, ru}, `${NAMESPACE}${COMPONENT}`);\n","import React from 'react';\n\nimport {ArrowLeft as CloseIcon} from '@gravity-ui/icons';\nimport {Button, Icon, IconProps, Text} from '@gravity-ui/uikit';\n\nimport {Drawer, DrawerItem} from '../../Drawer/Drawer';\nimport {block} from '../../utils/cn';\nimport {MOBILE_HEADER_ICON_SIZE} from '../constants';\nimport i18n from '../i18n';\n\nimport './OverlapPanel.scss';\n\nconst b = block('mobile-overlap-panel');\n\ninterface OverlapPanelActionProps {\n icon: IconProps['data'];\n className?: string;\n onClick: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n title: string;\n}\n\nexport interface OverlapPanelProps {\n className?: string;\n title?: string;\n onClose: () => void;\n action?: OverlapPanelActionProps;\n renderContent: () => React.ReactNode;\n closeTitle?: string;\n visible: boolean;\n topOffset?: number | string;\n}\n\nexport const OverlapPanel = ({\n title,\n renderContent,\n className,\n onClose,\n action,\n closeTitle = i18n('overlap_button_close'),\n visible,\n topOffset,\n}: OverlapPanelProps) => {\n return (\n <Drawer\n className={b('', {action: Boolean(action)}, className)}\n onVeilClick={onClose}\n onEscape={onClose}\n preventScrollBody\n style={{\n top: topOffset,\n }}\n >\n <DrawerItem id=\"overlap\" visible={visible} className={b('drawer-item')}>\n <div className={b('header')}>\n <Button\n size=\"l\"\n view=\"flat\"\n className={b('close')}\n onClick={onClose}\n aria-label={closeTitle}\n >\n <Icon\n className={b('icon')}\n data={CloseIcon}\n size={MOBILE_HEADER_ICON_SIZE}\n />\n </Button>\n <Text\n whiteSpace=\"nowrap\"\n ellipsis\n variant={'subheader-2'}\n className={b('title')}\n as={title ? ('h2' as const) : undefined}\n >\n {title}\n </Text>\n {action && (\n <Button\n size=\"l\"\n type=\"button\"\n view=\"flat\"\n onClick={action.onClick}\n className={b('action')}\n aria-label={action.title}\n >\n <Icon data={action.icon} size={MOBILE_HEADER_ICON_SIZE} />\n </Button>\n )}\n </div>\n <div className={b('content')}>{renderContent()}</div>\n </DrawerItem>\n </Drawer>\n );\n};\n","import React, {Suspense, useCallback, useEffect, useMemo, useState} from 'react';\n\nimport {useForwardRef} from '../../hooks/useForwardRef';\nimport {Content, RenderContentType} from '../Content';\nimport {Drawer, DrawerItem, DrawerItemProps} from '../Drawer/Drawer';\nimport {MobileLogo} from '../MobileLogo';\nimport {LogoProps, TopAlertProps} from '../types';\nimport {block} from '../utils/cn';\n\nimport {Burger} from './Burger/Burger';\nimport {BurgerMenu, BurgerMenuInnerProps} from './BurgerMenu/BurgerMenu';\nimport {\n OverlapPanelProps as CommonOverlapPanelProps,\n OverlapPanel,\n} from './OverlapPanel/OverlapPanel';\nimport {\n BURGER_PANEL_ITEM_ID,\n MOBILE_HEADER_COMPACT_HEIGHT,\n MOBILE_HEADER_EVENT_NAMES,\n MOBILE_HEADER_EXPANDED_HEIGHT,\n OVERLAP_PANEL_ITEM_ID,\n} from './constants';\nimport i18n from './i18n';\nimport {MobileHeaderEvent, MobileHeaderEventOptions, MobileMenuItem} from './types';\n\nimport './MobileHeader.scss';\n\nconst TopAlert = React.lazy(() =>\n import('../TopAlert').then((module) => ({default: module.TopAlert})),\n);\n\nconst b = block('mobile-header');\n\ntype PanelName = DrawerItemProps['id'] | null;\n\ninterface BurgerMenuProps extends Omit<BurgerMenuInnerProps, 'renderFooter'> {\n renderFooter?: (data: {size: number; isCompact: boolean}) => React.ReactNode;\n}\n\ntype OverlapPanelProps = Omit<CommonOverlapPanelProps, 'onClose' | 'visible'>;\n\ninterface PanelItem extends Omit<DrawerItemProps, 'visible'> {}\n\nexport interface MobileHeaderProps {\n logo: LogoProps;\n burgerMenu: BurgerMenuProps;\n overlapPanel?: OverlapPanelProps;\n burgerCloseTitle?: string;\n burgerOpenTitle?: string;\n panelItems?: PanelItem[];\n topAlert?: TopAlertProps;\n renderContent?: RenderContentType;\n sideItemRenderContent?: RenderContentType;\n onEvent?: (itemName: string, eventName: MobileHeaderEvent) => void;\n onClosePanel?: () => void;\n className?: string;\n contentClassName?: string;\n}\n\nexport const MobileHeader = React.forwardRef<HTMLDivElement, MobileHeaderProps>(\n (\n {\n logo,\n burgerMenu,\n burgerCloseTitle = i18n('burger_button_close'),\n burgerOpenTitle = i18n('burger_button_open'),\n panelItems = [],\n renderContent,\n sideItemRenderContent,\n onClosePanel,\n onEvent,\n className,\n contentClassName,\n overlapPanel,\n topAlert,\n },\n ref,\n ): React.ReactElement => {\n const targetRef = useForwardRef<HTMLDivElement>(ref);\n const [compact] = useState(true);\n const [visiblePanel, setVisiblePanel] = useState<PanelName>(null);\n const [overlapPanelVisible, setOverlapPanelVisible] = useState(false);\n\n // for expand top panel cases (i.e. switch service panel). Will be removed if not used in future design\n const size = compact ? MOBILE_HEADER_COMPACT_HEIGHT : MOBILE_HEADER_EXPANDED_HEIGHT;\n\n const onPanelToggle = useCallback(\n (name: PanelName) => {\n if (!name) return;\n\n setVisiblePanel((prev) => {\n const panelOpen = prev === name;\n\n onEvent?.(\n name,\n panelOpen\n ? MOBILE_HEADER_EVENT_NAMES.closeEvent\n : MOBILE_HEADER_EVENT_NAMES.openEvent,\n );\n\n return panelOpen ? null : name;\n });\n\n setOverlapPanelVisible(false);\n },\n [onEvent],\n );\n\n const onMobilePanelToggle = useCallback(\n ({detail}: {detail: MobileHeaderEventOptions}) => {\n if (typeof detail?.panelName === 'string') {\n onPanelToggle(detail?.panelName);\n }\n },\n [onPanelToggle],\n );\n\n const onMobilePanelOpen = useCallback(\n ({detail}: {detail: MobileHeaderEventOptions}) => {\n if (typeof detail?.panelName === 'string') {\n onEvent?.(detail?.panelName, MOBILE_HEADER_EVENT_NAMES.openEvent);\n setVisiblePanel(detail?.panelName);\n setOverlapPanelVisible(false);\n }\n },\n [onEvent],\n );\n\n const onMobilePanelClose = useCallback(\n ({detail}: {detail: MobileHeaderEventOptions}) => {\n if (typeof detail?.panelName === 'string') {\n onEvent?.(detail?.panelName, MOBILE_HEADER_EVENT_NAMES.closeEvent);\n setVisiblePanel(null);\n setOverlapPanelVisible(false);\n }\n },\n [onEvent],\n );\n\n const onBurgerOpen = useCallback(() => {\n onEvent?.(BURGER_PANEL_ITEM_ID, MOBILE_HEADER_EVENT_NAMES.openEvent);\n setVisiblePanel(BURGER_PANEL_ITEM_ID);\n }, [onEvent]);\n\n const onBurgerClose = useCallback(() => {\n onEvent?.(BURGER_PANEL_ITEM_ID, MOBILE_HEADER_EVENT_NAMES.closeEvent);\n setVisiblePanel(null);\n }, [onEvent]);\n\n const onOverlapOpen = useCallback(() => {\n onEvent?.(OVERLAP_PANEL_ITEM_ID, MOBILE_HEADER_EVENT_NAMES.openEvent);\n setOverlapPanelVisible(true);\n }, [onEvent]);\n\n const onOverlapClose = useCallback(() => {\n onEvent?.(OVERLAP_PANEL_ITEM_ID, MOBILE_HEADER_EVENT_NAMES.closeEvent);\n setOverlapPanelVisible(false);\n }, [onEvent]);\n\n const onCloseDrawer = useCallback(() => {\n if (visiblePanel) {\n onEvent?.(visiblePanel, MOBILE_HEADER_EVENT_NAMES.closeEvent);\n }\n setVisiblePanel(null);\n }, [visiblePanel, onEvent]);\n\n const onBurgerMenuItemClick = useCallback(\n (item: MobileMenuItem) => {\n const closeMenuOnClick = item.closeMenuOnClick ?? true;\n\n if (closeMenuOnClick) {\n onBurgerClose();\n }\n },\n [onBurgerClose],\n );\n\n const renderBurgerMenuFooter = useCallback(\n () =>\n burgerMenu.renderFooter?.({\n size,\n isCompact: compact,\n }),\n [burgerMenu, size, compact],\n );\n\n const onLogoClick = useCallback(\n (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n onClosePanel?.();\n logo.onClick?.(event);\n },\n [logo, onClosePanel],\n );\n\n const burgerPanelItem: PanelItem = useMemo(\n () => ({\n id: BURGER_PANEL_ITEM_ID,\n content: (\n <BurgerMenu\n items={burgerMenu.items}\n modalItem={burgerMenu.modalItem}\n renderFooter={renderBurgerMenuFooter}\n onItemClick={onBurgerMenuItemClick}\n className={b('burger-menu')}\n />\n ),\n }),\n [burgerMenu.items, burgerMenu.modalItem, onBurgerMenuItemClick, renderBurgerMenuFooter],\n );\n\n useEffect(() => {\n const node = targetRef?.current;\n\n if (node) {\n node.addEventListener('MOBILE_BURGER_OPEN', onBurgerOpen);\n node.addEventListener('MOBILE_BURGER_CLOSE', onBurgerClose);\n\n node.addEventListener('MOBILE_OVERLAP_PANEL_OPEN', onOverlapOpen);\n node.addEventListener('MOBILE_OVERLAP_PANEL_CLOSE', onOverlapClose);\n\n node.addEventListener(\n 'MOBILE_PANEL_TOGGLE',\n onMobilePanelToggle as unknown as EventListener,\n );\n node.addEventListener(\n 'MOBILE_PANEL_OPEN',\n onMobilePanelOpen as unknown as EventListener,\n );\n node.addEventListener(\n 'MOBILE_PANEL_CLOSE',\n onMobilePanelClose as unknown as EventListener,\n );\n }\n\n return () => {\n if (node) {\n node.removeEventListener('MOBILE_BURGER_OPEN', onBurgerOpen);\n node.removeEventListener('MOBILE_BURGER_CLOSE', onBurgerClose);\n\n node.removeEventListener('MOBILE_OVERLAP_PANEL_OPEN', onOverlapOpen);\n node.removeEventListener('MOBILE_OVERLAP_PANEL_CLOSE', onOverlapClose);\n\n node.removeEventListener(\n 'MOBILE_PANEL_TOGGLE',\n onMobilePanelToggle as unknown as EventListener,\n );\n node.removeEventListener(\n 'MOBILE_PANEL_OPEN',\n onMobilePanelOpen as unknown as EventListener,\n );\n node.removeEventListener(\n 'MOBILE_PANEL_CLOSE',\n onMobilePanelClose as unknown as EventListener,\n );\n }\n };\n }, [\n targetRef,\n onBurgerClose,\n onBurgerOpen,\n onMobilePanelToggle,\n onMobilePanelOpen,\n onMobilePanelClose,\n onOverlapOpen,\n onOverlapClose,\n ]);\n\n return (\n <div className={b({compact}, className)} ref={targetRef}>\n <div className={b('top')}>\n {topAlert && (\n <Suspense fallback={null}>\n <TopAlert alert={topAlert} mobileView />\n </Suspense>\n )}\n <header className={b('header')} style={{height: size}}>\n <Burger\n opened={visiblePanel === burgerPanelItem.id}\n onClick={() => onPanelToggle(BURGER_PANEL_ITEM_ID)}\n className={b('burger')}\n closeTitle={burgerCloseTitle}\n openTitle={burgerOpenTitle}\n />\n <MobileLogo {...logo} compact={compact} onClick={onLogoClick} />\n\n <div className={b('side-item')}>{sideItemRenderContent?.({size})}</div>\n </header>\n </div>\n\n <Drawer\n className={b('panels')}\n onVeilClick={onCloseDrawer}\n onEscape={onCloseDrawer}\n style={{top: `calc(${size}px + var(--gn-top-alert-height, 0)`}}\n >\n {[burgerPanelItem, ...panelItems].map((item) => (\n <DrawerItem\n {...item}\n key={item.id}\n visible={visiblePanel === item.id}\n className={b('panel-item', item.className)}\n />\n ))}\n </Drawer>\n {overlapPanel && (\n <OverlapPanel\n topOffset={size}\n className={b('overlap-panel')}\n title={overlapPanel.title}\n onClose={onOverlapClose}\n action={overlapPanel.action}\n visible={overlapPanelVisible}\n renderContent={overlapPanel.renderContent}\n />\n )}\n <Content\n size={size}\n renderContent={renderContent}\n className={b('content', contentClassName)}\n cssSizeVariableName=\"--mobile-header-size\"\n />\n </div>\n );\n },\n);\n\nMobileHeader.displayName = 'MobileHeader';\n","import React from 'react';\n\nimport {Icon, IconProps, Sheet, eventBroker} from '@gravity-ui/uikit';\n\nimport {block} from '../../utils/cn';\nimport {MOBILE_HEADER_ICON_SIZE} from '../constants';\nimport {ModalItem} from '../types';\n\nimport './FooterItem.scss';\n\nconst b = block('mobile-header-footer-item');\n\nexport interface FooterItemProps {\n icon?: IconProps['data'];\n iconSize?: string | number;\n className?: string;\n modalItem?: ModalItem;\n onClick?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n eventBrokerMeta?: Record<string, string | undefined>;\n}\n\nexport const FooterItem = ({\n icon,\n iconSize = MOBILE_HEADER_ICON_SIZE,\n className,\n modalItem = {visible: false},\n onClick,\n eventBrokerMeta,\n}: FooterItemProps) => {\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n eventBroker.publish({\n componentId: 'MobileHeaderFooterItem',\n eventId: 'click',\n domEvent: event,\n meta: eventBrokerMeta,\n });\n\n onClick?.(event);\n },\n [onClick, eventBrokerMeta],\n );\n\n return (\n <div className={b()}>\n <button className={b('button', className)} onClick={handleClick}>\n {icon ? <Icon data={icon} size={iconSize} className={b('icon')} /> : null}\n </button>\n\n <Sheet\n id={modalItem.id}\n title={modalItem.title}\n visible={modalItem.visible}\n className={b('modal', modalItem.className)}\n contentClassName={b('modal-content', modalItem.contentClassName)}\n allowHideOnContentScroll={modalItem.modalAllowHideOnContentScroll}\n onClose={modalItem.onClose}\n >\n {modalItem.renderContent?.()}\n </Sheet>\n </div>\n );\n};\n"],"names":["React","b","CloseIcon"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"HotkeysPanel-BiJ8VcX-.js","sources":["../../../src/components/HotkeysPanel/utils/filterHotkeys.ts","../../../src/components/HotkeysPanel/utils/flattenHotkeyGroups.ts","../../../src/components/HotkeysPanel/HotkeysPanel.tsx"],"sourcesContent":["import type {HotkeysGroup} from '..';\n\nexport function filterHotkeys<T>(hotkeys: HotkeysGroup<T>[], filter: string) {\n if (filter) {\n const result = [];\n const normalizedFilter = filter.toLowerCase();\n\n for (const hotkeysBlock of hotkeys) {\n const filteredItems = hotkeysBlock.items.filter((item) =>\n item.title.toLowerCase().includes(normalizedFilter),\n );\n if (filteredItems.length > 0) {\n result.push({\n ...hotkeysBlock,\n items: filteredItems,\n });\n }\n }\n\n return result;\n }\n\n return hotkeys;\n}\n","import type {HotkeysGroup, HotkeysListItem} from '../types';\n\nexport function flattenHotkeyGroups<T>(hotkeys: HotkeysGroup<T>[]) {\n const result: HotkeysListItem[] = [];\n\n for (const hotkeysGroup of hotkeys) {\n result.push({\n title: hotkeysGroup.title,\n group: true,\n });\n\n result.push(...hotkeysGroup.items);\n }\n\n return result;\n}\n","import React, {useCallback, useMemo, useState} from 'react';\nimport type {ReactNode} from 'react';\n\nimport {Hotkey, List, TextInput} from '@gravity-ui/uikit';\nimport type {ListProps} from '@gravity-ui/uikit';\n\nimport {Drawer, DrawerItem} from '../Drawer/Drawer';\nimport type {DrawerProps} from '../Drawer/Drawer';\nimport {block} from '../utils/cn';\n\nimport type {HotkeysGroup, HotkeysListItem} from './types';\nimport {filterHotkeys} from './utils/filterHotkeys';\nimport {flattenHotkeyGroups} from './utils/flattenHotkeyGroups';\n\nimport './HotkeysPanel.scss';\n\nconst b = block('hotkeys-panel');\n\nexport type HotkeysPanelProps<T> = {\n hotkeys: HotkeysGroup<T>[];\n title?: ReactNode;\n filterable?: boolean;\n filterPlaceholder?: string;\n emptyState?: ReactNode;\n visible: boolean;\n onClose?: () => void;\n className?: string;\n drawerItemClassName?: string;\n filterClassName?: string;\n titleClassName?: string;\n itemContentClassName?: string;\n listClassName?: string;\n leftOffset?: number | string;\n topOffset?: number | string;\n preventScrollBody?: DrawerProps['preventScrollBody'];\n} & Omit<\n ListProps<HotkeysListItem>,\n | 'items'\n | 'emptyPlaceholder'\n | 'className'\n | 'size'\n | 'renderItem'\n | 'filterable'\n | 'autoFocus'\n | 'filterPlaceholder'\n | 'filterClassName'\n | 'filter'\n | 'filterItem'\n | 'onFilterEnd'\n | 'onFilterUpdate'\n>;\n\nexport function HotkeysPanel<T = {}>({\n visible,\n onClose,\n leftOffset,\n topOffset,\n className,\n drawerItemClassName,\n filterClassName,\n titleClassName,\n listClassName,\n itemContentClassName,\n preventScrollBody,\n hotkeys,\n itemClassName,\n filterable = true,\n filterPlaceholder,\n title,\n emptyState,\n ...listProps\n}: HotkeysPanelProps<T>) {\n const [filter, setFilter] = useState('');\n\n const hotkeysList = useMemo(() => {\n const filteredHotkeys = filterHotkeys(hotkeys, filter);\n return flattenHotkeyGroups(filteredHotkeys);\n }, [hotkeys, filter]);\n\n const renderItem = useCallback(\n (item: HotkeysListItem) => (\n <div\n className={b('item-content', {group: item.group}, itemContentClassName)}\n key={item.title}\n >\n {item.title}\n {item.value && <Hotkey className={b('hotkey')} value={item.value} />}\n </div>\n ),\n [],\n );\n\n const drawerItemContent = (\n <React.Fragment>\n <h2 className={b('title', titleClassName)}>{title}</h2>\n {filterable && (\n <TextInput\n value={filter}\n onUpdate={setFilter}\n placeholder={filterPlaceholder}\n autoFocus\n className={b('search', filterClassName)}\n hasClear\n />\n )}\n <List<HotkeysListItem>\n className={b('list', listClassName)}\n virtualized={false}\n filterable={false}\n items={hotkeysList}\n renderItem={renderItem}\n itemClassName={b('item', itemClassName)}\n emptyPlaceholder={emptyState as string}\n {...listProps}\n />\n </React.Fragment>\n );\n\n return (\n <Drawer\n className={b(null, className)}\n onVeilClick={onClose}\n onEscape={onClose}\n preventScrollBody={preventScrollBody}\n style={{\n left: leftOffset,\n top: topOffset,\n }}\n >\n <DrawerItem\n id=\"hotkeys\"\n visible={visible}\n className={b('drawer-item', drawerItemClassName)}\n content={drawerItemContent}\n />\n </Drawer>\n );\n}\n"],"names":["React"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Item-BnjbUb88.js","sources":["../../../src/components/CompositeBar/HighlightedItem/HighlightedItem.tsx","../../../src/components/CompositeBar/constants.ts","../../../src/components/CompositeBar/utils.ts","../../../src/components/CompositeBar/Item/Item.tsx"],"sourcesContent":["import React, {useCallback, useEffect, useMemo, useState} from 'react';\n\nimport {Portal} from '@gravity-ui/uikit';\nimport debounceFn from 'lodash/debounce';\n\nimport {useAsideHeaderInnerContext} from '../../AsideHeader/AsideHeaderContext';\nimport {block} from '../../utils/cn';\n\nimport './HighlightedItem.scss';\n\nconst b = block('composite-bar-highlighted-item');\n\ninterface ItemInnerProps {\n iconRef: React.RefObject<HTMLDivElement>;\n iconNode: React.ReactNode;\n onClick?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n onClickCapture?: (event: React.SyntheticEvent) => void;\n}\n\nconst DEBOUNCE_TIME = 200;\n\nexport const HighlightedItem: React.FC<ItemInnerProps> = ({\n iconRef,\n iconNode,\n onClick,\n onClickCapture,\n}: ItemInnerProps) => {\n const {openModalSubscriber} = useAsideHeaderInnerContext();\n const [{top, left, width, height}, setPosition] = useState({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n });\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\n\n const handleResizeDebounced = useMemo(\n () =>\n debounceFn(\n () => {\n const {\n top = 0,\n left = 0,\n width = 0,\n height = 0,\n } = iconRef?.current?.getBoundingClientRect() || {};\n\n setPosition({\n top: top + window.scrollY,\n left: left + window.scrollX,\n width,\n height,\n });\n },\n DEBOUNCE_TIME,\n {leading: true},\n ),\n [iconRef],\n );\n\n const handleResize = useCallback(() => handleResizeDebounced(), [handleResizeDebounced]);\n\n useEffect(() => {\n if (!isModalOpen) {\n return;\n }\n\n handleResize();\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [handleResize, isModalOpen]);\n\n openModalSubscriber?.((open: boolean) => {\n setIsModalOpen(open);\n });\n\n if (!iconNode || !isModalOpen) {\n return null;\n }\n\n return (\n <Portal>\n <div\n className={b()}\n style={{left, top, width, height}}\n onClick={onClick}\n onClickCapture={onClickCapture}\n data-toast\n >\n <div className={b('icon')}>{iconNode}</div>\n </div>\n </Portal>\n );\n};\n\nHighlightedItem.displayName = 'HighlightedItem';\n","import {PopupPlacement} from '@gravity-ui/uikit';\n\nexport const ITEM_TYPE_REGULAR = 'regular';\nexport const COLLAPSE_ITEM_ID = 'collapse-item-id';\n\nexport const POPUP_PLACEMENT: PopupPlacement = ['right-start', 'right-end', 'right'];\nexport const POPUP_ITEM_HEIGHT = 28;\n","import {Ellipsis} from '@gravity-ui/icons';\n\nimport {CompositeBarItem} from '../CompositeBar/CompositeBar';\nimport {ITEM_HEIGHT} from '../constants';\n\nimport {MenuItem} from './../types';\nimport {COLLAPSE_ITEM_ID} from './constants';\n\nexport function getItemHeight(item: CompositeBarItem) {\n if (!isMenuItem(item)) {\n return ITEM_HEIGHT;\n }\n\n switch (item.type) {\n case 'action':\n return 50;\n case 'divider':\n return 15;\n\n default:\n return ITEM_HEIGHT;\n }\n}\n\nexport function getItemsHeight<T extends CompositeBarItem>(items: T[]) {\n return items.reduce((sum, item) => sum + getItemHeight(item), 0);\n}\n\nexport function getSelectedItemIndex(items: MenuItem[]) {\n const index = items.findIndex(({current}) => Boolean(current));\n return index === -1 ? undefined : index;\n}\n\nexport function getPinnedItems(items: MenuItem[]) {\n const pinnedItems: MenuItem[] = [];\n for (const item of items) {\n if (item.pinned) {\n pinnedItems.push(item);\n } else if (item.type === 'divider') {\n if (pinnedItems.length > 0 && pinnedItems[pinnedItems.length - 1].type !== 'divider') {\n pinnedItems.push(item);\n }\n }\n }\n return pinnedItems;\n}\n\nexport function getItemsMinHeight(items: MenuItem[]) {\n const pinnedItems = getPinnedItems(items);\n const afterMoreButtonItems = items.filter((item) => item.afterMoreButton);\n\n return (\n getItemsHeight(pinnedItems) +\n getItemsHeight(afterMoreButtonItems) +\n (pinnedItems.length === items.length ? 0 : ITEM_HEIGHT)\n );\n}\n\nexport function getMoreButtonItem(menuMoreTitle?: string): MenuItem {\n return {\n id: COLLAPSE_ITEM_ID,\n title: menuMoreTitle,\n icon: Ellipsis,\n iconSize: 18,\n };\n}\n\nexport function getAutosizeListItems(\n items: MenuItem[],\n height: number,\n collapseItem: MenuItem,\n): {\n listItems: MenuItem[];\n collapseItems: MenuItem[];\n} {\n const afterMoreButtonItems = items.filter((item) => item.afterMoreButton);\n const regularItems = items.filter((item) => !item.afterMoreButton);\n const listItems = [...regularItems, ...afterMoreButtonItems];\n\n const allItemsHeight = getItemsHeight(listItems);\n if (allItemsHeight <= height) {\n return {listItems, collapseItems: []};\n }\n\n const collapseItemHeight = getItemHeight(collapseItem);\n\n listItems.splice(regularItems.length, 0, collapseItem);\n const collapseItems: MenuItem[] = [];\n\n let listHeight = allItemsHeight + collapseItemHeight;\n let index = listItems.length;\n while (listHeight > height) {\n if (index === 0) {\n break;\n }\n index--;\n\n const item = listItems[index];\n if (item.pinned || item.id === COLLAPSE_ITEM_ID || item.afterMoreButton) {\n continue;\n }\n if (item.type === 'divider') {\n if (index + 1 < listItems.length && listItems[index + 1]?.type === 'divider') {\n listHeight -= getItemHeight(item);\n listItems.splice(index, 1);\n }\n continue;\n }\n listHeight -= getItemHeight(item);\n collapseItems.unshift(...listItems.splice(index, 1));\n }\n if (\n listItems[index]?.type === 'divider' &&\n (index === 0 || listItems[index - 1]?.type === 'divider')\n ) {\n listItems.splice(index, 1);\n }\n\n return {listItems, collapseItems};\n}\n\nexport function isMenuItem(item: CompositeBarItem): item is MenuItem {\n return (item as MenuItem)?.id !== undefined;\n}\n","import React from 'react';\n\nimport {ActionTooltip, Icon, List, Popup, PopupPlacement, PopupProps} from '@gravity-ui/uikit';\n\nimport {useAsideHeaderContext} from '../../AsideHeader/AsideHeaderContext';\nimport {ASIDE_HEADER_ICON_SIZE} from '../../constants';\nimport {MakeItemParams, MenuItem} from '../../types';\nimport {block} from '../../utils/cn';\nimport {HighlightedItem} from '../HighlightedItem/HighlightedItem';\nimport {\n COLLAPSE_ITEM_ID,\n ITEM_TYPE_REGULAR,\n POPUP_ITEM_HEIGHT,\n POPUP_PLACEMENT,\n} from '../constants';\nimport {getSelectedItemIndex} from '../utils';\n\nimport './Item.scss';\n\nconst b = block('composite-bar-item');\n\ninterface ItemPopup {\n popupVisible?: PopupProps['open'];\n /**\n * floating element anchor ref object\n *\n * @deprecated Use `popupAnchorElement` instead\n * */\n popupAnchor?: PopupProps['anchorRef'];\n popupAnchorElement?: PopupProps['anchorElement'];\n popupPlacement?: PopupProps['placement'];\n popupOffset?: PopupProps['offset'];\n popupKeepMounted?: PopupProps['keepMounted'];\n renderPopupContent?: () => React.ReactNode;\n /**\n * This callback will be called when Escape key pressed on keyboard, or click outside was made\n * This behaviour could be disabled with `disableEscapeKeyDown`\n * and `disableOutsideClick` options\n *\n * @deprecated Use `onOpenChangePopup` instead\n */\n onClosePopup?: () => void;\n onOpenChangePopup?: PopupProps['onOpenChange'];\n}\n\nexport interface ItemProps extends ItemPopup {\n item: MenuItem;\n enableTooltip?: boolean;\n onItemClick?: (\n item: MenuItem,\n collapsed: boolean,\n event: React.MouseEvent<HTMLElement, MouseEvent>,\n ) => void;\n onItemClickCapture?: (event: React.SyntheticEvent) => void;\n onCollapseItemClick?: () => void;\n bringForward?: boolean;\n}\n\ninterface ItemInnerProps extends ItemProps {\n className?: string;\n collapseItems?: MenuItem[];\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}\n\nfunction renderItemTitle(item: MenuItem) {\n let titleNode = <div className={b('title-text')}>{item.title}</div>;\n\n if (item.rightAdornment) {\n titleNode = (\n <React.Fragment>\n {titleNode}\n <div className={b('title-adornment')}>{item.rightAdornment}</div>\n </React.Fragment>\n );\n }\n\n return titleNode;\n}\n\nexport const defaultPopupPlacement: PopupPlacement = ['right-end'];\nexport const defaultPopupOffset: NonNullable<PopupProps['offset']> = {mainAxis: -20, crossAxis: 8};\n\nexport const Item: React.FC<ItemInnerProps> = (props) => {\n const {\n item,\n className,\n collapseItems,\n onMouseLeave,\n onMouseEnter,\n enableTooltip = true,\n popupVisible = false,\n popupAnchor,\n popupAnchorElement,\n popupPlacement = defaultPopupPlacement,\n popupOffset = defaultPopupOffset,\n popupKeepMounted,\n renderPopupContent,\n onClosePopup,\n onOpenChangePopup,\n onItemClick,\n onItemClickCapture,\n onCollapseItemClick,\n bringForward,\n } = props;\n\n const {compact} = useAsideHeaderContext();\n\n const [open, toggleOpen] = React.useState<boolean>(false);\n\n const ref = React.useRef<HTMLAnchorElement & HTMLButtonElement>(null);\n const anchorRef = popupAnchorElement ? {current: popupAnchorElement} : popupAnchor || ref;\n const highlightedRef = React.useRef<HTMLDivElement>(null);\n\n const type = item.type || ITEM_TYPE_REGULAR;\n const current = item.current || false;\n const tooltipText = item.tooltipText || item.title;\n const icon = item.icon;\n const iconSize = item.iconSize || ASIDE_HEADER_ICON_SIZE;\n const iconQa = item.iconQa;\n const collapsedItem = item.id === COLLAPSE_ITEM_ID;\n\n const handleClosePopup = React.useCallback(\n (event: MouseEvent | KeyboardEvent) => {\n if (\n event instanceof MouseEvent &&\n event.target &&\n ref.current?.contains(event.target as Node)\n ) {\n return;\n }\n onClosePopup?.();\n },\n [onClosePopup],\n );\n\n if (item.type === 'divider') {\n return <div className={b('menu-divider')} />;\n }\n\n const makeIconNode = (iconEl: React.ReactNode): React.ReactNode => {\n return compact ? (\n <ActionTooltip\n title=\"\"\n description={tooltipText}\n disabled={!enableTooltip || (collapsedItem && open) || popupVisible}\n placement=\"right\"\n className={b('icon-tooltip', {'item-type': type})}\n >\n <div\n onMouseEnter={() => onMouseEnter?.()}\n onMouseLeave={() => onMouseLeave?.()}\n className={b('btn-icon')}\n >\n {iconEl}\n </div>\n </ActionTooltip>\n ) : (\n iconEl\n );\n };\n\n const makeNode = ({icon: iconEl, title: titleEl}: MakeItemParams) => {\n const [Tag, tagProps] = item.link\n ? ['a' as const, {href: item.link}]\n : ['button' as const, {}];\n\n const createdNode = (\n <React.Fragment>\n <Tag\n {...tagProps}\n className={b({type, current, compact}, className)}\n ref={ref}\n data-qa={item.qa}\n onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (collapsedItem) {\n /**\n * If we call onItemClick for collapsedItem then:\n * - User get unexpected item in onItemClick callback\n * - onClosePanel calls twice for each popuped item, as result it will prevent opening of panelItems\n */\n toggleOpen(!open);\n onCollapseItemClick?.();\n } else {\n onItemClick?.(item, false, event);\n }\n }}\n onClickCapture={onItemClickCapture}\n onMouseEnter={() => {\n if (!compact) {\n onMouseEnter?.();\n }\n }}\n onMouseLeave={() => {\n if (!compact) {\n onMouseLeave?.();\n }\n }}\n >\n <div className={b('icon-place')} ref={highlightedRef}>\n {makeIconNode(iconEl)}\n </div>\n\n <div\n className={b('title')}\n title={typeof item.title === 'string' ? item.title : undefined}\n >\n {titleEl}\n </div>\n </Tag>\n {renderPopupContent && Boolean(anchorRef?.current) && (\n <Popup\n open={popupVisible}\n keepMounted={popupKeepMounted}\n placement={popupPlacement}\n offset={popupOffset}\n anchorRef={anchorRef}\n onClose={handleClosePopup}\n onOpenChange={onOpenChangePopup}\n >\n {renderPopupContent()}\n </Popup>\n )}\n </React.Fragment>\n );\n\n return createdNode;\n };\n\n const iconNode = icon ? (\n <Icon qa={iconQa} data={icon} size={iconSize} className={b('icon')} />\n ) : null;\n const titleNode = renderItemTitle(item);\n const params = {icon: iconNode, title: titleNode};\n let highlightedNode = null;\n let node;\n\n const opts = {compact: Boolean(compact), collapsed: false, item, ref};\n\n if (typeof item.itemWrapper === 'function') {\n node = item.itemWrapper(params, makeNode, opts) as React.ReactElement;\n highlightedNode =\n bringForward &&\n (item.itemWrapper(\n params,\n ({icon: iconEl}) => makeIconNode(iconEl),\n opts,\n ) as React.ReactElement);\n } else {\n node = makeNode(params);\n highlightedNode = bringForward && makeIconNode(iconNode);\n }\n\n return (\n <React.Fragment>\n {bringForward && (\n <HighlightedItem\n iconNode={highlightedNode}\n iconRef={highlightedRef}\n onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) =>\n onItemClick?.(item, false, event)\n }\n onClickCapture={onItemClickCapture}\n />\n )}\n {node}\n {open && collapsedItem && collapseItems?.length && Boolean(anchorRef?.current) && (\n <CollapsedPopup {...props} anchorRef={ref} onClose={() => toggleOpen(false)} />\n )}\n </React.Fragment>\n );\n};\n\nItem.displayName = 'Item';\n\ninterface CollapsedPopupProps {\n anchorRef: React.RefObject<HTMLElement>;\n onClose: () => void;\n}\n\nfunction CollapsedPopup({\n onItemClick,\n collapseItems,\n anchorRef,\n onClose,\n}: ItemInnerProps & CollapsedPopupProps) {\n const {compact} = useAsideHeaderContext();\n return collapseItems?.length ? (\n <Popup placement={POPUP_PLACEMENT} open={true} anchorRef={anchorRef} onClose={onClose}>\n <div className={b('collapse-items-popup-content')}>\n <List\n itemClassName={b('root-collapse-item')}\n items={collapseItems}\n selectedItemIndex={getSelectedItemIndex(collapseItems)}\n itemHeight={POPUP_ITEM_HEIGHT}\n itemsHeight={collapseItems.length * POPUP_ITEM_HEIGHT}\n virtualized={false}\n filterable={false}\n sortable={false}\n onItemClick={onClose}\n renderItem={(collapseItem) => {\n const makeCollapseNode = ({\n title: titleEl,\n icon: iconEl,\n }: MakeItemParams) => {\n const [Tag, tagProps] = collapseItem.link\n ? ['a' as const, {href: collapseItem.link}]\n : ['button' as const, {}];\n\n return (\n <Tag\n {...tagProps}\n className={b('collapse-item')}\n onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n onItemClick?.(collapseItem, true, event);\n }}\n >\n {iconEl}\n {titleEl}\n </Tag>\n );\n };\n\n const titleNode = renderItemTitle(collapseItem);\n const iconNode = collapseItem.icon && (\n <Icon\n data={collapseItem.icon}\n size={14}\n className={b('collapse-item-icon')}\n />\n );\n\n const params = {title: titleNode, icon: iconNode};\n const opts = {\n compact: Boolean(compact),\n collapsed: true,\n item: collapseItem,\n ref: anchorRef,\n };\n if (typeof collapseItem.itemWrapper === 'function') {\n return collapseItem.itemWrapper(params, makeCollapseNode, opts);\n } else {\n return makeCollapseNode(params);\n }\n }}\n />\n </div>\n </Popup>\n ) : null;\n}\n"],"names":["b","React"],"mappings":"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"}