@gravity-ui/navigation 2.21.0 → 2.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,7 +18,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
18
18
  var css_248z = ".g-root{--gn-aside-top-panel-height:0px}.gn-aside-header{--gn-aside-header-min-width:56px;--_--item-icon-background-size:38px;--_--background-color:var(--g-color-base-background);--_--decoration-collapsed-background-color:var(--g-color-base-warning-light);--_--decoration-expanded-background-color:var(--g-color-base-warning-light);--_--vertical-divider-line-color:var(--g-color-line-generic);--_--horizontal-divider-line-color:var(--g-color-line-generic);background-color:var(--g-color-base-background);height:100%;position:relative;width:100%}.gn-aside-header__aside{background-color:var(--gn-aside-header-expanded-background-color,var(--gn-aside-header-background-color,var(--_--background-color)));box-sizing:border-box;display:flex;flex-direction:column;height:100vh;left:0;margin-top:var(--gn-aside-top-panel-height);max-height:calc(100vh - var(--gn-aside-top-panel-height));position:sticky;top:var(--gn-aside-top-panel-height);width:inherit;z-index:var(--gn-aside-header-z-index,100)}.gn-aside-header__aside:after{background-color:var(--gn-aside-header-divider-vertical-color,var(--_--vertical-divider-line-color));content:\"\";height:100%;position:absolute;right:0;top:0;width:1px;z-index:2}.gn-aside-header__aside-popup-anchor{inset:0;position:absolute;z-index:1}.gn-aside-header__aside-content{--gradient-height:334px;display:flex;flex-direction:column;height:inherit;overflow-x:hidden;padding-top:var(--gn-aside-header-padding-top);position:relative;user-select:none;width:inherit;z-index:2}.gn-aside-header__aside-content>.gn-aside-header-logo{margin:8px 0}.gn-aside-header__aside-content_with-decoration{background:linear-gradient(180deg,var(--gn-aside-header-decoration-expanded-background-color,var(--_--decoration-expanded-background-color)) calc(var(--gradient-height)*.33),transparent calc(var(--gradient-height)*.88))}.gn-aside-header__aside-custom-background{bottom:0;display:flex;position:absolute;top:0;z-index:-1}.gn-aside-header_compact .gn-aside-header__aside{background-color:var(--gn-aside-header-collapsed-background-color,var(--gn-aside-header-background-color,var(--_--background-color)))}.gn-aside-header_compact .gn-aside-header__aside-content{background:transparent}.gn-aside-header__header{--gn-aside-header-header-divider-height:29px;box-sizing:border-box;flex:none;padding-bottom:22px;padding-top:8px;position:relative;width:100%;z-index:1}.gn-aside-header__header .gn-aside-header__header-divider{bottom:0;color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));display:none;left:0;position:absolute;z-index:-2}.gn-aside-header__header_with-decoration:before{background-color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));content:\"\";display:none;height:calc(100% - var(--gn-aside-header-header-divider-height));left:0;position:absolute;top:0;width:100%;z-index:-2}.gn-aside-header__header:after{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:12px;content:\"\";height:1px;left:0;position:absolute;width:100%;z-index:-2}.gn-aside-header_compact .gn-aside-header__header:before,.gn-aside-header_compact .gn-aside-header__header_with-decoration .gn-aside-header__header-divider{display:block}.gn-aside-header_compact .gn-aside-header__header_with-decoration:after{display:none}.gn-aside-header__logo-button-wrapper{width:var(--gn-aside-header-min-width)}.gn-aside-header__logo-button[class],.gn-aside-header__logo-button[class] .g-button__icon{height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size))}.gn-aside-header__menu-items{flex-grow:1}.gn-aside-header__footer{display:flex;flex-direction:column;flex-shrink:0;margin:8px 0;width:100%}.gn-aside-header__panels{inset:var(--gn-aside-top-panel-height) 0 0;max-height:calc(100vh - var(--gn-aside-top-panel-height));overflow:auto;position:fixed;z-index:var(--gn-aside-header-panel-z-index,98)}.gn-aside-header__panel{height:100%}.gn-aside-header__pane-container{display:flex;flex-direction:row;outline:none;overflow:visible;user-select:text}.gn-aside-header__pane-top-divider{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));height:1px;margin-top:-1px}.gn-aside-header__pane-top{background:var(--g-color-base-background);position:fixed;top:0;width:100%;z-index:var(--gn-aside-header-pane-top-z-index,98)}.gn-aside-header__pane-top-alert_centered{display:flex;justify-content:space-around}.gn-aside-header__pane-top-alert_dense{padding-bottom:var(--g-spacing-2);padding-top:var(--g-spacing-2)}.gn-aside-header__content{margin-top:var(--gn-aside-top-panel-height);width:calc(100% - var(--gn-aside-header-size));z-index:var(--gn-aside-header-content-z-index,95)}";
19
19
  styleInject_es.styleInject(css_248z);
20
20
 
21
- const TopPanel = React__default["default"].lazy(() => Promise.resolve().then(function () { return require('./TopPanel-1b062791.js'); }).then((module) => ({ default: module.TopPanel })));
21
+ const TopPanel = React__default["default"].lazy(() => Promise.resolve().then(function () { return require('./TopPanel-33f1e6c1.js'); }).then((module) => ({ default: module.TopPanel })));
22
22
  const Layout = ({ compact, className, children, topAlert }) => {
23
23
  const size = compact ? constants.ASIDE_HEADER_COMPACT_WIDTH : constants.ASIDE_HEADER_EXPANDED_WIDTH;
24
24
  const asideHeaderContextValue = React.useMemo(() => ({ size, compact }), [compact, size]);
@@ -399,7 +399,7 @@ function SettingsSearch({ className, initialValue, onChange, debounce: debounce$
399
399
  } })));
400
400
  }
401
401
 
402
- var css_248z = ".gn-settings{display:grid;grid-template-columns:216px 1fr;height:100%;width:834px}.gn-settings_view_mobile{display:block;height:calc(80vh - 56px);overflow-x:hidden;width:auto}@supports (height:90dvh){.gn-settings_view_mobile{height:calc(90dvh - 56px)}}.gn-settings_view_mobile.gn-settings_loading{text-align:center}.gn-settings_view_mobile .gn-settings__loader{margin-top:20px}.gn-settings_view_mobile .gn-settings__search{margin:4px 0 16px;padding:0 20px}.gn-settings_view_mobile .gn-settings__page{overflow-y:visible}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:first-child{margin-left:20px}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:last-child{margin-right:20px}.gn-settings_view_mobile .gn-settings__section-heading{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.gn-settings_view_mobile .gn-settings__section-subheader{color:var(--g-color-text-secondary)}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings-subheader{margin-top:8px}.gn-settings_view_mobile .gn-settings__section-item{margin-top:0}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings__section-item,.gn-settings_view_mobile .gn-settings__section-subheader+.gn-settings__section-item{margin-top:30px}.gn-settings_view_mobile .gn-settings__section-item+.gn-settings__section-item{margin-top:22px}.gn-settings_view_mobile .gn-settings__item:not(.gn-settings_view_mobile .gn-settings__item_mode_row){gap:8px;grid-template-columns:1fr}.gn-settings_view_mobile .gn-settings__item-heading{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.gn-settings_view_mobile .gn-settings__item-description{font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.gn-settings_view_mobile .gn-settings__item_mode_row{grid-template-columns:1fr auto}.gn-settings_view_mobile .gn-settings__item_mode_row .gn-settings__item-heading{padding-right:20px}.gn-settings_view_mobile .gn-settings__item-content{width:100%}.gn-settings_view_mobile .gn-settings__not-found{color:var(--g-color-text-hint);font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);justify-items:start;line-height:var(--g-text-body-2-line-height);margin:20px 0 0 20px}.gn-settings_loading{grid-template-columns:auto}.gn-settings__loader{place-self:center}.gn-settings__not-found{display:grid;height:100%;place-items:center}.gn-settings__menu{border-right:1px solid var(--g-color-line-generic)}.gn-settings__heading{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:20px 20px 0}.gn-settings__search{margin:0 20px 16px}.gn-settings__page{overflow-y:auto}.gn-settings__content{padding:20px}.gn-settings__section-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__section-heading:hover .gn-settings__section-right-adornment_hidden{opacity:1}.gn-settings__section-heading{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:0}.gn-settings__section-item{margin-top:24px}.gn-settings__section+.gn-settings__section{margin-top:32px}.gn-settings__item{display:grid;grid-template-columns:216px 1fr;justify-items:start}.gn-settings__item_align_top{align-items:start}.gn-settings__item_align_center{align-items:center}.gn-settings__item-title_badge{position:relative}.gn-settings__item-title_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:\"\";display:block;height:6px;position:absolute;right:-8px;top:1px;width:6px}.gn-settings__item-description{color:var(--g-color-text-secondary);display:block;font-size:var(--g-text-caption-2-font-size);font-weight:var(--g-text-caption-font-weight);line-height:var(--g-text-caption-2-line-height);margin-top:2px;padding-right:20px}.gn-settings__item-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__item:hover .gn-settings__item-right-adornment_hidden{opacity:1}.gn-settings__item_selected,.gn-settings__section_selected{background:var(--g-color-base-selection);border-radius:8px;margin-left:-8px;padding:8px}.gn-settings__found{background:var(--g-color-base-selection);font-weight:var(--g-text-accent-font-weight)}";
402
+ var css_248z = ".gn-settings{display:grid;grid-template-columns:216px 1fr;height:100%;width:834px}.gn-settings_view_mobile{display:block;height:calc(80vh - 56px);overflow-x:hidden;width:auto}@supports (height:90dvh){.gn-settings_view_mobile{height:calc(90dvh - 56px)}}.gn-settings_view_mobile.gn-settings_loading{text-align:center}.gn-settings_view_mobile .gn-settings__loader{margin-top:20px}.gn-settings_view_mobile .gn-settings__search{margin:4px 0 16px;padding:0 20px}.gn-settings_view_mobile .gn-settings__page{overflow-y:visible}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:first-child{margin-left:20px}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:last-child{margin-right:20px}.gn-settings_view_mobile .gn-settings__section-heading{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.gn-settings_view_mobile .gn-settings__section-subheader{color:var(--g-color-text-secondary)}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings-subheader{margin-top:8px}.gn-settings_view_mobile .gn-settings__section-item{margin-top:0}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings__section-item,.gn-settings_view_mobile .gn-settings__section-subheader+.gn-settings__section-item{margin-top:30px}.gn-settings_view_mobile .gn-settings__section-item+.gn-settings__section-item{margin-top:22px}.gn-settings_view_mobile .gn-settings__item:not(.gn-settings_view_mobile .gn-settings__item_mode_row){gap:8px;grid-template-columns:1fr}.gn-settings_view_mobile .gn-settings__item-heading{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.gn-settings_view_mobile .gn-settings__item-description{font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.gn-settings_view_mobile .gn-settings__item_mode_row{grid-template-columns:1fr auto}.gn-settings_view_mobile .gn-settings__item_mode_row .gn-settings__item-heading{padding-right:20px}.gn-settings_view_mobile .gn-settings__item-content{width:100%}.gn-settings_view_mobile .gn-settings__not-found{color:var(--g-color-text-hint);font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);justify-items:start;line-height:var(--g-text-body-2-line-height);margin:20px 0 0 20px}.gn-settings_loading{grid-template-columns:auto}.gn-settings__loader{place-self:center}.gn-settings__not-found{display:grid;height:100%;place-items:center}.gn-settings__menu{border-right:1px solid var(--g-color-line-generic)}.gn-settings__heading{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:20px 20px 0}.gn-settings__search{margin:0 20px 16px}.gn-settings__page{overflow-y:auto}.gn-settings__content{padding:20px}.gn-settings__section-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__section-heading:hover .gn-settings__section-right-adornment_hidden{opacity:1}.gn-settings__section-heading{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:0}.gn-settings__section-item{margin-top:24px}.gn-settings__section+.gn-settings__section{margin-top:32px}.gn-settings__section_only-child:only-child .gn-settings__section-item:first-of-type{margin-top:0}.gn-settings__section_only-child:only-child .gn-settings__section-heading{display:none}.gn-settings__item{display:grid;grid-template-columns:216px 1fr;justify-items:start}.gn-settings__item_align_top{align-items:start}.gn-settings__item_align_center{align-items:center}.gn-settings__item-title_badge{position:relative}.gn-settings__item-title_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:\"\";display:block;height:6px;position:absolute;right:-8px;top:1px;width:6px}.gn-settings__item-description{color:var(--g-color-text-secondary);display:block;font-size:var(--g-text-caption-2-font-size);font-weight:var(--g-text-caption-font-weight);line-height:var(--g-text-caption-2-line-height);margin-top:2px;padding-right:20px}.gn-settings__item-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__item:hover .gn-settings__item-right-adornment_hidden{opacity:1}.gn-settings__item_selected,.gn-settings__section_selected{background:var(--g-color-base-selection);border-radius:8px;margin-left:-8px;padding:8px}.gn-settings__found{background:var(--g-color-base-selection);font-weight:var(--g-text-accent-font-weight)}";
403
403
  styleInject_es.styleInject(css_248z);
404
404
 
405
405
  const b = cn.block('settings');
@@ -485,7 +485,7 @@ function SettingsContent({ initialPage, initialSearch, selection, children, rend
485
485
  };
486
486
  const renderSection = (page, section) => {
487
487
  const isSelected = isSectionSelected(selected, page, section);
488
- return (React__default["default"].createElement("div", { key: section.title, className: b('section', { selected: isSelected }), ref: isSelected ? selected.selectedRef : undefined },
488
+ return (React__default["default"].createElement("div", { key: section.title, className: b('section', { selected: isSelected, 'only-child': section.onlyChild }), ref: isSelected ? selected.selectedRef : undefined },
489
489
  section.showTitle && (React__default["default"].createElement("h3", { className: b('section-heading') }, renderSectionRightAdornment ? (React__default["default"].createElement(uikit.Flex, { gap: 2, alignItems: 'center' },
490
490
  section.title,
491
491
  React__default["default"].createElement("div", { className: b('section-right-adornment', {
@@ -576,4 +576,4 @@ function prepareTitle(string, search) {
576
576
  exports.Settings = Settings;
577
577
  exports.useSettingsContext = useSettingsContext;
578
578
  exports.useSettingsSelectionContext = useSettingsSelectionContext;
579
- //# sourceMappingURL=Settings-5d2bec1d.js.map
579
+ //# sourceMappingURL=Settings-8dc2a8ee.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Settings-8dc2a8ee.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","identity"],"mappings":"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"}
@@ -74,9 +74,9 @@ const TopPanel = ({ topAlert }) => {
74
74
  React__default["default"].createElement(uikit.Alert, { className: utils.b('pane-top-alert', {
75
75
  centered: topAlert.centered,
76
76
  dense: topAlert.dense,
77
- }), corners: "square", layout: "horizontal", theme: topAlert.theme || 'warning', icon: topAlert.icon, title: topAlert.title, message: topAlert.message, actions: topAlert.actions, onClose: topAlert.closable ? handleClose : undefined }),
77
+ }), corners: "square", layout: "horizontal", theme: topAlert.theme || 'warning', view: topAlert.view, icon: topAlert.icon, title: topAlert.title, message: topAlert.message, actions: topAlert.actions, onClose: topAlert.closable ? handleClose : undefined }),
78
78
  React__default["default"].createElement("div", { className: utils.b('pane-top-divider') })))));
79
79
  };
80
80
 
81
81
  exports.TopPanel = TopPanel;
82
- //# sourceMappingURL=TopPanel-1b062791.js.map
82
+ //# sourceMappingURL=TopPanel-33f1e6c1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopPanel-33f1e6c1.js","sources":["../../../src/components/AsideHeader/useAsideHeaderTopPanel.tsx","../../../src/components/AsideHeader/components/TopPanel.tsx"],"sourcesContent":["import React from 'react';\n\nimport debounceFn from 'lodash/debounce';\n\nimport {AsideHeaderTopAlertProps} from '../types';\n\ntype AsideHeaderTopPanel = {\n topRef: React.RefObject<HTMLDivElement>;\n updateTopSize: () => void;\n};\n\nconst G_ROOT_CLASS_NAME = 'g-root';\n\nconst useRefHeight = (ref: React.RefObject<HTMLDivElement>) => {\n const [topHeight, setTopHeight] = React.useState(0);\n React.useEffect(() => {\n if (ref.current) {\n const {current} = ref;\n setTopHeight(current.clientHeight);\n }\n }, [ref]);\n return topHeight;\n};\n\nexport const useAsideHeaderTopPanel = ({\n topAlert,\n}: {\n topAlert?: AsideHeaderTopAlertProps;\n}): AsideHeaderTopPanel => {\n const topRef = React.useRef<HTMLDivElement>(null);\n const topHeight = useRefHeight(topRef);\n\n const setAsideTopPanelHeight = React.useCallback((clientHeight: number) => {\n const gRootElement = document\n .getElementsByClassName(G_ROOT_CLASS_NAME)\n .item(0) as HTMLElement | null;\n gRootElement?.style.setProperty('--gn-aside-top-panel-height', clientHeight + 'px');\n }, []);\n\n const updateTopSize = React.useCallback(() => {\n if (topRef.current) {\n setAsideTopPanelHeight(topRef.current?.clientHeight || 0);\n }\n }, [topRef, setAsideTopPanelHeight]);\n\n React.useLayoutEffect(() => {\n const updateTopSizeDebounce = debounceFn(updateTopSize, 200, {leading: true});\n\n if (topAlert) {\n window.addEventListener('resize', updateTopSizeDebounce);\n updateTopSizeDebounce();\n }\n return () => {\n window.removeEventListener('resize', updateTopSizeDebounce);\n setAsideTopPanelHeight(0);\n };\n }, [topAlert, topHeight, topRef, updateTopSize, setAsideTopPanelHeight]);\n\n return {\n topRef,\n updateTopSize,\n };\n};\n","import React from 'react';\n\nimport {Alert} from '@gravity-ui/uikit';\n\nimport {AsideHeaderTopAlertProps} from '../../types';\nimport {useAsideHeaderTopPanel} from '../useAsideHeaderTopPanel';\nimport {b} from '../utils';\n\ntype Props = {\n topAlert?: AsideHeaderTopAlertProps;\n};\n\nexport const TopPanel = ({topAlert}: Props) => {\n const {topRef, updateTopSize} = useAsideHeaderTopPanel({topAlert});\n\n const [opened, setOpened] = React.useState(true);\n\n const handleClose = React.useCallback(() => {\n setOpened(false);\n topAlert?.onCloseTopAlert?.();\n }, [topAlert]);\n\n React.useEffect(() => {\n if (!opened) {\n updateTopSize();\n }\n }, [opened, updateTopSize]);\n\n if (!topAlert || !topAlert.message) {\n return null;\n }\n\n return (\n <div ref={topRef} className={b('pane-top', {opened})}>\n {opened && (\n <React.Fragment>\n <Alert\n className={b('pane-top-alert', {\n centered: topAlert.centered,\n dense: topAlert.dense,\n })}\n corners=\"square\"\n layout=\"horizontal\"\n theme={topAlert.theme || 'warning'}\n view={topAlert.view}\n icon={topAlert.icon}\n title={topAlert.title}\n message={topAlert.message}\n actions={topAlert.actions}\n onClose={topAlert.closable ? handleClose : undefined}\n />\n <div className={b('pane-top-divider')}></div>\n </React.Fragment>\n )}\n </div>\n );\n};\n"],"names":["React","debounceFn","b","Alert"],"mappings":";;;;;;;;;;;;;AAWA,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEnC,MAAM,YAAY,GAAG,CAAC,GAAoC,KAAI;AAC1D,IAAA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAGA,yBAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpD,IAAAA,yBAAK,CAAC,SAAS,CAAC,MAAK;QACjB,IAAI,GAAG,CAAC,OAAO,EAAE;AACb,YAAA,MAAM,EAAC,OAAO,EAAC,GAAG,GAAG,CAAC;AACtB,YAAA,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACtC,SAAA;AACL,KAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACV,IAAA,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEK,MAAM,sBAAsB,GAAG,CAAC,EACnC,QAAQ,GAGX,KAAyB;IACtB,MAAM,MAAM,GAAGA,yBAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;AAClD,IAAA,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAEvC,MAAM,sBAAsB,GAAGA,yBAAK,CAAC,WAAW,CAAC,CAAC,YAAoB,KAAI;QACtE,MAAM,YAAY,GAAG,QAAQ;aACxB,sBAAsB,CAAC,iBAAiB,CAAC;aACzC,IAAI,CAAC,CAAC,CAAuB,CAAC;AACnC,QAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAY,CAAE,KAAK,CAAC,WAAW,CAAC,6BAA6B,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;KACvF,EAAE,EAAE,CAAC,CAAC;AAEP,IAAA,MAAM,aAAa,GAAGA,yBAAK,CAAC,WAAW,CAAC,MAAK;;QACzC,IAAI,MAAM,CAAC,OAAO,EAAE;YAChB,sBAAsB,CAAC,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,KAAI,CAAC,CAAC,CAAC;AAC7D,SAAA;AACL,KAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;AAErC,IAAAA,yBAAK,CAAC,eAAe,CAAC,MAAK;AACvB,QAAA,MAAM,qBAAqB,GAAGC,mBAAU,CAAC,aAAa,EAAE,GAAG,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;AAE9E,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;AACzD,YAAA,qBAAqB,EAAE,CAAC;AAC3B,SAAA;AACD,QAAA,OAAO,MAAK;AACR,YAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;YAC5D,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAC9B,SAAC,CAAC;AACN,KAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAEzE,OAAO;QACH,MAAM;QACN,aAAa;KAChB,CAAC;AACN,CAAC;;MClDY,QAAQ,GAAG,CAAC,EAAC,QAAQ,EAAQ,KAAI;AAC1C,IAAA,MAAM,EAAC,MAAM,EAAE,aAAa,EAAC,GAAG,sBAAsB,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC;AAEnE,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGD,yBAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAEjD,IAAA,MAAM,WAAW,GAAGA,yBAAK,CAAC,WAAW,CAAC,MAAK;;QACvC,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,CAAA,EAAA,GAAA,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,eAAe,wDAAI,CAAC;AAClC,KAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEf,IAAAA,yBAAK,CAAC,SAAS,CAAC,MAAK;QACjB,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,aAAa,EAAE,CAAC;AACnB,SAAA;AACL,KAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;AAE5B,IAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAChC,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;IAED,QACIA,iDAAK,GAAG,EAAE,MAAM,EAAE,SAAS,EAAEE,OAAC,CAAC,UAAU,EAAE,EAAC,MAAM,EAAC,CAAC,EAC/C,EAAA,MAAM,KACHF,yBAAA,CAAA,aAAA,CAACA,yBAAK,CAAC,QAAQ,EAAA,IAAA;AACX,QAAAA,yBAAA,CAAA,aAAA,CAACG,WAAK,EACF,EAAA,SAAS,EAAED,OAAC,CAAC,gBAAgB,EAAE;gBAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK;AACxB,aAAA,CAAC,EACF,OAAO,EAAC,QAAQ,EAChB,MAAM,EAAC,YAAY,EACnB,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,SAAS,EAClC,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,OAAO,EAAE,QAAQ,CAAC,OAAO,EACzB,OAAO,EAAE,QAAQ,CAAC,OAAO,EACzB,OAAO,EAAE,QAAQ,CAAC,QAAQ,GAAG,WAAW,GAAG,SAAS,EACtD,CAAA;QACFF,yBAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAEE,OAAC,CAAC,kBAAkB,CAAC,EAAA,CAAQ,CAChC,CACpB,CACC,EACR;AACN;;;;"}
@@ -39,6 +39,7 @@ export interface SettingsSectionProps {
39
39
  children: React.ReactNode;
40
40
  withBadge?: boolean;
41
41
  showTitle?: boolean;
42
+ onlyChild?: boolean;
42
43
  }
43
44
  export interface SettingsItemProps {
44
45
  id?: string;
@@ -27,6 +27,7 @@ export interface SettingsPageSection {
27
27
  hidden?: boolean;
28
28
  withBadge?: boolean;
29
29
  showTitle?: boolean;
30
+ onlyChild?: boolean;
30
31
  }
31
32
  export interface SettingsItem {
32
33
  id?: string;
@@ -20,7 +20,7 @@ var icons = require('@gravity-ui/icons');
20
20
  var ActionBar = require('./ActionBar-3c6cdf57.js');
21
21
  var Title = require('./Title-54580605.js');
22
22
  var HotkeysPanel = require('./HotkeysPanel-1f851c12.js');
23
- var Settings = require('./Settings-5d2bec1d.js');
23
+ var Settings = require('./Settings-8dc2a8ee.js');
24
24
  require('./Item-7c1b54f5.js');
25
25
  require('./constants-d81c3867.js');
26
26
  require('./Content-64d5738a.js');
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Settings = require('./Settings-5d2bec1d.js');
5
+ var Settings = require('./Settings-8dc2a8ee.js');
6
6
  require('./tslib.es6-705c6589.js');
7
7
  require('react');
8
8
  require('@gravity-ui/uikit');
@@ -10,7 +10,7 @@ import '@bem-react/classname';
10
10
  var css_248z = ".g-root{--gn-aside-top-panel-height:0px}.gn-aside-header{--gn-aside-header-min-width:56px;--_--item-icon-background-size:38px;--_--background-color:var(--g-color-base-background);--_--decoration-collapsed-background-color:var(--g-color-base-warning-light);--_--decoration-expanded-background-color:var(--g-color-base-warning-light);--_--vertical-divider-line-color:var(--g-color-line-generic);--_--horizontal-divider-line-color:var(--g-color-line-generic);background-color:var(--g-color-base-background);height:100%;position:relative;width:100%}.gn-aside-header__aside{background-color:var(--gn-aside-header-expanded-background-color,var(--gn-aside-header-background-color,var(--_--background-color)));box-sizing:border-box;display:flex;flex-direction:column;height:100vh;left:0;margin-top:var(--gn-aside-top-panel-height);max-height:calc(100vh - var(--gn-aside-top-panel-height));position:sticky;top:var(--gn-aside-top-panel-height);width:inherit;z-index:var(--gn-aside-header-z-index,100)}.gn-aside-header__aside:after{background-color:var(--gn-aside-header-divider-vertical-color,var(--_--vertical-divider-line-color));content:\"\";height:100%;position:absolute;right:0;top:0;width:1px;z-index:2}.gn-aside-header__aside-popup-anchor{inset:0;position:absolute;z-index:1}.gn-aside-header__aside-content{--gradient-height:334px;display:flex;flex-direction:column;height:inherit;overflow-x:hidden;padding-top:var(--gn-aside-header-padding-top);position:relative;user-select:none;width:inherit;z-index:2}.gn-aside-header__aside-content>.gn-aside-header-logo{margin:8px 0}.gn-aside-header__aside-content_with-decoration{background:linear-gradient(180deg,var(--gn-aside-header-decoration-expanded-background-color,var(--_--decoration-expanded-background-color)) calc(var(--gradient-height)*.33),transparent calc(var(--gradient-height)*.88))}.gn-aside-header__aside-custom-background{bottom:0;display:flex;position:absolute;top:0;z-index:-1}.gn-aside-header_compact .gn-aside-header__aside{background-color:var(--gn-aside-header-collapsed-background-color,var(--gn-aside-header-background-color,var(--_--background-color)))}.gn-aside-header_compact .gn-aside-header__aside-content{background:transparent}.gn-aside-header__header{--gn-aside-header-header-divider-height:29px;box-sizing:border-box;flex:none;padding-bottom:22px;padding-top:8px;position:relative;width:100%;z-index:1}.gn-aside-header__header .gn-aside-header__header-divider{bottom:0;color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));display:none;left:0;position:absolute;z-index:-2}.gn-aside-header__header_with-decoration:before{background-color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));content:\"\";display:none;height:calc(100% - var(--gn-aside-header-header-divider-height));left:0;position:absolute;top:0;width:100%;z-index:-2}.gn-aside-header__header:after{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:12px;content:\"\";height:1px;left:0;position:absolute;width:100%;z-index:-2}.gn-aside-header_compact .gn-aside-header__header:before,.gn-aside-header_compact .gn-aside-header__header_with-decoration .gn-aside-header__header-divider{display:block}.gn-aside-header_compact .gn-aside-header__header_with-decoration:after{display:none}.gn-aside-header__logo-button-wrapper{width:var(--gn-aside-header-min-width)}.gn-aside-header__logo-button[class],.gn-aside-header__logo-button[class] .g-button__icon{height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size))}.gn-aside-header__menu-items{flex-grow:1}.gn-aside-header__footer{display:flex;flex-direction:column;flex-shrink:0;margin:8px 0;width:100%}.gn-aside-header__panels{inset:var(--gn-aside-top-panel-height) 0 0;max-height:calc(100vh - var(--gn-aside-top-panel-height));overflow:auto;position:fixed;z-index:var(--gn-aside-header-panel-z-index,98)}.gn-aside-header__panel{height:100%}.gn-aside-header__pane-container{display:flex;flex-direction:row;outline:none;overflow:visible;user-select:text}.gn-aside-header__pane-top-divider{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));height:1px;margin-top:-1px}.gn-aside-header__pane-top{background:var(--g-color-base-background);position:fixed;top:0;width:100%;z-index:var(--gn-aside-header-pane-top-z-index,98)}.gn-aside-header__pane-top-alert_centered{display:flex;justify-content:space-around}.gn-aside-header__pane-top-alert_dense{padding-bottom:var(--g-spacing-2);padding-top:var(--g-spacing-2)}.gn-aside-header__content{margin-top:var(--gn-aside-top-panel-height);width:calc(100% - var(--gn-aside-header-size));z-index:var(--gn-aside-header-content-z-index,95)}";
11
11
  styleInject(css_248z);
12
12
 
13
- const TopPanel = React__default.lazy(() => import('./TopPanel-2760cf72.js').then((module) => ({ default: module.TopPanel })));
13
+ const TopPanel = React__default.lazy(() => import('./TopPanel-627d614f.js').then((module) => ({ default: module.TopPanel })));
14
14
  const Layout = ({ compact, className, children, topAlert }) => {
15
15
  const size = compact ? ASIDE_HEADER_COMPACT_WIDTH : ASIDE_HEADER_EXPANDED_WIDTH;
16
16
  const asideHeaderContextValue = useMemo(() => ({ size, compact }), [compact, size]);
@@ -375,7 +375,7 @@ function SettingsSearch({ className, initialValue, onChange, debounce = 200, inp
375
375
  } })));
376
376
  }
377
377
 
378
- var css_248z = ".gn-settings{display:grid;grid-template-columns:216px 1fr;height:100%;width:834px}.gn-settings_view_mobile{display:block;height:calc(80vh - 56px);overflow-x:hidden;width:auto}@supports (height:90dvh){.gn-settings_view_mobile{height:calc(90dvh - 56px)}}.gn-settings_view_mobile.gn-settings_loading{text-align:center}.gn-settings_view_mobile .gn-settings__loader{margin-top:20px}.gn-settings_view_mobile .gn-settings__search{margin:4px 0 16px;padding:0 20px}.gn-settings_view_mobile .gn-settings__page{overflow-y:visible}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:first-child{margin-left:20px}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:last-child{margin-right:20px}.gn-settings_view_mobile .gn-settings__section-heading{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.gn-settings_view_mobile .gn-settings__section-subheader{color:var(--g-color-text-secondary)}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings-subheader{margin-top:8px}.gn-settings_view_mobile .gn-settings__section-item{margin-top:0}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings__section-item,.gn-settings_view_mobile .gn-settings__section-subheader+.gn-settings__section-item{margin-top:30px}.gn-settings_view_mobile .gn-settings__section-item+.gn-settings__section-item{margin-top:22px}.gn-settings_view_mobile .gn-settings__item:not(.gn-settings_view_mobile .gn-settings__item_mode_row){gap:8px;grid-template-columns:1fr}.gn-settings_view_mobile .gn-settings__item-heading{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.gn-settings_view_mobile .gn-settings__item-description{font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.gn-settings_view_mobile .gn-settings__item_mode_row{grid-template-columns:1fr auto}.gn-settings_view_mobile .gn-settings__item_mode_row .gn-settings__item-heading{padding-right:20px}.gn-settings_view_mobile .gn-settings__item-content{width:100%}.gn-settings_view_mobile .gn-settings__not-found{color:var(--g-color-text-hint);font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);justify-items:start;line-height:var(--g-text-body-2-line-height);margin:20px 0 0 20px}.gn-settings_loading{grid-template-columns:auto}.gn-settings__loader{place-self:center}.gn-settings__not-found{display:grid;height:100%;place-items:center}.gn-settings__menu{border-right:1px solid var(--g-color-line-generic)}.gn-settings__heading{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:20px 20px 0}.gn-settings__search{margin:0 20px 16px}.gn-settings__page{overflow-y:auto}.gn-settings__content{padding:20px}.gn-settings__section-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__section-heading:hover .gn-settings__section-right-adornment_hidden{opacity:1}.gn-settings__section-heading{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:0}.gn-settings__section-item{margin-top:24px}.gn-settings__section+.gn-settings__section{margin-top:32px}.gn-settings__item{display:grid;grid-template-columns:216px 1fr;justify-items:start}.gn-settings__item_align_top{align-items:start}.gn-settings__item_align_center{align-items:center}.gn-settings__item-title_badge{position:relative}.gn-settings__item-title_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:\"\";display:block;height:6px;position:absolute;right:-8px;top:1px;width:6px}.gn-settings__item-description{color:var(--g-color-text-secondary);display:block;font-size:var(--g-text-caption-2-font-size);font-weight:var(--g-text-caption-font-weight);line-height:var(--g-text-caption-2-line-height);margin-top:2px;padding-right:20px}.gn-settings__item-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__item:hover .gn-settings__item-right-adornment_hidden{opacity:1}.gn-settings__item_selected,.gn-settings__section_selected{background:var(--g-color-base-selection);border-radius:8px;margin-left:-8px;padding:8px}.gn-settings__found{background:var(--g-color-base-selection);font-weight:var(--g-text-accent-font-weight)}";
378
+ var css_248z = ".gn-settings{display:grid;grid-template-columns:216px 1fr;height:100%;width:834px}.gn-settings_view_mobile{display:block;height:calc(80vh - 56px);overflow-x:hidden;width:auto}@supports (height:90dvh){.gn-settings_view_mobile{height:calc(90dvh - 56px)}}.gn-settings_view_mobile.gn-settings_loading{text-align:center}.gn-settings_view_mobile .gn-settings__loader{margin-top:20px}.gn-settings_view_mobile .gn-settings__search{margin:4px 0 16px;padding:0 20px}.gn-settings_view_mobile .gn-settings__page{overflow-y:visible}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:first-child{margin-left:20px}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:last-child{margin-right:20px}.gn-settings_view_mobile .gn-settings__section-heading{font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.gn-settings_view_mobile .gn-settings__section-subheader{color:var(--g-color-text-secondary)}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings-subheader{margin-top:8px}.gn-settings_view_mobile .gn-settings__section-item{margin-top:0}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings__section-item,.gn-settings_view_mobile .gn-settings__section-subheader+.gn-settings__section-item{margin-top:30px}.gn-settings_view_mobile .gn-settings__section-item+.gn-settings__section-item{margin-top:22px}.gn-settings_view_mobile .gn-settings__item:not(.gn-settings_view_mobile .gn-settings__item_mode_row){gap:8px;grid-template-columns:1fr}.gn-settings_view_mobile .gn-settings__item-heading{font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.gn-settings_view_mobile .gn-settings__item-description{font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.gn-settings_view_mobile .gn-settings__item_mode_row{grid-template-columns:1fr auto}.gn-settings_view_mobile .gn-settings__item_mode_row .gn-settings__item-heading{padding-right:20px}.gn-settings_view_mobile .gn-settings__item-content{width:100%}.gn-settings_view_mobile .gn-settings__not-found{color:var(--g-color-text-hint);font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);justify-items:start;line-height:var(--g-text-body-2-line-height);margin:20px 0 0 20px}.gn-settings_loading{grid-template-columns:auto}.gn-settings__loader{place-self:center}.gn-settings__not-found{display:grid;height:100%;place-items:center}.gn-settings__menu{border-right:1px solid var(--g-color-line-generic)}.gn-settings__heading{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:20px 20px 0}.gn-settings__search{margin:0 20px 16px}.gn-settings__page{overflow-y:auto}.gn-settings__content{padding:20px}.gn-settings__section-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__section-heading:hover .gn-settings__section-right-adornment_hidden{opacity:1}.gn-settings__section-heading{font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:0}.gn-settings__section-item{margin-top:24px}.gn-settings__section+.gn-settings__section{margin-top:32px}.gn-settings__section_only-child:only-child .gn-settings__section-item:first-of-type{margin-top:0}.gn-settings__section_only-child:only-child .gn-settings__section-heading{display:none}.gn-settings__item{display:grid;grid-template-columns:216px 1fr;justify-items:start}.gn-settings__item_align_top{align-items:start}.gn-settings__item_align_center{align-items:center}.gn-settings__item-title_badge{position:relative}.gn-settings__item-title_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:\"\";display:block;height:6px;position:absolute;right:-8px;top:1px;width:6px}.gn-settings__item-description{color:var(--g-color-text-secondary);display:block;font-size:var(--g-text-caption-2-font-size);font-weight:var(--g-text-caption-font-weight);line-height:var(--g-text-caption-2-line-height);margin-top:2px;padding-right:20px}.gn-settings__item-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__item:hover .gn-settings__item-right-adornment_hidden{opacity:1}.gn-settings__item_selected,.gn-settings__section_selected{background:var(--g-color-base-selection);border-radius:8px;margin-left:-8px;padding:8px}.gn-settings__found{background:var(--g-color-base-selection);font-weight:var(--g-text-accent-font-weight)}";
379
379
  styleInject(css_248z);
380
380
 
381
381
  const b = block('settings');
@@ -461,7 +461,7 @@ function SettingsContent({ initialPage, initialSearch, selection, children, rend
461
461
  };
462
462
  const renderSection = (page, section) => {
463
463
  const isSelected = isSectionSelected(selected, page, section);
464
- return (React__default.createElement("div", { key: section.title, className: b('section', { selected: isSelected }), ref: isSelected ? selected.selectedRef : undefined },
464
+ return (React__default.createElement("div", { key: section.title, className: b('section', { selected: isSelected, 'only-child': section.onlyChild }), ref: isSelected ? selected.selectedRef : undefined },
465
465
  section.showTitle && (React__default.createElement("h3", { className: b('section-heading') }, renderSectionRightAdornment ? (React__default.createElement(Flex, { gap: 2, alignItems: 'center' },
466
466
  section.title,
467
467
  React__default.createElement("div", { className: b('section-right-adornment', {
@@ -550,4 +550,4 @@ function prepareTitle(string, search) {
550
550
  }
551
551
 
552
552
  export { Settings as S, useSettingsContext as a, useSettingsSelectionContext as u };
553
- //# sourceMappingURL=Settings-06d306b1.js.map
553
+ //# sourceMappingURL=Settings-e660a4c5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Settings-e660a4c5.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","debounceFn","identity"],"mappings":";;;;;;;;;;AAIM,SAAU,iBAAiB,CAC7B,IAAO,EAAA;AAEP,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAK,CAAC;AAElC,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;AACjB,QAAA,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB,QAAA,OAAO,MAAK;AACR,YAAA,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;AAChC,SAAC,CAAC;AACN,KAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,IAAmB,KAAI;AAChD,QAAA,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE;AACvC,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnC,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AAEK,SAAU,UAAU,CAAI,KAAQ,EAAA;IAClC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChC,IAAA,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AACpB,IAAA,OAAO,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC;AAEe,SAAA,SAAS,CAAC,IAAa,EAAE,OAAe,EAAA;IACpD,IAAI,CAAC,IAAI,EAAE;AACP,QAAA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5B,KAAA;AACL,CAAC;AAEK,SAAU,qBAAqB,CAAC,KAAa,EAAA;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACxD;;SCqBgB,uBAAuB,CACnC,QAAyB,EACzB,UAAU,GAAG,EAAE,EAAA;;AAGf,IAAA,MAAM,cAAc,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAEjD,OAAO,gCAAgC,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,gCAAgC,CACrC,QAAyB,EACzB,QAAQ,GAAG,EAAE,EACb,QAAgB,EAAA;IAEhB,MAAM,IAAI,GAAiB,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAiC,EAAE,CAAC;IAC/C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrBA,cAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,KAAI;;AACzC,QAAA,IAAI,CAACA,cAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;;YAEhC,OAAO;AACV,SAAA;AACD,QAAA,IAAI,OAAO,CAAC,IAAI,KAAKA,cAAK,CAAC,QAAQ,EAAE;;YAEjC,MAAM,EAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAC,GAAG,gCAAgC,CAC/E,OAAO,CAAC,KAAK,CAAC,QAAQ,EACtB,QAAQ,EACR,QAAQ,CACX,CAAC;AACF,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;AAC3B,YAAA,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AACvC,SAAA;AAAM,aAAA,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE;AACjC,YAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;AACxC,gBAAA,SAAS,CAAC,CAAC,QAAQ,EAAE,yDAAyD,CAAC,CAAC;AACnF,aAAA;AAED,YAAA,MAAM,MAAM,GAAG,CAAA,EAAG,QAAQ,CAAI,CAAA,EAAA,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,CAAC,EAAE,mCAAI,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAC7E,QAAQ,GAAG,IAAI,CAAC;YAEhB,MAAM,EAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAC,GAAG,gCAAgC,CAC/E,OAAO,CAAC,KAAK,CAAC,QAAQ,EACtB,MAAM,EACN,QAAQ,CACX,CAAC;AAEF,YAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;AACxC,gBAAA,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,CAAC;AACxE,gBAAA,SAAS,CACL,CAAC,aAAa,EACd,CAAS,MAAA,EAAA,OAAO,CAAC,KAAK,CAAC,UAAU,CAA4B,0BAAA,CAAA,CAChE,CAAC;AACL,aAAA;YAED,IAAI,CAAC,IAAI,CAAC;AACN,gBAAA,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;;AAEpC,gBAAA,KAAK,EAAE,YAAY;AACtB,aAAA,CAAC,CAAC;AACH,YAAA,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AACvC,SAAA;AAAM,aAAA;YACH,QAAQ,GAAG,IAAI,CAAC;AAChB,YAAA,MAAM,MAAM,GAAG,CAAA,EAAG,QAAQ,CAAI,CAAA,EAAA,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,CAAC,EAAE,mCAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AAExE,YAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;AACxC,gBAAA,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,mCAAmC,CAAC,CAAC;AAC7E,gBAAA,SAAS,CAAC,CAAC,QAAQ,EAAE,yDAAyD,CAAC,CAAC;gBAChF,SAAS,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAsC,mCAAA,EAAA,MAAM,CAAG,CAAA,CAAA,CAAC,CAAC;AAC9E,aAAA;AAED,YAAA,KAAK,CAAC,MAAM,CAAC,GAAG,2BAA2B,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC9E,YAAA,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC;AACN,gBAAA,EAAE,EAAE,MAAM;AACV,gBAAA,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;AAC1B,gBAAA,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI;AACxB,gBAAA,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS;AAClC,gBAAA,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM;AACjC,aAAA,CAAC,CAAC;AACN,SAAA;AACL,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC;AACzB,CAAC;AAED,SAAS,2BAA2B,CAAC,QAAyB,EAAE,QAAgB,EAAA;AAC5E,IAAA,MAAM,IAAI,GAAiB,EAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;IAChEA,cAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,KAAI;AACzC,QAAA,IAAI,CAACA,cAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;;YAEhC,OAAO;AACV,SAAA;AACD,QAAA,IAAI,OAAO,CAAC,IAAI,KAAKA,cAAK,CAAC,QAAQ,EAAE;;AAEjC,YAAA,MAAM,EAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAC,GAAG,2BAA2B,CAC7D,OAAO,CAAC,KAAK,CAAC,QAAQ,EACtB,QAAQ,CACX,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;YAC7C,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;AACvC,SAAA;AAAM,aAAA;YACH,MAAM,EAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAC,GAAG,OAAO,CAAC,KAAK,CAAC;AACpD,YAAA,MAAM,EAAC,KAAK,EAAE,MAAM,EAAC,GAAG,4BAA4B,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACvF,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;YAC7C,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;YACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,iCACX,OAAO,CAAC,KAAK,CAAA,EAAA,EAChB,SAAS;gBACT,KAAK;gBACL,MAAM;AACN,gBAAA,SAAS,IACX,CAAC;AACN,SAAA;AACL,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,4BAA4B,CAAC,QAAyB,EAAE,QAAgB,EAAA;IAC7E,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjCA,cAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,KAAI;AACzC,QAAA,IAAI,CAACA,cAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;;YAEhC,OAAO;AACV,SAAA;AACD,QAAA,IAAI,OAAO,CAAC,IAAI,KAAKA,cAAK,CAAC,QAAQ,EAAE;;AAEjC,YAAA,MAAM,aAAa,GAAG,4BAA4B,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACrF,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AACnC,YAAA,MAAM,GAAG,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC;AAC3C,SAAA;AAAM,aAAA;YACH,MAAM,IAAI,mCACH,OAAO,CAAC,KAAK,CAChB,EAAA,EAAA,OAAO,EACP,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAA,CAC9C,CAAC;AACF,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,YAAA,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;AAClC,SAAA;AACL,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC;AAC3B,CAAC;AAEe,SAAA,uBAAuB,CACnC,KAAmC,EACnC,SAA4B,EAAA;AAE5B,IAAA,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AAC/D,QAAA,OAAO,EAAE,CAAC;AACb,KAAA;IAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACrC,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAC5C,YAAA,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;gBAAE,SAAS;YAEzC,OAAO,EAAC,IAAI,EAAC,CAAC;AACjB,SAAA;AAED,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC,IAAI,SAAS,CAAC,SAAS,EAAE;AACrB,gBAAA,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE;AACjC,oBAAA,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,SAAS,EAAE;AACpC,wBAAA,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAC,CAAC;AACnC,qBAAA;AACJ,iBAAA;AACJ,aAAA;iBAAM,IACH,SAAS,CAAC,OAAO;AACjB,iBAAC,IAAI,IAAI,SAAS,CAAC,OAAO;sBACpB,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE;sBACnC,SAAS,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,EAClD;AACE,gBAAA,OAAO,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;AAC1B,aAAA;AACJ,SAAA;AACJ,KAAA;AAED,IAAA,OAAO,EAAE,CAAC;AACd;;ACpOA,MAAM,YAAY,GAAiB,EAAE,CAAC;AAEtC,MAAM,OAAO,GAAGA,cAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AAClD,OAAO,CAAC,WAAW,GAAG,0BAA0B,CAAC;AAEjC,SAAA,iCAAiC,CAC7C,KAAmC,EACnC,SAAwC,EAAA;IAExC,MAAM,WAAW,GAAGA,cAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;AAEvD,IAAA,MAAM,YAAY,GAAiBA,cAAK,CAAC,OAAO,CAAC,MAAK;AAClD,QAAA,IAAI,CAAC,SAAS;YAAE,OAAO,EAAC,WAAW,EAAC,CAAC;QAErC,OAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,WAAW,IAAK,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAE,CAAA;AACvE,KAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AAEvB,IAAA,OAAO,YAAY,CAAC;AACxB,CAAC;AAEM,MAAM,gCAAgC,GAAG,OAAO,CAAC,QAAQ,CAAC;SAEjD,2BAA2B,GAAA;AACvC,IAAA,OAAOA,cAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACrC;;;;;;;;;;;;;;;;;;;AClBA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,OAAO,KAAK,CAAC;AACf,CAAC;AACD;AACA,IAAA,UAAc,GAAG,QAAQ;;SClBT,iBAAiB,CAC7B,QAA8B,EAC9B,MAAc,EACd,OAA4B,EAAA;;IAE5B,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE;AACvC,QAAA,OAAO,KAAK,CAAC;AAChB,KAAA;AAAM,SAAA,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,EAAE;AAClE,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;SAAM,IACH,CAAA,MAAA,QAAQ,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,MAAK,MAAM;QAC5B,QAAQ,CAAC,OAAO,CAAC,KAAK;QACtB,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAC1C;AACE,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,KAAK,CAAC;AAChB,KAAA;AACL;;;;;ACVA,MAAMC,GAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;AAO1B,MAAM,YAAY,GAAGD,cAAK,CAAC,UAAU;AACxC;AACA,SAAS,YAAY,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAC,EAAE,GAAG,EAAA;IACtD,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,GAAGA,cAAK,CAAC,QAAQ,EAAU,CAAC;IAC3D,MAAM,YAAY,GAAGA,cAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;AACxD,IAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACjD,IAAA,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAE3CA,cAAK,CAAC,mBAAmB,CACrB,GAAG,EACH,OAAO;AACH,QAAA,aAAa,CAAC,KAAK,EAAA;AACf,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AACvB,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACD,YAAA,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;AAC7B,YAAA,IAAI,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;gBAClC,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AAClC,gBAAA,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;AAChC,gBAAA,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;SAChB;QACD,UAAU,GAAA;YACN,UAAU,CAAC,SAAS,CAAC,CAAC;SACzB;AACJ,KAAA,CAAC,EACF,CAAC,UAAU,EAAE,YAAY,CAAC,CAC7B,CAAC;AAEF,IAAA,QACIA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,YAAY,EAAE,SAAS,EAAEC,GAAC,EAAE,EAAA,EACjC,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,KAAI;QAC1B,IAAI,YAAY,IAAI,cAAc,EAAE;AAChC,YAAA,QACID,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,cAAc,CAAC,UAAU,EAAE,SAAS,EAAEC,GAAC,CAAC,OAAO,CAAC,EAAA;gBACtDD,cAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEC,GAAC,CAAC,eAAe,CAAC,EAC9B,EAAA,cAAc,CAAC,UAAU,CACvB;gBACN,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;oBAC/B,OAAO,cAAc,CACjB,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,WAAW,CACd,CAAC;iBACL,CAAC,CACA,EACR;AACL,SAAA;QACD,OAAO,cAAc,CAAC,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;KAC9E,CAAC,CACA,EACR;AACN,CAAC,CACJ,CAAC;AAEF,SAAS,cAAc,CACnB,IAAU,EACV,QAA8B,EAC9B,YAAgC,EAChC,WAA+B,EAAA;AAE/B,IAAA,QACID,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,GAAG,EAAE,IAAI,CAAC,KAAK,EACf,SAAS,EAAEC,GAAC,CAAC,MAAM,EAAE;AACjB,YAAA,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC,EAAE;YAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC,EAAE;YAChC,KAAK,EAAE,IAAI,CAAC,SAAS;AACxB,SAAA,CAAC,EACF,OAAO,EAAE,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrB,aAAA;SACJ,EAAA,SAAA,EACQ,IAAI,CAAC,EAAE,EAAA;QAEf,IAAI,CAAC,IAAI,GAAGD,cAAC,CAAA,aAAA,CAAA,IAAI,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,IAAI,EAAE,EAAE,EAAM,EAAA,IAAI,CAAC,IAAI,EAAA,EAAE,SAAS,EAAEC,GAAC,CAAC,WAAW,CAAC,EAAI,CAAA,CAAA,GAAG,SAAS;AACrF,QAAAD,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAO,IAAI,CAAC,KAAK,CAAQ,CACtB,EACT;AACN,CAAC;AAED,SAAS,SAAS,CAAC,SAAsB,EAAE,OAA2B,EAAE,SAAiB,EAAA;;AACrF,IAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAIC,GAAC,CAAC,MAAM,CAAC,SAASA,GAAC,CAAC,MAAM,CAAC,CAAA,UAAA,CAAY,CAAC,CAAC;AACzF,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,QAAA,OAAO,SAAS,CAAC;AACpB,KAAA;AAED,IAAA,IAAI,YAAY,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1C,IAAA,IAAI,OAAO,EAAE;QACT,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CACzC,QAAQ,EACR,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,OAAO,CAC3D,CAAC;AACL,KAAA;AAED,IAAA,YAAY,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,YAAY,GAAG,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC;AAC9E,IAAA,OAAO,CAAA,EAAA,GAAA,QAAQ,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,SAAS,CAAC;AACvE;;;;;AClHA,MAAMA,GAAC,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAEjC,MAAM,kBAAkB,GAAG,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAS,GACO,KAAI;IACpB,MAAM,GAAG,GAAGD,cAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;AAE/C,IAAA,MAAM,QAAQ,GAAGA,cAAK,CAAC,OAAO,CAAC,MAAK;QAChC,MAAM,QAAQ,GAAoB,EAAE,CAAC;AAErC,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,cAAc,KAAI;YAC7B,IAAI,YAAY,IAAI,cAAc,EAAE;gBAChC,QAAQ,CAAC,IAAI,CACT,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAC,MAAM;oBAC/D,EAAE;oBACF,KAAK;oBACL,QAAQ;oBACR,SAAS,EAAEC,GAAC,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC;iBAC3C,CAAC,CAAC,CACN,CAAC;AACL,aAAA;AAAM,iBAAA;gBACH,MAAM,EAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAC,GAAG,cAAc,CAAC;gBACxD,QAAQ,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAEA,GAAC,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC;AAClF,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,QAAQ,CAAC;AACpB,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAEZ,IAAA,MAAM,eAAe,GAAG,CAAC,CAAmC,KAAI;QAC5D,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,KAAC,CAAC;IAEF,QACID,sCAAK,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,eAAe,EAAA;AACvC,QAAAA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EACD,KAAK,EAAE,QAAQ,EACf,SAAS,EAAEC,GAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAC7B,IAAI,EAAC,GAAG,EACR,SAAS,EAAE,YAAY,EACvB,WAAW,EAAE,QAAQ,EACvB,CAAA,CACA,EACR;AACN,CAAC;;;;;;;;;;;;;;;;;;;;AChDD,MAAM,SAAS,GAAG,UAAU,CAAC;AAC7B,WAAe,mBAAmB,CAAC,EAAC,EAAE,EAAE,EAAE,EAAC,EAAE,CAAA,EAAG,SAAS,CAAA,EAAG,SAAS,CAAA,CAAE,CAAC;;ACCxE,MAAMA,GAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAa7B,SAAU,cAAc,CAAC,EAC3B,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,QAAQ,GAAG,GAAG,EACd,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,GAAG,IAAI,GACE,EAAA;AAClB,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGD,cAAK,CAAC,QAAQ,CAAC,YAAY,aAAZ,YAAY,KAAA,KAAA,CAAA,GAAZ,YAAY,GAAI,EAAE,CAAC,CAAC;IAE7D,MAAM,iBAAiB,GAAG,iBAAiB,CAACE,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC5E,IAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,OAAe,KAAI;QACvD,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClB,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC/B,KAAC,CAAC,CAAC;IAEH,QACIF,sCAAK,SAAS,EAAEC,GAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAA;AAC9B,QAAAD,cAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EACN,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,QAAQ,EACpB,QAAQ,EAAA,IAAA,EACR,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE;AACV,gBAAA,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC;aACrC,EACH,CAAA,CACA,EACR;AACN;;;;;AC3BA,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;AA+D5B,MAAM,eAAe,GAAGA,cAAK,CAAC,aAAa,CAAsB,EAAE,CAAC,CAAC;AAE9D,MAAM,kBAAkB,GAAG,MAAMA,cAAK,CAAC,UAAU,CAAC,eAAe,EAAE;AAEpE,SAAU,QAAQ,CAAC,EAST,EAAA;QATS,EACrB,OAAO,EACP,aAAa,EACb,QAAQ,EACR,IAAI,GAAG,QAAQ,EACf,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,GAAG,IAAI,OAEpB,EADT,KAAK,GARa,MAAA,CAAA,EAAA,EAAA,CAAA,SAAA,EAAA,eAAA,EAAA,UAAA,EAAA,MAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,2BAAA,CASxB,CADW,CAAA;AAER,IAAA,IAAI,OAAO,EAAE;QACT,QACIA,sCAAK,SAAS,EAAE,CAAC,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,EACnC,EAAA,OAAO,aAAa,KAAK,UAAU,IAChC,aAAa,EAAE,KAEfA,cAAC,CAAA,aAAA,CAAA,MAAM,EAAC,EAAA,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAC,GAAG,EAAG,CAAA,CAC9C,CACC,EACR;AACL,KAAA;AAED,IAAA,QACIA,cAAA,CAAA,aAAA,CAAC,eAAe,CAAC,QAAQ,EACrB,EAAA,KAAK,EAAE,EAAC,oBAAoB,EAAE,2BAA2B,EAAE,yBAAyB,EAAC,EAAA;AAErF,QAAAA,cAAA,CAAA,aAAA,CAAC,eAAe,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,IAAI,EAAE,IAAI,EAAA,EAAM,KAAK,CAAA,EACjC,QAAQ,CACK,CACK,EAC7B;AACN,CAAC;AAED,MAAM,gBAAgB,GAAG,CAAC,IAAsB,EAAE,UAAkB,KAAI;AACpE,IAAA,KAAK,MAAM,UAAU,IAAI,IAAI,EAAE;QAC3B,IAAI,YAAY,IAAI,UAAU,EAAE;AAC5B,YAAA,KAAK,MAAM,WAAW,IAAI,UAAU,CAAC,KAAK;AACtC,gBAAA,IAAI,WAAW,CAAC,EAAE,KAAK,UAAU;oBAAE,OAAO,WAAW,CAAC,KAAK,CAAC;AACnE,SAAA;AAAM,aAAA,IAAI,UAAU,CAAC,EAAE,KAAK,UAAU;YAAE,OAAO,UAAU,CAAC,KAAK,CAAC;AACpE,KAAA;AAED,IAAA,OAAO,EAAE,CAAC;AACd,CAAC,CAAC;AAGF,SAAS,eAAe,CAAC,EACrB,WAAW,EACX,aAAa,EACb,SAAS,EACT,QAAQ,EACR,cAAc,EACd,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,EAC3B,iBAAiB,GAAG,IAAI,CAAC,0BAA0B,CAAC,EACpD,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,EAClD,IAAI,EACJ,YAAY,EACZ,OAAO,GACY,EAAA;;IACnB,MAAM,EAAC,2BAA2B,EAAE,yBAAyB,EAAC,GAAG,kBAAkB,EAAE,CAAC;AAEtF,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGA,cAAK,CAAC,QAAQ,CAAC,aAAa,aAAb,aAAa,KAAA,KAAA,CAAA,GAAb,aAAa,GAAI,EAAE,CAAC,CAAC;AAChE,IAAA,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEhE,MAAM,QAAQ,GAAG,iCAAiC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAErE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,IAAA,MAAM,oBAAoB,GACtB,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;IACxF,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,GAAGA,cAAK,CAAC,QAAQ,CACjD,oBAAoB;AAChB,SAAC,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,SAAS,CAAC,CAChF,CAAC;IACF,MAAM,cAAc,GAAGA,cAAK,CAAC,MAAM,CAAmB,IAAI,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAGA,cAAK,CAAC,MAAM,CAAuB,IAAI,CAAC,CAAC;AACzD,IAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,QAAQ,CAAC;AAEnC,IAAAA,cAAK,CAAC,SAAS,CAAC,MAAK;;AACjB,QAAA,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,EAAE,CAAC;AAClC,KAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAEb,IAAAA,cAAK,CAAC,SAAS,CAAC,MAAK;QACjB,MAAM,OAAO,GAAG,MAAK;;AACjB,YAAA,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,EAAE,CAAC;AAClC,SAAC,CAAC;AACF,QAAA,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1C,QAAA,OAAO,MAAK;AACR,YAAA,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,SAAC,CAAC;KACL,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,UAAU,GAAG,YAAY,CAAC;IAC9B,IAAI,CAAC,UAAU,KAAI,CAAA,EAAA,GAAA,KAAK,CAAC,UAAU,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAA,EAAE;QAC1C,UAAU,GAAG,MAAA,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,MAAM,EAAC,KAAK,CAAC,MAAM,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC;AACrE,KAAA;AAED,IAAA,MAAM,gBAAgB,GAAG,CAAC,OAA2B,KAAI;AACrD,QAAA,cAAc,CAAC,CAAC,QAAQ,KAAI;YACxB,IAAI,QAAQ,KAAK,OAAO,EAAE;AACtB,gBAAA,YAAY,aAAZ,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZ,YAAY,CAAG,OAAO,CAAC,CAAC;AAC3B,aAAA;AACD,YAAA,OAAO,OAAO,CAAC;AACnB,SAAC,CAAC,CAAC;AACP,KAAC,CAAC;AAEF,IAAAA,cAAK,CAAC,SAAS,CAAC,MAAK;QACjB,IAAI,UAAU,KAAK,YAAY,EAAE;YAC7B,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAChC,SAAA;AACL,KAAC,CAAC,CAAC;AAEH,IAAAA,cAAK,CAAC,SAAS,CAAC,MAAK;AACjB,QAAA,IAAI,CAAC,oBAAoB;YAAE,OAAO;QAClC,cAAc,CAAC,oBAAoB,CAAC,CAAC;AACzC,KAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAE3B,IAAAA,cAAK,CAAC,SAAS,CAAC,MAAK;;AACjB,QAAA,IAAI,MAAA,QAAQ,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE;AAC/B,YAAA,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AACjD,SAAA;AACL,KAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAE3B,MAAM,aAAa,GAAG,CAAC,EAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAe,KAAI;QACnE,QACIA,sCAAK,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,EAAA,EAC/CA,cAAK,CAAC,YAAY,CAAC,OAAO,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACpB,OAAO,CAAC,KAAK,KAChB,gBAAgB,EACZ,MAAM,IAAI,YAAY,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,YAAY,EAChF,CAAA,CAAA,CACA,EACR;AACN,KAAC,CAAC;AAEF,IAAA,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,OAA4B,KAAI;QACjE,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAE9D,QAAA,QACIA,cACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,OAAO,CAAC,KAAK,EAClB,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,EAChF,GAAG,EAAE,UAAU,GAAG,QAAQ,CAAC,WAAW,GAAG,SAAS,EAAA;YAEjD,OAAO,CAAC,SAAS,KACdA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAC9B,EAAA,2BAA2B,IACxBA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAC,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAA;AAC7B,gBAAA,OAAO,CAAC,KAAK;AACd,gBAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAE,CAAC,CAAC,yBAAyB,EAAE;AACpC,wBAAA,MAAM,EAAE,yBAAyB;AACpC,qBAAA,CAAC,IAED,2BAA2B,CAAC,OAAO,CAAC,CACnC,CACH,KAEP,OAAO,CAAC,KAAK,CAChB,CACA,CACR;AAEA,YAAA,OAAO,CAAC,MAAM;iBACV,QAAQ,IACLA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAA,EAAG,OAAO,CAAC,MAAM,CAAO,KAE9D,OAAO,CAAC,MAAM,CACjB,CAAC;AAEL,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAC/E,EACR;AACN,KAAC,CAAC;AAEF,IAAA,MAAM,iBAAiB,GAAG,CAAC,IAAwB,KAAI;QACnD,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,OAAO,cAAc,KAAK,UAAU,IACvC,cAAc,EAAE,KAEhBA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,EAAG,EAAA,gBAAgB,CAAO,CAC3D,CAAC;AACL,SAAA;QAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAEnF,QAAA,QACIA,cAAA,CAAA,aAAA,CAACA,cAAK,CAAC,QAAQ,EAAA,IAAA;AACV,YAAA,CAAC,QAAQ,KACNA,6BAAC,KAAK,EAAA,EAAC,YAAY,EAAC,IAAA,EAAA,OAAO,EAAE,OAAO,EAAA,EAC/B,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CACzB,CACX;YAEDA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EAAA,EACvB,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAC9D,CACO,EACnB;AACN,KAAC,CAAC;AAEF,IAAA,QACIA,cAAC,CAAA,aAAA,CAAA,gCAAgC,EAAC,EAAA,KAAK,EAAE,QAAQ,EAAA;AAC7C,QAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAA;AACpB,YAAA,QAAQ,IACLA,cAAC,CAAA,aAAA,CAAAA,cAAK,CAAC,QAAQ,EAAA,IAAA;AACX,gBAAAA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAA,EACX,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,EACtB,YAAY,EAAE,aAAa,EAC3B,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,KAAK,EAChB,SAAS,EAAE,IAAI,EACjB,CAAA;AACF,gBAAAA,cAAA,CAAA,aAAA,CAAC,kBAAkB,EACf,EAAA,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,UAAU,EACxB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAA,CACtB,CACW,KAEjBA,cACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EACpB,OAAO,EAAE,MAAK;oBACV,IAAI,cAAc,CAAC,OAAO,EAAE;AACxB,wBAAA,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAClC,qBAAA;AACL,iBAAC,EACD,SAAS,EAAE,CAAC,KAAK,KAAI;oBACjB,IAAI,OAAO,CAAC,OAAO,EAAE;wBACjB,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;4BACtC,KAAK,CAAC,cAAc,EAAE,CAAC;AAC1B,yBAAA;AACJ,qBAAA;iBACJ,EAAA;gBAEDA,cAAC,CAAA,aAAA,CAAA,KAAK,EAAE,IAAA,EAAA,KAAK,CAAS;gBACtBA,cAAC,CAAA,aAAA,CAAA,cAAc,EACX,EAAA,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,EACtB,YAAY,EAAE,aAAa,EAC3B,QAAQ,EAAE,SAAS,EACnB,WAAW,EAAE,iBAAiB,EAC9B,SAAS,EACX,IAAA,EAAA,CAAA;AACF,gBAAAA,cAAA,CAAA,aAAA,CAAC,YAAY,EACT,EAAA,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,UAAU,EAAA,CAC1B,CACA,CACT;AACD,YAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAA,EAAG,iBAAiB,CAAC,UAAU,CAAC,CAAO,CAC9D,CACyB,EACrC;AACN,CAAC;AAED,QAAQ,CAAC,KAAK,GAAG,SAAS,aAAa,CAAC,EAAC,QAAQ,EAAqB,EAAA;AAClE,IAAA,OAAOA,6BAACA,cAAK,CAAC,QAAQ,EAAE,IAAA,EAAA,QAAQ,CAAkB,CAAC;AACvD,CAAC,CAAC;AAEF,QAAQ,CAAC,IAAI,GAAG,SAAS,YAAY,CAAC,EAAC,QAAQ,EAAoB,EAAA;AAC/D,IAAA,OAAOA,6BAACA,cAAK,CAAC,QAAQ,EAAE,IAAA,EAAA,QAAQ,CAAkB,CAAC;AACvD,CAAC,CAAC;AAEF,QAAQ,CAAC,OAAO,GAAG,SAAS,eAAe,CAAC,EAAC,QAAQ,EAAuB,EAAA;AACxE,IAAA,OAAOA,6BAACA,cAAK,CAAC,QAAQ,EAAE,IAAA,EAAA,QAAQ,CAAkB,CAAC;AACvD,CAAC,CAAC;AAEF,QAAQ,CAAC,IAAI,GAAG,SAAS,YAAY,CAAC,OAA0B,EAAA;IAC5D,MAAM,EACF,EAAE,EACF,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,KAAK,GAAG,QAAQ,EAChB,SAAS,EACT,oBAAoB,GAAGG,UAAQ,EAC/B,IAAI,EACJ,WAAW,GACd,GAAG,OAAO,CAAC;AAEZ,IAAA,MAAM,QAAQ,GAAG,2BAA2B,EAAE,CAAC;AAC/C,IAAA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;IAEzE,MAAM,EAAC,oBAAoB,EAAE,yBAAyB,EAAC,GAAG,kBAAkB,EAAE,CAAC;IAC/E,MAAM,SAAS,IACXH,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,CAAC,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,EAC/C,EAAA,oBAAoB,CAAC,gBAAgB,CAAC,CACpC,CACV,CAAC;AACF,IAAA,QACIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAC,CAAC,EAChE,GAAG,EAAE,iBAAiB,GAAG,QAAQ,CAAC,WAAW,GAAG,SAAS,EAAA;QAEzDA,cAAO,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,OAAO,EAAA;AAC3C,YAAA,oBAAoB,IACjBA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAC,EAAA,SAAS,EAAE,CAAC,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE,CAAC,EAAA;gBAC3C,SAAS;AACV,gBAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAE,CAAC,CAAC,sBAAsB,EAAE;AACjC,wBAAA,MAAM,EAAE,yBAAyB;AACpC,qBAAA,CAAC,EAED,EAAA,oBAAoB,CAAC,OAAO,CAAC,CAC5B,CACH,KAEP,SAAS,CACZ;AACA,YAAA,WAAW,GAAGA,cAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,kBAAkB,CAAC,IAAG,WAAW,CAAQ,GAAG,IAAI,CAC9E;QACRA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,EAAA,EAAG,QAAQ,CAAO,CACjD,EACR;AACN,CAAC,CAAC;AAEF,SAAS,YAAY,CAAC,MAAc,EAAE,MAAc,EAAA;IAChD,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAsB,EAAE,CAAC;AACpC,IAAA,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACtB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACnB,YAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,EAAE;AACP,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChC,aAAA;AACD,YAAA,KAAK,CAAC,IAAI,CACNA,yCAAQ,GAAG,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,IACpC,CAAC,CACG,CACZ,CAAC;YACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AACnC,SAAA;AACJ,KAAA;AACD,IAAA,IAAI,IAAI,EAAE;AACN,QAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,KAAA;AACD,IAAA,OAAO,KAAK,CAAC;AACjB;;;;"}
@@ -68,9 +68,9 @@ const TopPanel = ({ topAlert }) => {
68
68
  React__default.createElement(Alert, { className: b('pane-top-alert', {
69
69
  centered: topAlert.centered,
70
70
  dense: topAlert.dense,
71
- }), corners: "square", layout: "horizontal", theme: topAlert.theme || 'warning', icon: topAlert.icon, title: topAlert.title, message: topAlert.message, actions: topAlert.actions, onClose: topAlert.closable ? handleClose : undefined }),
71
+ }), corners: "square", layout: "horizontal", theme: topAlert.theme || 'warning', view: topAlert.view, icon: topAlert.icon, title: topAlert.title, message: topAlert.message, actions: topAlert.actions, onClose: topAlert.closable ? handleClose : undefined }),
72
72
  React__default.createElement("div", { className: b('pane-top-divider') })))));
73
73
  };
74
74
 
75
75
  export { TopPanel };
76
- //# sourceMappingURL=TopPanel-2760cf72.js.map
76
+ //# sourceMappingURL=TopPanel-627d614f.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopPanel-627d614f.js","sources":["../../../src/components/AsideHeader/useAsideHeaderTopPanel.tsx","../../../src/components/AsideHeader/components/TopPanel.tsx"],"sourcesContent":["import React from 'react';\n\nimport debounceFn from 'lodash/debounce';\n\nimport {AsideHeaderTopAlertProps} from '../types';\n\ntype AsideHeaderTopPanel = {\n topRef: React.RefObject<HTMLDivElement>;\n updateTopSize: () => void;\n};\n\nconst G_ROOT_CLASS_NAME = 'g-root';\n\nconst useRefHeight = (ref: React.RefObject<HTMLDivElement>) => {\n const [topHeight, setTopHeight] = React.useState(0);\n React.useEffect(() => {\n if (ref.current) {\n const {current} = ref;\n setTopHeight(current.clientHeight);\n }\n }, [ref]);\n return topHeight;\n};\n\nexport const useAsideHeaderTopPanel = ({\n topAlert,\n}: {\n topAlert?: AsideHeaderTopAlertProps;\n}): AsideHeaderTopPanel => {\n const topRef = React.useRef<HTMLDivElement>(null);\n const topHeight = useRefHeight(topRef);\n\n const setAsideTopPanelHeight = React.useCallback((clientHeight: number) => {\n const gRootElement = document\n .getElementsByClassName(G_ROOT_CLASS_NAME)\n .item(0) as HTMLElement | null;\n gRootElement?.style.setProperty('--gn-aside-top-panel-height', clientHeight + 'px');\n }, []);\n\n const updateTopSize = React.useCallback(() => {\n if (topRef.current) {\n setAsideTopPanelHeight(topRef.current?.clientHeight || 0);\n }\n }, [topRef, setAsideTopPanelHeight]);\n\n React.useLayoutEffect(() => {\n const updateTopSizeDebounce = debounceFn(updateTopSize, 200, {leading: true});\n\n if (topAlert) {\n window.addEventListener('resize', updateTopSizeDebounce);\n updateTopSizeDebounce();\n }\n return () => {\n window.removeEventListener('resize', updateTopSizeDebounce);\n setAsideTopPanelHeight(0);\n };\n }, [topAlert, topHeight, topRef, updateTopSize, setAsideTopPanelHeight]);\n\n return {\n topRef,\n updateTopSize,\n };\n};\n","import React from 'react';\n\nimport {Alert} from '@gravity-ui/uikit';\n\nimport {AsideHeaderTopAlertProps} from '../../types';\nimport {useAsideHeaderTopPanel} from '../useAsideHeaderTopPanel';\nimport {b} from '../utils';\n\ntype Props = {\n topAlert?: AsideHeaderTopAlertProps;\n};\n\nexport const TopPanel = ({topAlert}: Props) => {\n const {topRef, updateTopSize} = useAsideHeaderTopPanel({topAlert});\n\n const [opened, setOpened] = React.useState(true);\n\n const handleClose = React.useCallback(() => {\n setOpened(false);\n topAlert?.onCloseTopAlert?.();\n }, [topAlert]);\n\n React.useEffect(() => {\n if (!opened) {\n updateTopSize();\n }\n }, [opened, updateTopSize]);\n\n if (!topAlert || !topAlert.message) {\n return null;\n }\n\n return (\n <div ref={topRef} className={b('pane-top', {opened})}>\n {opened && (\n <React.Fragment>\n <Alert\n className={b('pane-top-alert', {\n centered: topAlert.centered,\n dense: topAlert.dense,\n })}\n corners=\"square\"\n layout=\"horizontal\"\n theme={topAlert.theme || 'warning'}\n view={topAlert.view}\n icon={topAlert.icon}\n title={topAlert.title}\n message={topAlert.message}\n actions={topAlert.actions}\n onClose={topAlert.closable ? handleClose : undefined}\n />\n <div className={b('pane-top-divider')}></div>\n </React.Fragment>\n )}\n </div>\n );\n};\n"],"names":["React","debounceFn"],"mappings":";;;;;;;AAWA,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEnC,MAAM,YAAY,GAAG,CAAC,GAAoC,KAAI;AAC1D,IAAA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAGA,cAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpD,IAAAA,cAAK,CAAC,SAAS,CAAC,MAAK;QACjB,IAAI,GAAG,CAAC,OAAO,EAAE;AACb,YAAA,MAAM,EAAC,OAAO,EAAC,GAAG,GAAG,CAAC;AACtB,YAAA,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACtC,SAAA;AACL,KAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACV,IAAA,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEK,MAAM,sBAAsB,GAAG,CAAC,EACnC,QAAQ,GAGX,KAAyB;IACtB,MAAM,MAAM,GAAGA,cAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;AAClD,IAAA,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAEvC,MAAM,sBAAsB,GAAGA,cAAK,CAAC,WAAW,CAAC,CAAC,YAAoB,KAAI;QACtE,MAAM,YAAY,GAAG,QAAQ;aACxB,sBAAsB,CAAC,iBAAiB,CAAC;aACzC,IAAI,CAAC,CAAC,CAAuB,CAAC;AACnC,QAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAY,CAAE,KAAK,CAAC,WAAW,CAAC,6BAA6B,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;KACvF,EAAE,EAAE,CAAC,CAAC;AAEP,IAAA,MAAM,aAAa,GAAGA,cAAK,CAAC,WAAW,CAAC,MAAK;;QACzC,IAAI,MAAM,CAAC,OAAO,EAAE;YAChB,sBAAsB,CAAC,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,KAAI,CAAC,CAAC,CAAC;AAC7D,SAAA;AACL,KAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;AAErC,IAAAA,cAAK,CAAC,eAAe,CAAC,MAAK;AACvB,QAAA,MAAM,qBAAqB,GAAGC,UAAU,CAAC,aAAa,EAAE,GAAG,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;AAE9E,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;AACzD,YAAA,qBAAqB,EAAE,CAAC;AAC3B,SAAA;AACD,QAAA,OAAO,MAAK;AACR,YAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;YAC5D,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAC9B,SAAC,CAAC;AACN,KAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAEzE,OAAO;QACH,MAAM;QACN,aAAa;KAChB,CAAC;AACN,CAAC;;MClDY,QAAQ,GAAG,CAAC,EAAC,QAAQ,EAAQ,KAAI;AAC1C,IAAA,MAAM,EAAC,MAAM,EAAE,aAAa,EAAC,GAAG,sBAAsB,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC;AAEnE,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGD,cAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAEjD,IAAA,MAAM,WAAW,GAAGA,cAAK,CAAC,WAAW,CAAC,MAAK;;QACvC,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,CAAA,EAAA,GAAA,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,eAAe,wDAAI,CAAC;AAClC,KAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEf,IAAAA,cAAK,CAAC,SAAS,CAAC,MAAK;QACjB,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,aAAa,EAAE,CAAC;AACnB,SAAA;AACL,KAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;AAE5B,IAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAChC,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;IAED,QACIA,sCAAK,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,EAAC,MAAM,EAAC,CAAC,EAC/C,EAAA,MAAM,KACHA,cAAA,CAAA,aAAA,CAACA,cAAK,CAAC,QAAQ,EAAA,IAAA;AACX,QAAAA,cAAA,CAAA,aAAA,CAAC,KAAK,EACF,EAAA,SAAS,EAAE,CAAC,CAAC,gBAAgB,EAAE;gBAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK;AACxB,aAAA,CAAC,EACF,OAAO,EAAC,QAAQ,EAChB,MAAM,EAAC,YAAY,EACnB,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,SAAS,EAClC,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,OAAO,EAAE,QAAQ,CAAC,OAAO,EACzB,OAAO,EAAE,QAAQ,CAAC,OAAO,EACzB,OAAO,EAAE,QAAQ,CAAC,QAAQ,GAAG,WAAW,GAAG,SAAS,EACtD,CAAA;QACFA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAA,CAAQ,CAChC,CACpB,CACC,EACR;AACN;;;;"}
@@ -39,6 +39,7 @@ export interface SettingsSectionProps {
39
39
  children: React.ReactNode;
40
40
  withBadge?: boolean;
41
41
  showTitle?: boolean;
42
+ onlyChild?: boolean;
42
43
  }
43
44
  export interface SettingsItemProps {
44
45
  id?: string;
@@ -27,6 +27,7 @@ export interface SettingsPageSection {
27
27
  hidden?: boolean;
28
28
  withBadge?: boolean;
29
29
  showTitle?: boolean;
30
+ onlyChild?: boolean;
30
31
  }
31
32
  export interface SettingsItem {
32
33
  id?: string;
@@ -17,7 +17,7 @@ import { Ellipsis } from '@gravity-ui/icons';
17
17
  export { P as ActionBar } from './ActionBar-834b178a.js';
18
18
  export { T as Title } from './Title-03b4255a.js';
19
19
  export { H as HotkeysPanel } from './HotkeysPanel-e19bad23.js';
20
- export { S as Settings, a as useSettingsContext, u as useSettingsSelectionContext } from './Settings-06d306b1.js';
20
+ export { S as Settings, a as useSettingsContext, u as useSettingsSelectionContext } from './Settings-e660a4c5.js';
21
21
  import './Item-fb2a4efc.js';
22
22
  import './constants-b1604ff5.js';
23
23
  import './Content-f94ba85d.js';
@@ -1,4 +1,4 @@
1
- export { S as Settings, a as useSettingsContext, u as useSettingsSelectionContext } from './Settings-06d306b1.js';
1
+ export { S as Settings, a as useSettingsContext, u as useSettingsSelectionContext } from './Settings-e660a4c5.js';
2
2
  import './tslib.es6-3cd4e99f.js';
3
3
  import 'react';
4
4
  import '@gravity-ui/uikit';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/navigation",
3
- "version": "2.21.0",
3
+ "version": "2.22.0",
4
4
  "description": "Gravity UI Navigation components",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"Settings-5d2bec1d.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}\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}\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})}\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","identity"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TopPanel-1b062791.js","sources":["../../../src/components/AsideHeader/useAsideHeaderTopPanel.tsx","../../../src/components/AsideHeader/components/TopPanel.tsx"],"sourcesContent":["import React from 'react';\n\nimport debounceFn from 'lodash/debounce';\n\nimport {AsideHeaderTopAlertProps} from '../types';\n\ntype AsideHeaderTopPanel = {\n topRef: React.RefObject<HTMLDivElement>;\n updateTopSize: () => void;\n};\n\nconst G_ROOT_CLASS_NAME = 'g-root';\n\nconst useRefHeight = (ref: React.RefObject<HTMLDivElement>) => {\n const [topHeight, setTopHeight] = React.useState(0);\n React.useEffect(() => {\n if (ref.current) {\n const {current} = ref;\n setTopHeight(current.clientHeight);\n }\n }, [ref]);\n return topHeight;\n};\n\nexport const useAsideHeaderTopPanel = ({\n topAlert,\n}: {\n topAlert?: AsideHeaderTopAlertProps;\n}): AsideHeaderTopPanel => {\n const topRef = React.useRef<HTMLDivElement>(null);\n const topHeight = useRefHeight(topRef);\n\n const setAsideTopPanelHeight = React.useCallback((clientHeight: number) => {\n const gRootElement = document\n .getElementsByClassName(G_ROOT_CLASS_NAME)\n .item(0) as HTMLElement | null;\n gRootElement?.style.setProperty('--gn-aside-top-panel-height', clientHeight + 'px');\n }, []);\n\n const updateTopSize = React.useCallback(() => {\n if (topRef.current) {\n setAsideTopPanelHeight(topRef.current?.clientHeight || 0);\n }\n }, [topRef, setAsideTopPanelHeight]);\n\n React.useLayoutEffect(() => {\n const updateTopSizeDebounce = debounceFn(updateTopSize, 200, {leading: true});\n\n if (topAlert) {\n window.addEventListener('resize', updateTopSizeDebounce);\n updateTopSizeDebounce();\n }\n return () => {\n window.removeEventListener('resize', updateTopSizeDebounce);\n setAsideTopPanelHeight(0);\n };\n }, [topAlert, topHeight, topRef, updateTopSize, setAsideTopPanelHeight]);\n\n return {\n topRef,\n updateTopSize,\n };\n};\n","import React from 'react';\n\nimport {Alert} from '@gravity-ui/uikit';\n\nimport {AsideHeaderTopAlertProps} from '../../types';\nimport {useAsideHeaderTopPanel} from '../useAsideHeaderTopPanel';\nimport {b} from '../utils';\n\ntype Props = {\n topAlert?: AsideHeaderTopAlertProps;\n};\n\nexport const TopPanel = ({topAlert}: Props) => {\n const {topRef, updateTopSize} = useAsideHeaderTopPanel({topAlert});\n\n const [opened, setOpened] = React.useState(true);\n\n const handleClose = React.useCallback(() => {\n setOpened(false);\n topAlert?.onCloseTopAlert?.();\n }, [topAlert]);\n\n React.useEffect(() => {\n if (!opened) {\n updateTopSize();\n }\n }, [opened, updateTopSize]);\n\n if (!topAlert || !topAlert.message) {\n return null;\n }\n\n return (\n <div ref={topRef} className={b('pane-top', {opened})}>\n {opened && (\n <React.Fragment>\n <Alert\n className={b('pane-top-alert', {\n centered: topAlert.centered,\n dense: topAlert.dense,\n })}\n corners=\"square\"\n layout=\"horizontal\"\n theme={topAlert.theme || 'warning'}\n icon={topAlert.icon}\n title={topAlert.title}\n message={topAlert.message}\n actions={topAlert.actions}\n onClose={topAlert.closable ? handleClose : undefined}\n />\n <div className={b('pane-top-divider')}></div>\n </React.Fragment>\n )}\n </div>\n );\n};\n"],"names":["React","debounceFn","b","Alert"],"mappings":";;;;;;;;;;;;;AAWA,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEnC,MAAM,YAAY,GAAG,CAAC,GAAoC,KAAI;AAC1D,IAAA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAGA,yBAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpD,IAAAA,yBAAK,CAAC,SAAS,CAAC,MAAK;QACjB,IAAI,GAAG,CAAC,OAAO,EAAE;AACb,YAAA,MAAM,EAAC,OAAO,EAAC,GAAG,GAAG,CAAC;AACtB,YAAA,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACtC,SAAA;AACL,KAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACV,IAAA,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEK,MAAM,sBAAsB,GAAG,CAAC,EACnC,QAAQ,GAGX,KAAyB;IACtB,MAAM,MAAM,GAAGA,yBAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;AAClD,IAAA,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAEvC,MAAM,sBAAsB,GAAGA,yBAAK,CAAC,WAAW,CAAC,CAAC,YAAoB,KAAI;QACtE,MAAM,YAAY,GAAG,QAAQ;aACxB,sBAAsB,CAAC,iBAAiB,CAAC;aACzC,IAAI,CAAC,CAAC,CAAuB,CAAC;AACnC,QAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAY,CAAE,KAAK,CAAC,WAAW,CAAC,6BAA6B,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;KACvF,EAAE,EAAE,CAAC,CAAC;AAEP,IAAA,MAAM,aAAa,GAAGA,yBAAK,CAAC,WAAW,CAAC,MAAK;;QACzC,IAAI,MAAM,CAAC,OAAO,EAAE;YAChB,sBAAsB,CAAC,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,KAAI,CAAC,CAAC,CAAC;AAC7D,SAAA;AACL,KAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;AAErC,IAAAA,yBAAK,CAAC,eAAe,CAAC,MAAK;AACvB,QAAA,MAAM,qBAAqB,GAAGC,mBAAU,CAAC,aAAa,EAAE,GAAG,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;AAE9E,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;AACzD,YAAA,qBAAqB,EAAE,CAAC;AAC3B,SAAA;AACD,QAAA,OAAO,MAAK;AACR,YAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;YAC5D,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAC9B,SAAC,CAAC;AACN,KAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAEzE,OAAO;QACH,MAAM;QACN,aAAa;KAChB,CAAC;AACN,CAAC;;MClDY,QAAQ,GAAG,CAAC,EAAC,QAAQ,EAAQ,KAAI;AAC1C,IAAA,MAAM,EAAC,MAAM,EAAE,aAAa,EAAC,GAAG,sBAAsB,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC;AAEnE,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGD,yBAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAEjD,IAAA,MAAM,WAAW,GAAGA,yBAAK,CAAC,WAAW,CAAC,MAAK;;QACvC,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,CAAA,EAAA,GAAA,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,eAAe,wDAAI,CAAC;AAClC,KAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEf,IAAAA,yBAAK,CAAC,SAAS,CAAC,MAAK;QACjB,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,aAAa,EAAE,CAAC;AACnB,SAAA;AACL,KAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;AAE5B,IAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAChC,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;IAED,QACIA,iDAAK,GAAG,EAAE,MAAM,EAAE,SAAS,EAAEE,OAAC,CAAC,UAAU,EAAE,EAAC,MAAM,EAAC,CAAC,EAC/C,EAAA,MAAM,KACHF,yBAAA,CAAA,aAAA,CAACA,yBAAK,CAAC,QAAQ,EAAA,IAAA;AACX,QAAAA,yBAAA,CAAA,aAAA,CAACG,WAAK,EACF,EAAA,SAAS,EAAED,OAAC,CAAC,gBAAgB,EAAE;gBAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK;aACxB,CAAC,EACF,OAAO,EAAC,QAAQ,EAChB,MAAM,EAAC,YAAY,EACnB,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,SAAS,EAClC,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,OAAO,EAAE,QAAQ,CAAC,OAAO,EACzB,OAAO,EAAE,QAAQ,CAAC,OAAO,EACzB,OAAO,EAAE,QAAQ,CAAC,QAAQ,GAAG,WAAW,GAAG,SAAS,EACtD,CAAA;QACFF,yBAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAEE,OAAC,CAAC,kBAAkB,CAAC,EAAA,CAAQ,CAChC,CACpB,CACC,EACR;AACN;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Settings-06d306b1.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}\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}\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})}\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","debounceFn","identity"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TopPanel-2760cf72.js","sources":["../../../src/components/AsideHeader/useAsideHeaderTopPanel.tsx","../../../src/components/AsideHeader/components/TopPanel.tsx"],"sourcesContent":["import React from 'react';\n\nimport debounceFn from 'lodash/debounce';\n\nimport {AsideHeaderTopAlertProps} from '../types';\n\ntype AsideHeaderTopPanel = {\n topRef: React.RefObject<HTMLDivElement>;\n updateTopSize: () => void;\n};\n\nconst G_ROOT_CLASS_NAME = 'g-root';\n\nconst useRefHeight = (ref: React.RefObject<HTMLDivElement>) => {\n const [topHeight, setTopHeight] = React.useState(0);\n React.useEffect(() => {\n if (ref.current) {\n const {current} = ref;\n setTopHeight(current.clientHeight);\n }\n }, [ref]);\n return topHeight;\n};\n\nexport const useAsideHeaderTopPanel = ({\n topAlert,\n}: {\n topAlert?: AsideHeaderTopAlertProps;\n}): AsideHeaderTopPanel => {\n const topRef = React.useRef<HTMLDivElement>(null);\n const topHeight = useRefHeight(topRef);\n\n const setAsideTopPanelHeight = React.useCallback((clientHeight: number) => {\n const gRootElement = document\n .getElementsByClassName(G_ROOT_CLASS_NAME)\n .item(0) as HTMLElement | null;\n gRootElement?.style.setProperty('--gn-aside-top-panel-height', clientHeight + 'px');\n }, []);\n\n const updateTopSize = React.useCallback(() => {\n if (topRef.current) {\n setAsideTopPanelHeight(topRef.current?.clientHeight || 0);\n }\n }, [topRef, setAsideTopPanelHeight]);\n\n React.useLayoutEffect(() => {\n const updateTopSizeDebounce = debounceFn(updateTopSize, 200, {leading: true});\n\n if (topAlert) {\n window.addEventListener('resize', updateTopSizeDebounce);\n updateTopSizeDebounce();\n }\n return () => {\n window.removeEventListener('resize', updateTopSizeDebounce);\n setAsideTopPanelHeight(0);\n };\n }, [topAlert, topHeight, topRef, updateTopSize, setAsideTopPanelHeight]);\n\n return {\n topRef,\n updateTopSize,\n };\n};\n","import React from 'react';\n\nimport {Alert} from '@gravity-ui/uikit';\n\nimport {AsideHeaderTopAlertProps} from '../../types';\nimport {useAsideHeaderTopPanel} from '../useAsideHeaderTopPanel';\nimport {b} from '../utils';\n\ntype Props = {\n topAlert?: AsideHeaderTopAlertProps;\n};\n\nexport const TopPanel = ({topAlert}: Props) => {\n const {topRef, updateTopSize} = useAsideHeaderTopPanel({topAlert});\n\n const [opened, setOpened] = React.useState(true);\n\n const handleClose = React.useCallback(() => {\n setOpened(false);\n topAlert?.onCloseTopAlert?.();\n }, [topAlert]);\n\n React.useEffect(() => {\n if (!opened) {\n updateTopSize();\n }\n }, [opened, updateTopSize]);\n\n if (!topAlert || !topAlert.message) {\n return null;\n }\n\n return (\n <div ref={topRef} className={b('pane-top', {opened})}>\n {opened && (\n <React.Fragment>\n <Alert\n className={b('pane-top-alert', {\n centered: topAlert.centered,\n dense: topAlert.dense,\n })}\n corners=\"square\"\n layout=\"horizontal\"\n theme={topAlert.theme || 'warning'}\n icon={topAlert.icon}\n title={topAlert.title}\n message={topAlert.message}\n actions={topAlert.actions}\n onClose={topAlert.closable ? handleClose : undefined}\n />\n <div className={b('pane-top-divider')}></div>\n </React.Fragment>\n )}\n </div>\n );\n};\n"],"names":["React","debounceFn"],"mappings":"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"}