@ytsaurus/ui 2.4.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/public/build/assets-manifest.json +39 -39
  2. package/dist/public/build/css/{9030.30b67fe6.chunk.css → 3792.a5336147.chunk.css} +1 -1
  3. package/dist/public/build/css/{9030.30b67fe6.chunk.css.map → 3792.a5336147.chunk.css.map} +1 -1
  4. package/dist/public/build/js/2142.9a9a44af.chunk.js +2 -0
  5. package/dist/public/build/js/2142.9a9a44af.chunk.js.map +1 -0
  6. package/dist/public/build/js/3225.0ca5646d.chunk.js +2 -0
  7. package/dist/public/build/js/3225.0ca5646d.chunk.js.map +1 -0
  8. package/dist/public/build/js/{9030.200c7642.chunk.js → 3792.1af8dc36.chunk.js} +2 -2
  9. package/dist/public/build/js/{9030.200c7642.chunk.js.map → 3792.1af8dc36.chunk.js.map} +1 -1
  10. package/dist/public/build/js/3848.db687afa.chunk.js +2 -0
  11. package/dist/public/build/js/3848.db687afa.chunk.js.map +1 -0
  12. package/dist/public/build/js/{9361.f5606246.chunk.js → 9361.632ac658.chunk.js} +3 -3
  13. package/dist/public/build/js/9361.632ac658.chunk.js.map +1 -0
  14. package/dist/public/build/js/acl.86dde5b4.chunk.js +2 -0
  15. package/dist/public/build/js/acl.86dde5b4.chunk.js.map +1 -0
  16. package/dist/public/build/js/{chart-kit.6c826f92.chunk.js → chart-kit.bc706a72.chunk.js} +2 -2
  17. package/dist/public/build/js/{chart-kit.6c826f92.chunk.js.map → chart-kit.bc706a72.chunk.js.map} +1 -1
  18. package/dist/public/build/js/{cluster-page-wrapper.24759f54.chunk.js → cluster-page-wrapper.69410672.chunk.js} +2 -2
  19. package/dist/public/build/js/{cluster-page-wrapper.24759f54.chunk.js.map → cluster-page-wrapper.69410672.chunk.js.map} +1 -1
  20. package/dist/public/build/js/{dashboard.5baf76be.chunk.js → dashboard.705aef5e.chunk.js} +2 -2
  21. package/dist/public/build/js/{dashboard.5baf76be.chunk.js.map → dashboard.705aef5e.chunk.js.map} +1 -1
  22. package/dist/public/build/js/{incarnations.db35d3e7.chunk.js → incarnations.b6c8305d.chunk.js} +2 -2
  23. package/dist/public/build/js/incarnations.b6c8305d.chunk.js.map +1 -0
  24. package/dist/public/build/js/main.2691b74a.js +3 -0
  25. package/dist/public/build/js/main.2691b74a.js.map +1 -0
  26. package/dist/public/build/js/navigation.b95d53a4.chunk.js +2 -0
  27. package/dist/public/build/js/navigation.b95d53a4.chunk.js.map +1 -0
  28. package/dist/public/build/js/{runtime.0bd241cc.js → runtime.cd2507d5.js} +2 -2
  29. package/dist/public/build/js/{runtime.0bd241cc.js.map → runtime.cd2507d5.js.map} +1 -1
  30. package/dist/public/build/js/settings-panel.5508764a.chunk.js +2 -0
  31. package/dist/public/build/js/settings-panel.5508764a.chunk.js.map +1 -0
  32. package/dist/public/build/js/{yt-df-dialog.3c75c1c6.chunk.js → yt-df-dialog.d8b77493.chunk.js} +3 -3
  33. package/dist/public/build/js/yt-df-dialog.d8b77493.chunk.js.map +1 -0
  34. package/dist/public/build/js/yt-queries-list.9b028808.chunk.js +2 -0
  35. package/dist/public/build/js/yt-queries-list.9b028808.chunk.js.map +1 -0
  36. package/dist/public/build/manifest.json +34 -34
  37. package/package.json +2 -2
  38. package/dist/public/build/js/2142.e3f4501e.chunk.js +0 -2
  39. package/dist/public/build/js/2142.e3f4501e.chunk.js.map +0 -1
  40. package/dist/public/build/js/3225.1bafd8e7.chunk.js +0 -2
  41. package/dist/public/build/js/3225.1bafd8e7.chunk.js.map +0 -1
  42. package/dist/public/build/js/3792.87728e87.chunk.js +0 -2
  43. package/dist/public/build/js/3792.87728e87.chunk.js.map +0 -1
  44. package/dist/public/build/js/9361.f5606246.chunk.js.map +0 -1
  45. package/dist/public/build/js/acl.ad72cb19.chunk.js +0 -2
  46. package/dist/public/build/js/acl.ad72cb19.chunk.js.map +0 -1
  47. package/dist/public/build/js/incarnations.db35d3e7.chunk.js.map +0 -1
  48. package/dist/public/build/js/main.10db4a06.js +0 -3
  49. package/dist/public/build/js/main.10db4a06.js.map +0 -1
  50. package/dist/public/build/js/navigation.dd0f8fc8.chunk.js +0 -2
  51. package/dist/public/build/js/navigation.dd0f8fc8.chunk.js.map +0 -1
  52. package/dist/public/build/js/settings-panel.4be91fef.chunk.js +0 -2
  53. package/dist/public/build/js/settings-panel.4be91fef.chunk.js.map +0 -1
  54. package/dist/public/build/js/yt-df-dialog.3c75c1c6.chunk.js.map +0 -1
  55. package/dist/public/build/js/yt-queries-list.e40d766e.chunk.js +0 -2
  56. package/dist/public/build/js/yt-queries-list.e40d766e.chunk.js.map +0 -1
  57. /package/dist/public/build/js/{9361.f5606246.chunk.js.LICENSE.txt → 9361.632ac658.chunk.js.LICENSE.txt} +0 -0
  58. /package/dist/public/build/js/{main.10db4a06.js.LICENSE.txt → main.2691b74a.js.LICENSE.txt} +0 -0
  59. /package/dist/public/build/js/{yt-df-dialog.3c75c1c6.chunk.js.LICENSE.txt → yt-df-dialog.d8b77493.chunk.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/settings-panel.5508764a.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/rum/rum-measure-types.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/Title/i18n/index.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/Title/Title.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/Settings/helpers.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/Settings/collect-settings.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/Settings/Selection/context.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/lodash/identity.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/Settings/SettingsMenu/SettingsMenu.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/Settings/SettingsMenuMobile/SettingsMenuMobile.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/Settings/i18n/index.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/Settings/SettingsSearch/SettingsSearch.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/Settings/Settings.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/Settings/Selection/utils.ts","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/tools-icon.svg","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/palette-icon.svg","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/close-tag-icon.svg","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/data-icon.svg","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/shield-icon.svg","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/table-icon.svg","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/info-icon.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/logo-gitlab.svg","webpack://@ytsaurus/ui/./src/ui/containers/SettingsMenu/SettingsMenuItem.js","webpack://@ytsaurus/ui/./src/ui/containers/SettingsMenu/SettingsMenuRadio.tsx","webpack://@ytsaurus/ui/./src/ui/containers/SettingsMenu/SettingsMenuInput.js","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Vcs/SettingsMenu/AddVcsTokenForm.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Vcs/SettingsMenu/VcsListItem.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Vcs/SettingsMenu/VcsList.tsx","webpack://@ytsaurus/ui/./src/ui/containers/SettingsMenu/SettingsItemLayout.tsx","webpack://@ytsaurus/ui/./src/ui/containers/SettingsMenu/SettingsMenuSelect.tsx","webpack://@ytsaurus/ui/./src/ui/containers/SettingsMenu/BooleanSettingItem.tsx","webpack://@ytsaurus/ui/./src/ui/containers/SettingsPanel/queriesPage/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/containers/SettingsPanel/queriesPage/DefaultAcoSelect.tsx","webpack://@ytsaurus/ui/./src/ui/containers/SettingsPanel/queriesPage/index.tsx","webpack://@ytsaurus/ui/./src/ui/containers/SettingsPanel/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/containers/SettingsPanel/settings-description.tsx","webpack://@ytsaurus/ui/./src/ui/containers/SettingsPanel/SettingsPanel.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/query-tracker/queryFilesForm.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/menu.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/lodash/isObject.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/lodash/_root.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/lodash/_freeGlobal.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/lodash/now.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/lodash/_trimmedEndIndex.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/lodash/_baseTrim.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/lodash/_Symbol.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/lodash/_getRawTag.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/lodash/_objectToString.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/lodash/_baseGetTag.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/lodash/isSymbol.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/lodash/toNumber.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/lodash/debounce.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/lodash/isObjectLike.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/tslib/tslib.es6.mjs","webpack://@ytsaurus/ui/./src/ui/common/yt-api.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/query-tracker/queryAco.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Tabs/TabsContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Tabs/TabsItem.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Tabs/Tabs.js","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueryToken/lazy.ts","webpack://@ytsaurus/ui/./src/ui/constants/system/masters.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/pencil-to-square.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Switch/Switch.js","webpack://@ytsaurus/ui/./src/ui/store/actions/cluster-params.ts","webpack://@ytsaurus/ui/./src/ui/components/RadioButton/RadioButton.tsx"],"sourcesContent":["export const RumMeasureTypes = {\n CLUSTER_PARAMS: 'CLUSTER_PARAMS',\n\n ACCOUNTS: 'ACCOUNTS_',\n\n NAVIGATION_PRELOAD: 'NAVIGATION_PRELOAD',\n\n NAVIGATION_CONTENT_DOCUMENT: 'NAVIGATION_CONTENT_DOCUMENT',\n NAVIGATION_CONTENT_FILE: 'NAVIGATION_CONTENT_FILE',\n NAVIGATION_CONTENT_LINK: 'NAVIGATION_CONTENT_LINK',\n NAVIGATION_CONTENT_MAP_NODE: 'NAVIGATION_CONTENT_MAP_NODE_',\n NAVIGATION_CONTENT_REPLICATED_TABLE: 'NAVIGATION_CONTENT_REPLICATED_TABLE',\n NAVIGATION_CONTENT_TABLE_STATIC: 'NAVIGATION_CONTENT_TABLE_STATIC',\n NAVIGATION_CONTENT_TABLE_DYNAMIC: 'NAVIGATION_CONTENT_TABLE_DYNAMIC',\n NAVIGATION_CONTENT_TRANSACTION: 'NAVIGATION_CONTENT_TRANSACTION',\n NAVIGATION_CONTENT_TRANSACTION_MAP: 'NAVIGATION_CONTENT_TRANSACTION_MAP',\n\n NAVIGATION_TAB_ACL: 'NAVIGATION_TAB_ACL',\n NAVIGATION_TAB_ACL_ACCESS: 'NAVIGATION_TAB_ACL_ACCESS',\n NAVIGATION_TAB_ANNOTATION: 'NAVIGATION_TAB_ANNOTATION',\n NAVIGATION_TAB_ATTRIBUTES: 'NAVIGATION_TAB_ATTRIBUTES',\n NAVIGATION_TAB_USER_ATTRIBUTES: 'NAVIGATION_TAB_USER_ATTRIBUTES',\n NAVIGATION_TAB_LOCKS: 'NAVIGATION_TAB_LOCKS',\n NAVIGATION_TAB_SCHEMA: 'NAVIGATION_TAB_SCHEMA',\n NAVIGATION_TAB_TABLETS: 'NAVIGATION_TAB_TABLETS',\n NAVIGATION_TAB_TABLET_ERRORS: 'NAVIGATION_TAB_TABLET_ERRORS',\n\n OPERATIONS_LIST: 'OPERATIONS_LIST_',\n\n OPERATION: 'OPERATION',\n OPERATION_TAB_DETAILS: 'OPERATION_TAB_DETAILS',\n OPERATION_TAB_ATTRIBUTES: 'OPERATION_TAB_ATTRIBUTES',\n OPERATION_TAB_SPECIFICATION: 'OPERATION_TAB_SPECIFICATION',\n OPERATION_TAB_STATISTICS: 'OPERATION_TAB_STATISTICS',\n OPERATION_TAB_MONITOR: 'OPERATION_TAB_MONITOR',\n OPERATION_TAB_PARTITION_SIZES: 'OPERATION_TAB_PARTITION_SIZES',\n OPERATION_TAB_JOB_SIZES: 'OPERATION_TAB_JOB_SIZES',\n OPERATION_TAB_JOBS: 'OPERATION_TAB_JOBS',\n\n SCHEDULING: 'SCHEDULING_',\n SCHEDULING_OVERVIEW: 'SCHEDULING_OVERVIEW',\n SCHEDULING_DETAILS: 'SCHEDULING_DETAILS',\n SCHEDULING_MONITOR: 'SCHEDULING_MONITOR',\n SCHEDULING_ACL: 'SCHEDULING_ACL',\n\n YQL_KIT_WIDGET: 'YQL_KIT_WIDGET',\n} as const;\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 = 'Title';\nexport default addComponentKeysets({en, ru}, `${NAMESPACE}${COMPONENT}`);\n","import React from 'react';\n\nimport {Xmark} from '@gravity-ui/icons';\nimport {Button, Icon, Text} from '@gravity-ui/uikit';\n\nimport {block} from '../utils/cn';\n\nimport i18n from './i18n';\n\nimport './Title.scss';\n\nconst b = block('title');\n\ninterface TitleProps {\n hasSeparator?: boolean;\n closeTitle?: string;\n closeIconSize?: number;\n onClose?: () => void;\n}\nexport const Title: React.FC<React.PropsWithChildren<TitleProps>> = ({\n children,\n closeIconSize = 23,\n hasSeparator,\n closeTitle = i18n('button_close'),\n onClose,\n}) => {\n return (\n <div className={b({separator: hasSeparator})}>\n <Text className={b('text')} as={'h3'} variant={'subheader-3'}>\n {children}\n </Text>\n {onClose && (\n <Button\n onClick={onClose}\n view=\"flat\"\n size=\"l\"\n extraProps={{\n 'aria-label': closeTitle,\n }}\n >\n <Icon data={Xmark} size={closeIconSize} />\n </Button>\n )}\n </div>\n );\n};\n\nTitle.displayName = 'Title';\n","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 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","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","const SvgToolsIcon = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}><path fillRule=\"evenodd\" d=\"m.115 2.124 3.119 4.442 1.713-.365 3.721 3.72c-.095.237-.17.507-.191.8-.041.59.148 1.206.684 1.75l2.89 2.94c.254.26.549.423.866.484.311.06.59.012.805-.063a1.9 1.9 0 0 0 .672-.41l.015-.014.005-.006.808-.807.001-.002.002-.002.006-.006.015-.015a2 2 0 0 0 .148-.18 1.9 1.9 0 0 0 .261-.491c.075-.216.124-.494.064-.805a1.65 1.65 0 0 0-.484-.867l-2.94-2.89c-.545-.535-1.16-.724-1.75-.684-.293.02-.564.097-.8.192l-3.72-3.722.365-1.713L1.948.292zm9.858 8.701c.011-.157.07-.33.164-.511.182-.094.354-.153.512-.164.162-.011.356.023.595.257l2.94 2.89a.3.3 0 0 1 .062.08l-.007.028a.4.4 0 0 1-.079.13l-.801.801a.4.4 0 0 1-.159.086.3.3 0 0 1-.08-.062l-2.89-2.94c-.234-.238-.268-.433-.257-.595M3.891 4.892l.68-.145.145-.68-2.599-1.824-.05.05z\" clipRule=\"evenodd\" /><path fillRule=\"evenodd\" d=\"m9.764 6.809 2.815.385 1.7-1.701-.042.162c-.21.735-.61 1.482-1.054 1.926a3.1 3.1 0 0 1-.697.525l1.082 1.1q.348-.237.658-.547c1.342-1.342 2.034-3.997 1.39-4.661a1.36 1.36 0 0 0-1.946-.016l-1.615 1.614-1.046-.143-.241-1.186 1.615-1.615c.542-.542.549-1.428.016-1.979C11.755.01 9.132.67 7.79 2.01a4.7 4.7 0 0 0-.823 1.112l1.124 1.141c.152-.43.4-.833.742-1.175.444-.444 1.186-.839 1.912-1.04l.16-.04-1.759 1.758z\" clipRule=\"evenodd\" /><path d=\"m4.62 7.81.079-.076 1.054 1.072a1 1 0 0 0-.08.074l-3.275 3.329a1.275 1.275 0 0 0 0 1.782c.484.492 1.269.492 1.753 0l3.17-3.222.4 1.732-2.518 2.56a2.696 2.696 0 0 1-3.857 0 2.804 2.804 0 0 1 0-3.921z\" /></svg>;\nexport default SvgToolsIcon;","const SvgPaletteIcon = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}><path d=\"M5 8c0 .563-.469 1-1 1-.562 0-1-.437-1-1 0-.531.438-1 1-1 .531 0 1 .469 1 1M4 5c0-.531.438-1 1-1 .531 0 1 .469 1 1 0 .563-.469 1-1 1-.562 0-1-.437-1-1m5-1c0 .563-.469 1-1 1-.562 0-1-.437-1-1 0-.531.438-1 1-1 .531 0 1 .469 1 1m1 1c0-.531.438-1 1-1 .531 0 1 .469 1 1 0 .563-.469 1-1 1-.562 0-1-.437-1-1m3.781 5H10.75a1.5 1.5 0 0 0-1.5 1.5c0 .125 0 .219.031.313.063.343.188.624.313.937.187.438.406.875.406 1.313 0 1-.687 1.906-1.687 1.937H8c-4.437 0-8-3.562-8-8 0-4.406 3.563-8 8-8 4.406 0 8 3.594 8 8 0 .031-.031.063-.031.094C15.969 9.25 14.938 10 13.78 10m.688-1.906c0-.031.031-.063.031-.094 0-3.562-2.937-6.5-6.5-6.5-3.594 0-6.5 2.938-6.5 6.5 0 3.594 2.906 6.5 6.5 6.5h.313l.062-.062c.063-.063.125-.188.125-.376 0-.03-.031-.156-.187-.53-.032-.032-.032-.063-.063-.126-.125-.312-.344-.781-.437-1.281-.063-.187-.063-.406-.063-.625 0-1.656 1.313-3 3-3h3.031c.25 0 .438-.062.563-.156s.125-.188.125-.25\" /></svg>;\nexport default SvgPaletteIcon;","const SvgCloseTagIcon = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}><path fillRule=\"evenodd\" d=\"M10.218 3.216a.75.75 0 1 0-1.436-.431l-3 10a.75.75 0 0 0 1.436.43zM4.53 4.97a.75.75 0 0 1 0 1.06L2.56 8l1.97 1.97a.75.75 0 0 1-1.06 1.06l-2.5-2.5a.75.75 0 0 1 0-1.06l2.5-2.5a.75.75 0 0 1 1.06 0m6.94 6.06a.75.75 0 0 1 0-1.06L13.44 8l-1.97-1.97a.75.75 0 0 1 1.06-1.06l2.5 2.5a.75.75 0 0 1 0 1.06l-2.5 2.5a.75.75 0 0 1-1.06 0\" clipRule=\"evenodd\" /></svg>;\nexport default SvgCloseTagIcon;","const SvgDataIcon = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}><path fillRule=\"evenodd\" d=\"M11.615 4.888c.814-.375.885-.714.885-.888s-.071-.513-.885-.888C10.8 2.737 9.538 2.5 8 2.5s-2.799.237-3.615.612C3.57 3.487 3.5 3.826 3.5 4s.071.513.885.888C5.2 5.263 6.462 5.5 8 5.5s2.799-.237 3.615-.612m.885 1.235C11.4 6.708 9.792 7 8 7s-3.4-.292-4.5-.877V8c0 .174.071.513.885.888C5.2 9.263 6.462 9.5 8 9.5s2.799-.237 3.615-.612c.814-.375.885-.714.885-.888zm0 4C11.4 10.708 9.792 11 8 11s-3.4-.293-4.5-.877V12c0 .174.071.513.885.887.816.377 2.077.613 3.615.613s2.799-.236 3.615-.613c.814-.374.885-.713.885-.887zM14 4c0-2-2.686-3-6-3S2 2 2 4v8c0 2 2.686 3 6 3s6-1 6-3V4\" clipRule=\"evenodd\" /></svg>;\nexport default SvgDataIcon;","const SvgShieldIcon = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}><path fillRule=\"evenodd\" d=\"m3.003 4.702 4.22-2.025a1.8 1.8 0 0 1 1.554 0l4.22 2.025a.89.89 0 0 1 .503.8V6a8.55 8.55 0 0 1-3.941 7.201l-.986.631a1.06 1.06 0 0 1-1.146 0l-.986-.63A8.55 8.55 0 0 1 2.5 6v-.498c0-.341.196-.652.503-.8m3.57-3.377L2.354 3.35A2.39 2.39 0 0 0 1 5.502V6a10.05 10.05 0 0 0 4.632 8.465l.986.63a2.56 2.56 0 0 0 2.764 0l.986-.63A10.05 10.05 0 0 0 15 6v-.498c0-.918-.526-1.755-1.354-2.152l-4.22-2.025a3.3 3.3 0 0 0-2.852 0M9.5 7a1.5 1.5 0 0 1-.75 1.3v1.95a.75.75 0 0 1-1.5 0V8.3A1.5 1.5 0 1 1 9.5 7\" clipRule=\"evenodd\" /></svg>;\nexport default SvgShieldIcon;","const SvgTableIcon = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}><path fillRule=\"evenodd\" d=\"M4 3.5h1.25v2H2.5V5A1.5 1.5 0 0 1 4 3.5m2.75 2v-2H12A1.5 1.5 0 0 1 13.5 5v.5zM2.5 7h2.75v2H2.5zm0 3.5v.5A1.5 1.5 0 0 0 4 12.5h1.25v-2zm4.25 0v2H12a1.5 1.5 0 0 0 1.5-1.5v-.5zM13.5 9V7H6.75v2zM1 5a3 3 0 0 1 3-3h8a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgTableIcon;","const SvgInfoIcon = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}><path fillRule=\"evenodd\" d=\"M8 13.5a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14m1-9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-.25 3a.75.75 0 0 0-1.5 0V11a.75.75 0 0 0 1.5 0z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgInfoIcon;","const SvgLogoGitlab = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M9.357 7H6.643l1.08 6.267a.28.28 0 0 0 .554 0zM4.511 3.465l-.153-.691a.35.35 0 0 0-.684.007L2.522 8.537a1.14 1.14 0 0 0 .39 1.103l3.11 2.593zm5.466 8.768 3.111-2.593a1.14 1.14 0 0 0 .39-1.103l-1.152-5.756a.35.35 0 0 0-.684-.007l-.153.692zm-8.026-1.44 4.493 3.743a2 2 0 0 0 1.28.464h.552a2 2 0 0 0 1.28-.464l4.493-3.743a2.64 2.64 0 0 0 .9-2.55l-1.152-5.756a1.85 1.85 0 0 0-3.619-.039L9.5 5.5h-3l-.678-3.052a1.85 1.85 0 0 0-3.62.039l-1.15 5.756a2.64 2.64 0 0 0 .9 2.55\" clipRule=\"evenodd\" /></svg>;\nexport default SvgLogoGitlab;","import React, {Component, Fragment} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport {Checkbox, Switch} from '@gravity-ui/uikit';\n\nimport {setSetting} from '../../store/actions/settings';\nimport {makeGetSetting} from '../../store/selectors/settings';\n\nimport './SettingsMenu.scss';\n\nconst b = block('elements-page');\n\nclass SettingsMenuItem extends Component {\n static propTypes = {\n // from connect\n getSetting: PropTypes.func.isRequired,\n setSetting: PropTypes.func.isRequired,\n // from props\n settingName: PropTypes.string.isRequired,\n settingNS: PropTypes.object.isRequired,\n label: PropTypes.string,\n annotation: PropTypes.string,\n annotationHighlight: PropTypes.string,\n\n oneLine: PropTypes.bool,\n\n useSwitch: PropTypes.bool,\n\n qa: PropTypes.string,\n };\n\n render() {\n const {\n annotationHighlight,\n settingName,\n annotation,\n setSetting,\n getSetting,\n settingNS,\n label,\n oneLine,\n useSwitch,\n qa,\n } = this.props;\n const checked = getSetting(settingName, settingNS);\n\n return (\n <div\n className={b('settings-item', {\n size: 's',\n name: settingName,\n 'one-line': oneLine,\n })}\n title={label}\n >\n {useSwitch ? (\n <Switch\n checked={checked}\n onUpdate={(value) => setSetting(settingName, settingNS, value)}\n qa={qa}\n />\n ) : (\n <Checkbox\n content={label}\n checked={checked}\n onUpdate={(value) => setSetting(settingName, settingNS, value)}\n qa={qa}\n />\n )}\n <div className={b('settings-annotation', 'elements-secondary-text')}>\n <span dangerouslySetInnerHTML={{__html: annotation}} />\n {annotationHighlight && (\n <Fragment>\n <br />\n <span\n className={b('settings-annotation-highlight')}\n dangerouslySetInnerHTML={{\n __html: annotationHighlight,\n }}\n />\n </Fragment>\n )}\n </div>\n </div>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n getSetting: makeGetSetting(state),\n };\n}\n\nexport default connect(mapStateToProps, {setSetting})(SettingsMenuItem);\n","import React, {VFC} from 'react';\nimport cn from 'bem-cn-lite';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport RadioButton, {ItemType} from '../../components/RadioButton/RadioButton';\n\nimport {setSetting} from '../../store/actions/settings';\nimport {makeGetSetting} from '../../store/selectors/settings';\nimport type {RootState} from '../../store/reducers';\nimport type {FIX_MY_TYPE} from '../../types';\n\nconst block = cn('elements-page');\n\ninterface BaseProps {\n items: ItemType[];\n name: string;\n heading?: string;\n description?: string;\n convertValue?(value: string): unknown;\n onChange?(value: unknown): void;\n onAfterChange?(): void;\n set(value: unknown): Promise<void>;\n get(): unknown;\n}\n\nexport const SettingsMenuRadioBase = (props: BaseProps) => {\n const {\n name,\n items,\n heading,\n description,\n convertValue = (v) => v,\n onChange,\n onAfterChange,\n set,\n get,\n ...rest\n } = props;\n\n const handleChange = React.useCallback(\n (evt: React.ChangeEvent<HTMLInputElement>) => {\n const value = convertValue(evt.target.value);\n if (onChange) {\n return onChange(value);\n } else {\n const res = set(value);\n if (onAfterChange) {\n onAfterChange();\n }\n return res;\n }\n },\n [convertValue, onChange, set, onAfterChange],\n );\n\n return (\n <div className={block('settings-item')}>\n {heading && <div className={block('settings-radio-heading')}>{heading}</div>}\n\n <RadioButton\n {...rest}\n size=\"m\"\n items={items}\n name={name}\n onChange={handleChange}\n value={String(get())}\n />\n\n {description && (\n <div className={block('settings-description', 'elements-secondary-text')}>\n {description}\n </div>\n )}\n </div>\n );\n};\n\ntype SettingNS = FIX_MY_TYPE;\n\ninterface Props\n extends ConnectedProps<typeof connector>,\n Pick<BaseProps, 'items' | 'heading' | 'description' | 'onAfterChange' | 'convertValue'> {\n settingName: string;\n settingNS: SettingNS;\n onChange?(settingName: string, settingNS: SettingNS, value: unknown): void;\n}\n\nconst SettingsMenuRadio: VFC<Props> = (props) => {\n const {settingName, settingNS, getSetting, setSetting, onChange, ...rest} = props;\n const onChangeHandler = React.useCallback(\n (value: unknown) => {\n if (onChange) onChange(settingName, settingNS, value);\n },\n [onChange, settingNS, settingName],\n );\n const set = React.useCallback(\n (value: unknown) => setSetting(settingName, settingNS, value),\n [setSetting, settingNS, settingName],\n );\n const get = React.useCallback(\n () => getSetting(settingName, settingNS),\n [getSetting, settingNS, settingName],\n );\n return (\n <SettingsMenuRadioBase\n {...rest}\n name={settingName}\n onChange={onChange ? onChangeHandler : undefined}\n set={set}\n get={get}\n />\n );\n};\n\nconst mapStateToProps = (state: RootState) => {\n const getSetting = makeGetSetting(state);\n\n return {\n getSetting,\n };\n};\n\nconst connector = connect(mapStateToProps, {setSetting});\n\nexport default connector(SettingsMenuRadio);\n","import React, {useCallback, useState} from 'react';\nimport cn from 'bem-cn-lite';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\n\nimport {TextInput} from '@gravity-ui/uikit';\n\nimport {setSetting} from '../../store/actions/settings';\nimport {makeGetSetting} from '../../store/selectors/settings';\n\nconst block = cn('elements-page');\n\nSettingsMenuInput.propTypes = {\n // from connect\n getSetting: PropTypes.func.isRequired,\n setSetting: PropTypes.func.isRequired,\n\n // from parent\n settingName: PropTypes.string.isRequired,\n settingNS: PropTypes.object.isRequired,\n\n heading: PropTypes.string,\n description: PropTypes.string,\n placeholder: PropTypes.string,\n validator: PropTypes.func,\n};\n\nfunction SettingsMenuInput({\n getSetting,\n setSetting,\n settingName,\n settingNS,\n heading,\n description,\n placeholder,\n validator,\n}) {\n const initialValue = getSetting(settingName, settingNS);\n const [value, setValue] = useState(initialValue);\n const error = validator?.(value);\n const handleBlur = useCallback(() => {\n if (!error) {\n setSetting(settingName, settingNS, value);\n }\n }, [setSetting, settingName, settingNS, value]);\n\n return (\n <div className={block('settings-item')}>\n {heading && <div className={block('settings-radio-heading')}>{heading}</div>}\n\n <TextInput\n hasClear\n size=\"m\"\n placeholder={placeholder}\n onUpdate={setValue}\n onBlur={handleBlur}\n error={error}\n value={value}\n />\n\n {description && (\n <div className={block('settings-description', 'elements-secondary-text')}>\n {description}\n </div>\n )}\n </div>\n );\n}\n\nconst mapStateToProps = (state) => {\n const getSetting = makeGetSetting(state);\n\n return {\n getSetting,\n };\n};\n\nexport default connect(mapStateToProps, {setSetting})(SettingsMenuInput);\n","import React, {FC, useEffect, useMemo, useState} from 'react';\nimport {Item, SelectSingle} from '../../../../components/Select/Select';\nimport {Button, TextInput} from '@gravity-ui/uikit';\nimport {getVcsTokensAvailability, saveToken} from '../../../../store/actions/query-tracker/vcs';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport './AddVcsTokenForm.scss';\nimport {selectVcsConfig} from '../../../../store/selectors/query-tracker/vcs';\n\nconst block = cn('add-token-form');\n\nexport const AddVcsTokenForm: FC = () => {\n const dispatch = useDispatch();\n const [isSaving, setSaving] = useState(false);\n const [vcs, setVcs] = useState<string | undefined>();\n const [token, setToken] = useState('');\n const config = useSelector(selectVcsConfig);\n\n useEffect(() => {\n dispatch(getVcsTokensAvailability());\n }, [dispatch]);\n\n const handleSave = async () => {\n if (vcs && token) {\n try {\n setSaving(true);\n await dispatch(saveToken(vcs, token));\n } finally {\n setSaving(false);\n setVcs(undefined);\n setToken('');\n }\n }\n };\n\n const items = useMemo(() => {\n return config.reduce<Item[]>((acc, item) => {\n if (item.auth === 'none') return acc;\n\n const {id, name} = item;\n acc.push({value: id, text: name});\n return acc;\n }, []);\n }, [config]);\n\n return (\n <div className={block()}>\n <SelectSingle items={items} value={vcs} onChange={setVcs} hasClear placeholder=\"VCS\" />\n <TextInput placeholder=\"token\" value={token} onUpdate={setToken} hasClear />\n <Button view=\"action\" onClick={handleSave} loading={isSaving}>\n Save\n </Button>\n </div>\n );\n};\n","import React, {FC} from 'react';\nimport Button from '../../../../components/Button/Button';\nimport {Icon} from '@gravity-ui/uikit';\nimport TrashBinIcon from '@gravity-ui/icons/svgs/trash-bin.svg';\nimport './VcsListItem.scss';\nimport cn from 'bem-cn-lite';\n\nconst block = cn('vcs-list-item');\n\ntype Props = {\n name: string;\n vcsId: string;\n onClick: (vcsId: string) => void;\n};\n\nexport const VcsListItem: FC<Props> = ({vcsId, name, onClick}) => {\n const [isSending, setIsSending] = React.useState(false);\n const handleOnClick = async () => {\n setIsSending(true);\n await onClick(vcsId);\n setIsSending(false);\n };\n\n return (\n <div className={block()}>\n <span>{name}</span>{' '}\n <Button onClick={handleOnClick} view=\"flat\" loading={isSending}>\n <Icon data={TrashBinIcon} size={16} />\n </Button>\n </div>\n );\n};\n","import React, {FC, useCallback, useMemo} from 'react';\nimport {VcsListItem} from './VcsListItem';\nimport cn from 'bem-cn-lite';\nimport './VcsList.scss';\nimport {useDispatch} from 'react-redux';\nimport {removeToken} from '../../../../store/actions/query-tracker/vcs';\nimport {VcsConfig} from '../../../../../shared/vcs';\n\nconst block = cn('vcs-list');\n\ntype Props = {\n config: VcsConfig[];\n};\n\nexport const VcsList: FC<Props> = ({config}) => {\n const dispatch = useDispatch();\n\n const handleRemoveToken = useCallback(\n (vcsId: string) => {\n return dispatch(removeToken(vcsId));\n },\n [dispatch],\n );\n\n const items = useMemo(() => {\n return config.reduce<React.ReactNode[]>((acc, {id, name, hasToken}) => {\n if (hasToken)\n acc.push(\n <VcsListItem key={id} vcsId={id} name={name} onClick={handleRemoveToken} />,\n );\n return acc;\n }, []);\n }, [config, handleRemoveToken]);\n\n return (\n <div className={block()}>\n <div>{items}</div>\n </div>\n );\n};\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport './SettingsItemLayout.scss';\n\nconst block = cn('yt-settings-item');\n\nexport type SettingsItemLayotProps = {\n children: React.ReactNode;\n\n title?: string;\n description?: React.ReactNode;\n oneLine?: boolean;\n};\n\nexport function SettingsItemLayot({title, children, description, oneLine}: SettingsItemLayotProps) {\n return (\n <div\n className={block({\n size: 's',\n 'one-line': oneLine,\n })}\n title={title}\n >\n {children}\n <div className={block('annotation', 'elements-secondary-text')}>{description}</div>\n </div>\n );\n}\n","import React, {useEffect, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport block from 'bem-cn-lite';\n\nimport {RadioButton, RadioButtonProps} from '@gravity-ui/uikit';\n\nimport {KeysByType} from '../../../@types/types';\nimport {DescribedSettings} from '../../../shared/constants/settings-types';\nimport SelectFacade, {Item, SelectSingle, YTSelectProps} from '../../components/Select/Select';\nimport {setSettingByKey} from '../../store/actions/settings';\nimport {getSettingsData} from '../../store/selectors/settings/settings-base';\n\nimport {SettingsItemLayot, SettingsItemLayotProps} from './SettingsItemLayout';\n\nimport './SettingsMenu.scss';\n\nconst b = block('elements-page');\n\ntype SettingsMenuSelectOption =\n | {options: Array<{value: string; text: string}>}\n | {getOptionsOnMount: () => Promise<Array<{value: string; text: string}>>};\ntype SettingsMenuSelectProps = {\n placeholder?: string;\n label?: string;\n getSetting: () => string;\n setSetting: (value?: string) => void;\n} & SettingsMenuSelectOption;\n\nexport const SettingsMenuSelect = (props: SettingsMenuSelectProps) => {\n const value = props.getSetting();\n const [items, setItems] = useState('options' in props ? props.options : []);\n\n useEffect(() => {\n if ('getOptionsOnMount' in props) {\n props?.getOptionsOnMount().then((options) => {\n setItems(options);\n });\n }\n }, []);\n\n return (\n <div className={b('settings-item', {select: true})} title={props.label}>\n <SelectSingle\n value={value}\n items={items}\n onChange={(value) => props.setSetting(value)}\n placeholder={props.placeholder}\n width=\"max\"\n />\n </div>\n );\n};\n\ntype SettingMenuSelectByKeyProps<K extends KeysByType<DescribedSettings, string>> = {\n settingKey: K;\n options: Array<Item<DescribedSettings[K]>>;\n description?: React.ReactNode;\n};\n\nexport function SettingMenuSelectByKey<K extends KeysByType<DescribedSettings, string>>({\n settingKey,\n options,\n description,\n}: SettingMenuSelectByKeyProps<K>) {\n const dispatch = useDispatch();\n const value = useSelector(getSettingsData)[settingKey];\n\n return (\n <div className={b('settings-item', {select: true})}>\n <SelectSingle\n value={value}\n items={options}\n onChange={(v) => {\n dispatch(setSettingByKey(settingKey, v as typeof value));\n }}\n width=\"max\"\n />\n {Boolean(description) && (\n <div className=\"elements-page__settings-description elements-secondary-text\">\n {description}\n </div>\n )}\n </div>\n );\n}\n\ntype SettingMenuMultiSelectByKeyProps<K extends KeysByType<DescribedSettings, Array<string>>> = {\n settingKey: K;\n options: Array<Item<DescribedSettings[K][number]>>;\n description?: React.ReactNode;\n};\n\nexport function SettingMenuMultiSelectByKey<\n K extends KeysByType<DescribedSettings, Array<string>>,\n>({\n settingKey,\n options,\n description,\n ...rest\n}: SettingMenuMultiSelectByKeyProps<K> &\n Omit<YTSelectProps<string>, 'value' | 'items' | 'onChange' | 'onUpdate'>) {\n const {value, onUpdate} = useSettingByKey(settingKey);\n\n return (\n <div className={b('settings-item', {select: true})}>\n <SelectFacade\n multiple\n value={value}\n items={options}\n onChange={(v) => onUpdate(v as typeof value)}\n width=\"max\"\n {...rest}\n />\n {Boolean(description) && (\n <div className=\"elements-page__settings-description elements-secondary-text\">\n {description}\n </div>\n )}\n </div>\n );\n}\n\ntype SettingsMenuRadioByKeyProps<K extends KeysByType<DescribedSettings, string>> = Omit<\n SettingsItemLayotProps,\n 'children'\n> & {\n settingKey: K;\n options: RadioButtonProps<DescribedSettings[K]>['options'];\n};\n\nexport function SettingsMenuRadioByKey<K extends KeysByType<DescribedSettings, string>>({\n settingKey,\n options,\n ...rest\n}: SettingsMenuRadioByKeyProps<K>) {\n const {value, onUpdate} = useSettingByKey(settingKey);\n\n return (\n <SettingsItemLayot {...rest}>\n <RadioButton options={options} value={value} onUpdate={onUpdate} />\n </SettingsItemLayot>\n );\n}\n\nfunction useSettingByKey<K extends keyof DescribedSettings>(settingKey: K) {\n const dispatch = useDispatch();\n const value = useSelector(getSettingsData)[settingKey];\n\n return {\n value,\n onUpdate: React.useCallback(\n (v: typeof value) => {\n dispatch(setSettingByKey(settingKey, v));\n },\n [settingKey],\n ),\n };\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Checkbox} from '@gravity-ui/uikit';\n\nimport {DescribedSettings} from '../../../shared/constants/settings-types';\nimport {KeysByType} from '../../../@types/types';\n\nimport {getSettingsData} from '../../store/selectors/settings/settings-base';\nimport {setSettingByKey} from '../../store/actions/settings';\nimport {SettingsItemLayot, SettingsItemLayotProps} from './SettingsItemLayout';\n\nexport type BooleanSettingItemProps<T> = {settingKey: T} & Omit<SettingsItemLayotProps, 'children'>;\n\nexport function BooleanSettingItem<T extends KeysByType<DescribedSettings, boolean>>({\n settingKey,\n ...rest\n}: BooleanSettingItemProps<T>) {\n const dispatch = useDispatch();\n const {[settingKey]: checked} = useSelector(getSettingsData);\n\n return (\n <SettingsItemLayot {...rest}>\n <Checkbox\n content={rest.title}\n checked={Boolean(checked)}\n onUpdate={(value) => {\n dispatch(setSettingByKey(settingKey, value));\n }}\n qa={settingKey}\n />\n </SettingsItemLayot>\n );\n}\n","import {addI18Keysets} from '../../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:settings-queries', {en, ru});\n","import React, {FC} from 'react';\nimport {\n getQueryTrackerInfo,\n setUserDefaultACO,\n} from '../../../store/actions/query-tracker/queryAco';\nimport {Item} from '../../../components/Select/Select';\nimport {SettingsMenuSelect} from '../../SettingsMenu/SettingsMenuSelect';\nimport {useThunkDispatch} from '../../../store/thunkDispatch';\nimport {useSelector} from 'react-redux';\nimport {getDefaultQueryACO} from '../../../store/selectors/query-tracker/queryAco';\n\nexport const DefaultAcoSelect: FC = () => {\n const dispatch = useThunkDispatch();\n const defaultUserACO = useSelector(getDefaultQueryACO);\n\n return (\n <SettingsMenuSelect\n getOptionsOnMount={() =>\n dispatch(getQueryTrackerInfo()).then((data) => {\n return data.access_control_objects.reduce((acc: Item[], item: string) => {\n acc.push({value: item, text: item});\n return acc;\n }, [] as Item[]);\n })\n }\n setSetting={(value) => value && dispatch(setUserDefaultACO(value))}\n getSetting={() => defaultUserACO}\n />\n );\n};\n","import React from 'react';\nimport compact_ from 'lodash/compact';\nimport {BooleanSettingItem} from '../../SettingsMenu/BooleanSettingItem';\nimport {Flex, Text} from '@gravity-ui/uikit';\nimport {\n LazyAddQueryTokenForm,\n LazyQueryTokenList,\n} from '../../../pages/query-tracker/QueryToken/lazy';\nimport {makeItem, makePage} from '../settings-description';\nimport i18n from './i18n';\nimport {DefaultAcoSelect} from './DefaultAcoSelect';\nimport SettingsMenuInput from '../../SettingsMenu/SettingsMenuInput';\nimport {NAMESPACES, SettingName} from '../../../../shared/constants/settings';\n\ntype Props = {\n cluster: string;\n hasQuerySuggestions: boolean;\n};\n\nexport const queriesPage = ({cluster, hasQuerySuggestions}: Props) => {\n return makePage(\n i18n('title_queries'),\n undefined,\n compact_([\n cluster &&\n makeItem('defaultACO', i18n('field_default-aco'), undefined, <DefaultAcoSelect />),\n makeItem(\n SettingName.QUERY_TRACKER.YQL_AGENT_STAGE,\n i18n('field_yql-agent-stage'),\n 'top',\n <SettingsMenuInput\n placeholder={i18n('context_yql-agent-stage-placeholder')}\n settingName={SettingName.QUERY_TRACKER.YQL_AGENT_STAGE}\n settingNS={NAMESPACES.QUERY_TRACKER}\n />,\n ),\n makeItem(\n SettingName.QUERY_TRACKER.STAGE,\n i18n('field_query-tracker-stage'),\n 'top',\n <SettingsMenuInput\n placeholder={i18n('context_query-tracker-stage-placeholder')}\n description={i18n('context_query-tracker-stage-description')}\n settingName={SettingName.QUERY_TRACKER.STAGE}\n settingNS={NAMESPACES.QUERY_TRACKER}\n />,\n ),\n makeItem(\n 'global::queryTracker::useNewGraphView',\n i18n('field_new-graph-progress'),\n 'top',\n <BooleanSettingItem\n settingKey=\"global::queryTracker::useNewGraphView\"\n description={i18n('context_new-graph-progress-description')}\n oneLine\n />,\n ),\n ...(hasQuerySuggestions\n ? [\n makeItem(\n 'global::queryTracker::suggestions',\n i18n('field_query-assistant'),\n 'top',\n <BooleanSettingItem\n settingKey=\"global::queryTracker::suggestions\"\n description={\n <Flex direction=\"column\">\n <div>{i18n('context_query-assistant-description')}</div>\n <Text color=\"secondary\">\n {i18n('context_tab-accept-suggestion')}\n </Text>\n <Text color=\"secondary\">\n {i18n('context_esc-decline-suggestion')}\n </Text>\n </Flex>\n }\n oneLine\n />,\n ),\n ]\n : []),\n makeItem('addQtTokenForm', i18n('title_query-token'), 'top', <LazyAddQueryTokenForm />),\n makeItem('existingQtTokenList', '', 'top', <LazyQueryTokenList />),\n ]),\n );\n};\n","import {addI18Keysets} from '../../../i18n';\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:settings-description', {en, ru});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport {IconProps} from '@gravity-ui/uikit';\n\nimport compact_ from 'lodash/compact';\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\nimport {produce} from 'immer';\n\nimport UIFactory from '../../UIFactory';\n\nimport generalIcon from '../../assets/img/svg/tools-icon.svg';\nimport paletteIcon from '../../assets/img/svg/palette-icon.svg';\nimport closeTagIcon from '../../assets/img/svg/close-tag-icon.svg';\nimport dataIcon from '../../assets/img/svg/data-icon.svg';\nimport systemIcon from '../../assets/img/svg/page-system.svg';\nimport {mastersRadioButtonItems} from '../../constants/system/masters';\nimport operationsIcon from '../../assets/img/svg/page-operations.svg';\nimport componentsIcon from '../../assets/img/svg/page-components.svg';\nimport navigationIcon from '../../assets/img/svg/page-navigation.svg';\nimport shieldIcon from '../../assets/img/svg/shield-icon.svg';\nimport tableIcon from '../../assets/img/svg/table-icon.svg';\nimport infoIcon from '../../assets/img/svg/info-icon.svg';\nimport LogoGitlabIcon from '@gravity-ui/icons/svgs/logo-gitlab.svg';\nimport PencilToSquareIcon from '@gravity-ui/icons/svgs/pencil-to-square.svg';\nimport {useClusterFromLocation} from '../../hooks/use-cluster';\nimport {docsUrl} from '../../config/index';\nimport {uiSettings} from '../../config/ui-settings';\n\nimport ypath from '../../common/thor/ypath';\n\nimport {AGGREGATOR_RADIO_ITEMS} from '../../constants/operations/statistics';\nimport {NAMESPACES, SettingName} from '../../../shared/constants/settings';\nimport {getRecentPagesInfo} from '../../store/selectors/slideoutMenu';\nimport {getCurrentClusterNS} from '../../store/selectors/settings/settings-ts';\nimport SettingsMenuItem from '../../containers/SettingsMenu/SettingsMenuItem';\nimport SettingsMenuRadio from '../../containers/SettingsMenu/SettingsMenuRadio';\nimport SettingsMenuInput from '../SettingsMenu/SettingsMenuInput';\nimport {\n getCurrentUserName,\n getGlobalMasterVersion,\n getGlobalSchedulerVersion,\n getHttpProxyVersion,\n} from '../../store/selectors/global';\nimport {isDeveloperOrWatchMen} from '../../store/selectors/global/is-developer';\nimport {\n cellSizeRadioButtonItems,\n pageSizeRadioButtonItems,\n} from '../../constants/navigation/content/table';\nimport {YT} from '../../config/yt-config';\nimport Link from '../../components/Link/Link';\nimport Button from '../../components/Button/Button';\nimport {AddVcsTokenForm, VcsList} from '../../pages/query-tracker/Vcs/SettingsMenu';\nimport {selectIsVcsVisible, selectVcsConfig} from '../../store/selectors/query-tracker/vcs';\nimport {SettingsMenuRadioByKey} from '../SettingsMenu/SettingsMenuSelect';\nimport {BooleanSettingItem} from '../SettingsMenu/BooleanSettingItem';\nimport {queriesPage} from './queriesPage';\n\nimport i18n from './i18n';\n\nexport interface SettingsPage {\n title: string;\n icon: IconProps;\n sections: Array<SettingsSection>;\n}\n\nexport interface SettingsSection {\n title: string;\n items: Array<SettingsItem>;\n}\n\nexport interface SettingsItem {\n id: string;\n title: string;\n align?: 'top' | 'center';\n content: React.ReactNode;\n}\n\nconst {oauthTokenUrl} = uiSettings;\n\nconst StartPageSettingMemo = React.memo(StartPageSetting);\n\nfunction wrapEscapeText(text: string) {\n return `<span class=\"unipika\"><span class=\"escape\">${text}</span></span>`;\n}\n\nfunction useSettings(cluster: string, isAdmin: boolean): Array<SettingsPage> {\n const clusterNS = useSelector(getCurrentClusterNS);\n\n const httpProxyVersion = useSelector(getHttpProxyVersion);\n const schedulerVersion = useSelector(getGlobalSchedulerVersion);\n const masterVersion = useSelector(getGlobalMasterVersion);\n const vcsConfig = useSelector(selectVcsConfig);\n const isVcsVisible = useSelector(selectIsVcsVisible);\n const hasQuerySuggestions = Boolean(UIFactory.getInlineSuggestionsApi());\n\n return compact_([\n makePage('General', generalIcon, [\n makeItem('startPage', 'Start page', 'top', <StartPageSettingMemo />),\n makeItem(\n 'global::newDashboardPage',\n 'New dashboard page',\n 'top',\n <BooleanSettingItem\n settingKey={'global::newDashboardPage'}\n description={'Enable new dashboard page'}\n oneLine\n />,\n ),\n makeItem(\n SettingName.GLOBAL.AUTO_REFRESH,\n 'Use auto refresh',\n 'top',\n <SettingsMenuItem\n settingName={SettingName.GLOBAL.AUTO_REFRESH}\n settingNS={NAMESPACES.GLOBAL}\n annotation=\"Automatically update pages with highly dynamic content\"\n oneLine={true}\n />,\n ),\n makeItem(\n SettingName.MENU.RECENT_CLUSTER_FIRST,\n 'Use recent clusters',\n 'top',\n <SettingsMenuItem\n settingName={SettingName.MENU.RECENT_CLUSTER_FIRST}\n settingNS={NAMESPACES.MENU}\n annotation={'Recently visited clusters appear at the top of cluster menu.'}\n oneLine\n />,\n ),\n makeItem(\n SettingName.MENU.RECENT_PAGE_FIRST,\n 'Use recent pages',\n 'top',\n <SettingsMenuItem\n settingName={SettingName.MENU.RECENT_PAGE_FIRST}\n settingNS={NAMESPACES.MENU}\n annotation={'Recently visited pages appear at the top of pages menu.'}\n oneLine\n />,\n ),\n ]),\n makePage('Appearance', paletteIcon, [\n makeItem(\n SettingName.GLOBAL.THEME,\n 'Theme',\n 'top',\n <SettingsMenuRadio\n settingName={SettingName.GLOBAL.THEME}\n settingNS={NAMESPACES.GLOBAL}\n items={[\n {value: 'light', text: 'Light'},\n {value: 'dark', text: 'Dark'},\n {value: 'system', text: 'System'},\n ]}\n />,\n ),\n makeItem(\n SettingName.A11Y.USE_SAFE_COLORS,\n 'Contrast',\n 'top',\n <SettingsMenuRadio\n settingName={SettingName.A11Y.USE_SAFE_COLORS}\n settingNS={NAMESPACES.A11Y}\n convertValue={(value) => value === 'true'}\n items={[\n {value: 'false', text: 'Normal'},\n {value: 'true', text: 'High'},\n ]}\n />,\n ),\n {\n id: 'global::maxContentWidth',\n title: 'Content width',\n align: 'top',\n content: (\n <SettingsMenuRadioByKey\n settingKey=\"global::maxContentWidth\"\n options={[\n {value: 'standard', content: 'Standard'},\n {value: 'wide', content: 'Wide'},\n {value: 'maximum', content: 'Maximum'},\n ]}\n />\n ),\n },\n ]),\n makePage(\n 'Development',\n closeTagIcon,\n compact_([\n isAdmin &&\n makeItem(\n SettingName.DEVELOPMENT.REGULAR_USER_UI,\n \"Show regular user's UI\",\n 'top',\n <SettingsMenuItem\n settingName={SettingName.DEVELOPMENT.REGULAR_USER_UI}\n settingNS={NAMESPACES.DEVELOPMENT}\n label={\"Show regular user's UI\"}\n annotation={\n 'There is some difference in UI for development-team and regular users, ' +\n 'enabling of the option allows to see exactly the same what see a regular user.'\n }\n />,\n ),\n isAdmin &&\n makeItem(\n 'global::lang',\n i18n('Language'),\n 'top',\n <SettingsMenuRadioByKey\n settingKey=\"global::lang\"\n options={[\n {value: 'en', content: 'English'},\n {value: 'ru', content: 'Русский'},\n ]}\n />,\n ),\n ]),\n ),\n\n makePage('Data', dataIcon, [\n makeItem(\n SettingName.YSON.FORMAT,\n 'Data format',\n 'top',\n <SettingsMenuRadio\n settingName={SettingName.YSON.FORMAT}\n settingNS={NAMESPACES.YSON}\n items={[\n {\n value: 'yson',\n text: 'YSON',\n },\n {\n value: 'json',\n text: 'JSON',\n },\n {\n value: 'raw-json',\n text: 'Raw JSON',\n },\n ]}\n />,\n ),\n makeItem(\n SettingName.YSON.SHOW_DECODED,\n 'Decode data as UTF8',\n 'top',\n <SettingsMenuItem\n oneLine={true}\n settingName={SettingName.YSON.SHOW_DECODED}\n settingNS={NAMESPACES.YSON}\n annotation={\n 'Attempt to decode UTF-8 strings. Show Unicode symbols upon success and mark ' +\n 'data as binary otherwise.'\n }\n annotationHighlight={\n 'Please note that YSON does not natively support Unicode symbols ' +\n '&mdash; therefore you would not be able to copy-paste presented YSON as is.'\n }\n />,\n ),\n makeItem(\n SettingName.YSON.BINARY_AS_HEX,\n 'Binary as HEX',\n 'top',\n <SettingsMenuItem\n settingName={SettingName.YSON.BINARY_AS_HEX}\n settingNS={NAMESPACES.YSON}\n annotation={\n 'Display binary strings as HEX sequences. Strings that were not decoded as UTF8 are therefore considered binary and ' +\n 'displayed as HEX sequences.'\n }\n oneLine\n />,\n ),\n makeItem(\n SettingName.YSON.ESCAPE_WHITESPACES,\n 'Escape and highlight',\n 'top',\n <SettingsMenuItem\n settingName={SettingName.YSON.ESCAPE_WHITESPACES}\n settingNS={NAMESPACES.YSON}\n annotation={\n `Symbols ${wrapEscapeText('\\\\n')} and ${wrapEscapeText(\n '\\\\t',\n )} will be rendered as escape sequences, whitespaces will be ` +\n 'highlighted as neccessary. Does not affect Raw JSON format.'\n }\n annotationHighlight={\n 'Please note that JSON does not support unescaped control characters ' +\n '&mdash; therefore you would not be able to copy-paste presented JSON as is.'\n }\n oneLine\n />,\n ),\n makeItem(\n SettingName.YSON.COMPACT,\n 'Compact view',\n 'top',\n <SettingsMenuItem\n settingName={SettingName.YSON.COMPACT}\n settingNS={NAMESPACES.YSON}\n annotation={\n 'Single element lists are rendered inline, so are maps with one property. Does ' +\n 'not affect Raw JSON format.'\n }\n oneLine\n />,\n ),\n ]),\n makePage('System', systemIcon, [\n makeItem(\n SettingName.SYSTEM.MASTERS_HOST_TYPE,\n 'Host type of Masters/Schedulers/Controller',\n 'top',\n <SettingsMenuRadio\n description=\"Select the default view of host to display on in the Masters/Schedulers and Controller agents section.\"\n settingName={SettingName.SYSTEM.MASTERS_HOST_TYPE}\n settingNS={NAMESPACES.SYSTEM}\n items={mastersRadioButtonItems}\n />,\n ),\n ]),\n makePage('Operation', operationsIcon, [\n makeItem(\n SettingName.OPERATIONS.STATISTICS_AGGREGATION_TYPE,\n \"Statistic's type\",\n 'top',\n <SettingsMenuRadio\n description=\"Select the default type of job aggregation.\"\n settingName={SettingName.OPERATIONS.STATISTICS_AGGREGATION_TYPE}\n settingNS={NAMESPACES.OPERATIONS}\n items={AGGREGATOR_RADIO_ITEMS}\n />,\n ),\n ]),\n makePage(\n 'Navigation',\n navigationIcon,\n compact_([\n clusterNS &&\n makeItem(\n SettingName.LOCAL.NAVIGATION_DEFAULT_PATH,\n 'Default path',\n 'top',\n <SettingsMenuInput\n placeholder=\"Enter default navigation path...\"\n description=\"Cluster specific path that will be opened by default in the the Navigation page.\"\n validator={navigationPathValidator}\n settingName={SettingName.LOCAL.NAVIGATION_DEFAULT_PATH}\n settingNS={clusterNS}\n />,\n ),\n makeItem(\n SettingName.NAVIGATION.DEFAULT_CHYT_ALIAS,\n 'Default chyt alias',\n 'top',\n <SettingsMenuInput\n placeholder=\"Enter default chyt alias...\"\n description=\"User alias for the YQL Kit default query string in ClickHouse mode.\"\n validator={chytAliasValidator}\n settingName={SettingName.NAVIGATION.DEFAULT_CHYT_ALIAS}\n settingNS={NAMESPACES.NAVIGATION}\n />,\n ),\n makeItem(\n SettingName.NAVIGATION.USE_SMART_SORT,\n 'Use smart sort',\n 'top',\n <SettingsMenuItem\n settingName={SettingName.NAVIGATION.USE_SMART_SORT}\n settingNS={NAMESPACES.NAVIGATION}\n annotation={\n 'Nodes with names that represent dates will be sorted from newest date to ' +\n 'oldest, while other nodes will be sorted alphabetically.'\n }\n oneLine\n />,\n ),\n makeItem(\n SettingName.NAVIGATION.GROUP_NODES,\n 'Group nodes by type',\n 'top',\n <SettingsMenuItem\n settingName={SettingName.NAVIGATION.GROUP_NODES}\n settingNS={NAMESPACES.NAVIGATION}\n annotation={\n 'Nodes will be grouped by type and each type will be sorted independently, ' +\n 'folders first, then tables, then files.'\n }\n oneLine\n />,\n ),\n makeItem(\n SettingName.NAVIGATION.USE_SMART_FILTER,\n 'Use smart filter',\n 'top',\n <SettingsMenuItem\n settingName={SettingName.NAVIGATION.USE_SMART_FILTER}\n settingNS={NAMESPACES.NAVIGATION}\n annotation={'Use logical operators in filter like \"and\" and \"or\"'}\n oneLine\n />,\n ),\n makeItem(\n SettingName.NAVIGATION.ENABLE_PATH_AUTO_CORRECTION,\n 'Path autocorrection',\n 'top',\n <SettingsMenuItem\n settingName={SettingName.NAVIGATION.ENABLE_PATH_AUTO_CORRECTION}\n settingNS={NAMESPACES.NAVIGATION}\n annotation={\n 'Autocorrect erroneous path if possible. ' +\n docsUrl(\n 'For details see ' +\n `<a class=\"link link_theme_normal\" href=\"${UIFactory.docsUrls['faq:enablepathautocorrection']}\" target=\"_blank\">FAQ</a>` +\n '.',\n )\n }\n oneLine\n />,\n ),\n ]),\n ),\n makePageBySections('Components', componentsIcon, [\n {\n title: 'General',\n items: [\n makeItem(\n SettingName.COMPONENTS.ENABLE_SIDE_BAR,\n 'Enable side bar',\n 'top',\n <SettingsMenuItem\n settingName={SettingName.COMPONENTS.ENABLE_SIDE_BAR}\n settingNS={NAMESPACES.COMPONENTS}\n annotation=\"Display node data in the side bar when clicked.\"\n oneLine={true}\n />,\n ),\n ],\n },\n {\n title: 'Memory popup',\n items: [\n makeItem(\n 'global::components::memoryPopupShowAll',\n 'Show empty categories',\n 'top',\n <BooleanSettingItem\n settingKey=\"global::components::memoryPopupShowAll\"\n description=\"Display all memory categories even with 0B\"\n oneLine\n />,\n ),\n ],\n },\n ]),\n\n makePage(\n 'Table',\n tableIcon,\n compact_([\n makeItem(\n SettingName.DEVELOPMENT.YQL_TYPES,\n 'YQL V3 types',\n 'top',\n <SettingsMenuItem\n settingName={SettingName.DEVELOPMENT.YQL_TYPES}\n settingNS={NAMESPACES.DEVELOPMENT}\n qa=\"settings_yql-v3-types\"\n oneLine\n />,\n ),\n makeItem(\n SettingName.NAVIGATION.ROWS_PER_TABLE_PAGE,\n 'Rows per page',\n 'top',\n <SettingsMenuRadio\n description=\"Select the default number of rows to display on one table page.\n The number can be changed for the specific table using table settings button.\"\n settingName={SettingName.NAVIGATION.ROWS_PER_TABLE_PAGE}\n settingNS={NAMESPACES.NAVIGATION}\n items={[\n {\n value: String(10),\n text: '10',\n },\n {\n value: String(50),\n text: '50',\n },\n {\n value: String(100),\n text: '100',\n },\n {\n value: String(200),\n text: '200',\n },\n ]}\n convertValue={Number}\n />,\n ),\n makeItem(\n SettingName.NAVIGATION.MAXIMUM_TABLE_STRING_SIZE,\n 'Cell size limit',\n 'top',\n <SettingsMenuRadio\n description=\"Select the default cell size limit for tables.\n The cell size limit for the specific table can be changed using table settings button.\"\n settingName={SettingName.NAVIGATION.MAXIMUM_TABLE_STRING_SIZE}\n settingNS={NAMESPACES.NAVIGATION}\n items={cellSizeRadioButtonItems}\n convertValue={Number}\n />,\n ),\n makeItem(\n SettingName.NAVIGATION.DEFAULT_TABLE_COLUMN_LIMIT,\n 'Default column limit',\n 'top',\n <SettingsMenuRadio\n description=\"Select the default column limit for tables. In other words, how many columns will be shown\n when no column has even been hidden using ColumnSelector for the particular table or (if table\n similarity is enabled) for the similar table.\"\n settingName={SettingName.NAVIGATION.DEFAULT_TABLE_COLUMN_LIMIT}\n settingNS={NAMESPACES.NAVIGATION}\n items={pageSizeRadioButtonItems}\n convertValue={Number}\n />,\n ),\n makeItem(\n SettingName.NAVIGATION.ENABLE_TABLE_SIMILARITY,\n 'Guess visible columns',\n 'top',\n <SettingsMenuItem\n settingName={SettingName.NAVIGATION.ENABLE_TABLE_SIMILARITY}\n settingNS={NAMESPACES.NAVIGATION}\n annotation={\n 'Use table similarity for guessing visible columns. ' +\n 'Show same visible columns in table A as in table B if these tables are similar ' +\n 'and those columns have been previously set as visible for table B.'\n }\n oneLine\n />,\n ),\n makeItem(\n SettingName.NAVIGATION.TABLE_DISPLAY_RAW_STRINGS,\n 'Allow raw string-values',\n 'top',\n <SettingsMenuItem\n annotation=\"Cells with string values will be displayed without escaping.\"\n settingName={SettingName.NAVIGATION.TABLE_DISPLAY_RAW_STRINGS}\n settingNS={NAMESPACES.NAVIGATION}\n oneLine\n />,\n ),\n ]),\n ),\n\n oauthTokenUrl &&\n makePage('Auth', shieldIcon, [\n makeItem(\n 'oauthToken',\n 'YT OAuth token',\n undefined,\n <Link url={oauthTokenUrl} target=\"_blank\">\n <Button size={'s'}>Show my token</Button>\n </Link>,\n ),\n ]),\n\n isVcsVisible &&\n makePage(\n 'VCS',\n LogoGitlabIcon,\n compact_([\n makeItem(\n 'addTokenForm',\n 'Add or replace token',\n undefined,\n <AddVcsTokenForm />,\n ),\n Boolean(vcsConfig.some((i) => i.hasToken)) &&\n makeItem(\n 'existingTokenList',\n 'Existing tokens',\n undefined,\n <VcsList config={vcsConfig} />,\n ),\n ]),\n ),\n\n makePageBySections('Editor', PencilToSquareIcon, [\n {\n title: 'Visual settings',\n items: [\n makeItem(\n 'global::editor::vimMode',\n 'Vim mode',\n 'top',\n <BooleanSettingItem\n settingKey=\"global::editor::vimMode\"\n description=\"Use monaco vim mode\"\n oneLine\n />,\n ),\n ],\n },\n ]),\n queriesPage({\n cluster,\n hasQuerySuggestions,\n }),\n makePage(\n 'About',\n infoIcon,\n compact_([\n Boolean(cluster) &&\n makeItem('httpProxyVersion', 'HTTP proxy version', undefined, httpProxyVersion),\n Boolean(cluster) &&\n makeItem('schedulerVersion', 'Scheduler version', undefined, schedulerVersion),\n Boolean(cluster) &&\n makeItem('masterVersion', 'Master version', undefined, masterVersion),\n makeItem(\n 'interfaceVersion',\n 'Interface version',\n undefined,\n YT.parameters.interface.version,\n ),\n ]),\n ),\n ]);\n}\n\nexport function makePage(\n title: string,\n icon: IconProps | undefined,\n items: Array<SettingsItem>,\n): SettingsPage {\n return makePageBySections(title, icon, [{title, items}]);\n}\n\nexport function makePageBySections(\n title: string,\n icon: IconProps | undefined,\n sections: Array<SettingsSection>,\n) {\n return {title, icon: icon || generalIcon, sections};\n}\n\nexport function makeItem(\n id: string,\n title: string,\n align?: SettingsItem['align'],\n content?: React.ReactNode,\n): SettingsItem {\n return {id, title, align, content};\n}\n\nexport function useSettingsDescription(): Array<SettingsPage> {\n const isAdmin = useSelector(isDeveloperOrWatchMen) || true;\n const cluster = useClusterFromLocation();\n const login = useSelector(getCurrentUserName);\n\n const settings = useSettings(cluster, isAdmin);\n const externalSettings = UIFactory.getExternalSettings({cluster, isAdmin, login});\n\n const res = React.useMemo(() => {\n const extPages: Record<string, SettingsPage> = hashByTitle(externalSettings);\n return produce(settings, (pages) => {\n forEach_(pages, (page) => {\n const extPage = extPages[page.title];\n if (extPage) {\n delete extPages[page.title];\n const extSections = hashByTitle(extPage.sections);\n forEach_(page.sections, (section) => {\n const s = extSections[section.title];\n if (s) {\n delete extSections[section.title];\n const extIdsMap = new Map(s.items.map((i) => [i.id, i]));\n const newItems = section.items.filter((i) => !extIdsMap.has(i.id));\n section.items = [...newItems, ...s.items];\n }\n });\n forEach_(extSections, (section) => {\n page.sections.push(section);\n });\n }\n });\n forEach_(extPages, (page) => {\n pages.splice(pages.length - 1, 0, page);\n });\n });\n }, [settings, externalSettings]);\n\n return res;\n}\n\nfunction hashByTitle<T extends {title: string}>(data: Array<T>) {\n return reduce_(\n data,\n (acc, item) => {\n acc[item.title] = item;\n return acc;\n },\n {} as Record<string, T>,\n );\n}\n\nfunction StartPageSetting() {\n const {all} = useSelector(getRecentPagesInfo);\n\n const pageItems = React.useMemo(() => {\n const headerPages = filter_(all, (page) => Boolean(page.header));\n return map_(headerPages, (page) => ({\n value: page.id,\n text: page.name,\n }));\n }, [all]);\n\n return (\n <SettingsMenuRadio\n settingName={SettingName.MENU.STARTING_PAGE}\n settingNS={NAMESPACES.MENU}\n items={pageItems}\n />\n );\n}\n\nfunction navigationPathValidator(value = '/') {\n if (!value) {\n return null;\n }\n\n try {\n ypath.YPath.create(value, 'absolute');\n return undefined;\n } catch (err) {\n return (err as Error)?.message || 'invalid path';\n }\n}\n\nfunction chytAliasValidator(value: string) {\n if (!value.startsWith('*') && value.length > 0) {\n return \"The alias should be started with a character '*'\";\n }\n\n return undefined;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport map_ from 'lodash/map';\nimport some_ from 'lodash/some';\n\nimport {Settings} from '@gravity-ui/navigation';\nimport {useSettingsDescription} from './settings-description';\n\nimport './SettingsPanel.scss';\n\nconst block = cn('settings-panel');\n\nfunction iconData(data: any) {\n return {data};\n}\n\nfunction SettingsPanel() {\n const data = useSettingsDescription();\n return (\n <div className={block()}>\n <Settings>\n {map_(data, (page, i) => {\n const hasItems = some_(page.sections, ({items}) => items.length > 0);\n return (\n hasItems && (\n <Settings.Page key={i} title={page.title} icon={iconData(page.icon)}>\n {map_(page.sections, (section, j) => {\n return (\n <Settings.Section key={j} title={section.title}>\n {map_(section.items, (item, k) => {\n return (\n <Settings.Item\n key={k}\n title={item.title}\n align={item.align}\n >\n {item.content}\n </Settings.Item>\n );\n })}\n </Settings.Section>\n );\n })}\n </Settings.Page>\n )\n );\n })}\n </Settings>\n </div>\n );\n}\n\nexport default React.memo(SettingsPanel);\n","import {RootState} from '../../reducers';\nimport {createSelector} from 'reselect';\nimport {getQueryFiles} from './query';\nimport {QueryFile} from '../../../types/query-tracker/api';\n\nexport const selectAddForm = (state: RootState) => state.queryTracker.queryFilesModal.addForm;\nexport const selectFileEditor = (state: RootState) => state.queryTracker.queryFilesModal.fileEditor;\nexport const selectDeletedFiles = (state: RootState) =>\n state.queryTracker.queryFilesModal.deletedFiles;\n\nexport const selectFileEditorConfig = createSelector(\n [selectFileEditor, getQueryFiles, selectDeletedFiles],\n (fileEditor, files, deletedFiles) => {\n const fileArray = fileEditor.fileType === 'file' ? files : deletedFiles;\n\n return {\n fileEditor,\n file: fileArray.find((f: QueryFile) => f.id === fileEditor.fileId),\n };\n },\n);\n\nexport const selectQueryFilesButtonConfig = createSelector(\n [getQueryFiles, selectDeletedFiles, selectAddForm],\n (files, deletedFiles, addForm) => {\n return {\n files,\n deletedFiles,\n addFormOpen: addForm.isOpen,\n addFormType: addForm.type,\n showTabs: files.length > 0 || deletedFiles.length > 0 || addForm.isOpen,\n };\n },\n);\n","import moment from 'moment';\n\nimport {JOIN_MENU_ITEMS, SPLIT_MENU_ITEMS} from '../../constants/index';\nimport {mergeScreen, updateTitle} from '../../store/actions/global';\nimport {setSetting} from '../../store/actions/settings';\nimport {\n getKnownPages,\n getRecentClustersInfo,\n getRecentPagesInfo,\n} from '../../store/selectors/slideoutMenu';\nimport {getMetrics} from '../../common/utils/metrics';\nimport {NAMESPACES, SettingName} from '../../../shared/constants/settings';\nimport {getClusterNS, getLastVisitedTabs} from '../../store/selectors/settings';\nimport {getPath} from '../../../shared/utils/settings';\nimport {getCluster, getCurrentUserName} from '../../store/selectors/global';\n\nfunction getNSName(itemName) {\n return {\n cluster: NAMESPACES.LAST_VISITED_CLUSTER,\n page: NAMESPACES.LAST_VISITED_PAGE,\n }[itemName];\n}\n\nfunction getLastVisitedSettingName(itemName, id) {\n const nsName = getNSName(itemName);\n return getPath(id, nsName);\n}\n\nexport function splitMenuItemsAction(itemName) {\n const collectionName = itemName + 's';\n return (dispatch, getState) => {\n const state = getState();\n const clusters = getRecentClustersInfo(state);\n const pages = getRecentPagesInfo(state);\n const {\n settings: {data},\n } = getState();\n dispatch({\n type: SPLIT_MENU_ITEMS,\n data: {\n collectionName,\n items: collectionName === 'pages' ? pages.all : clusters.all,\n getLastVisitedSetting: (item) => getLastVisitedSettingName(itemName, item.id),\n settings: data,\n currentTime: moment().unix(),\n },\n });\n };\n}\n\nexport function joinMenuItemsAction(collectionName) {\n return {\n type: JOIN_MENU_ITEMS,\n data: collectionName,\n };\n}\n\nexport function trackVisit(itemName, id) {\n return (dispatch) => {\n const ns = getNSName(itemName);\n const currentTime = moment().unix();\n\n dispatch(setSetting(id, ns, currentTime));\n dispatch(splitMenuItemsAction(itemName));\n };\n}\n\nexport function trackPageVisit(page) {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const login = getCurrentUserName(state);\n const known = getKnownPages(state);\n dispatch(trackVisit('page', page));\n dispatch(updateTitle({page: known[page]}));\n\n dispatch(mergeScreen());\n\n window.setTimeout(() => {\n getMetrics().countHit({page, cluster, login});\n }, 200);\n };\n}\n\nexport function trackTabVisit(page, tab) {\n return (dispatch, getState) => {\n const state = getState();\n const clusterNS = getClusterNS(state);\n const lastVisitedTabs = getLastVisitedTabs(state);\n const newLastVisitedTabs = {...lastVisitedTabs, [page]: tab};\n\n dispatch(setSetting(SettingName.LOCAL.LAST_VISITED_TAB, clusterNS, newLastVisitedTabs));\n\n // add metrics there\n };\n}\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import Cookies from 'js-cookie';\n// @ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {Toaster} from '@gravity-ui/uikit';\n\nimport {getWindowStore} from '../store/window-store';\nimport {getClusterConfig, getXsrfCookieName} from '../utils';\nimport {BAN_USER, BLOCK_USER} from '../constants/index';\nimport {YT} from '../config/yt-config';\nimport {getClusterProxy} from '../store/selectors/global';\nimport {getConfigData} from '../config/ui-settings';\nimport unipika from '../common/thor/unipika';\n\nexport function initYTApiClusterParams(cluster: string) {\n const {clusters} = YT;\n const config = getClusterConfig(clusters, cluster);\n\n yt.setup.setGlobalOption('suppressAccessTracking', true);\n yt.setup.setGlobalOption('useEncodedParameters', true);\n yt.setup.setGlobalOption('proxy', getClusterProxy(config));\n\n const allowYtTvm = !getConfigData().ytApiUseCORS;\n\n if (allowYtTvm) {\n config.secure = window.location.protocol === 'https:';\n }\n\n yt.setup.setGlobalOption('useHeavyProxy', false);\n\n yt.setup.setGlobalOption('xsrf', true);\n yt.setup.setGlobalOption('xsrfCookieName', getXsrfCookieName(config.id));\n\n if (typeof config.secure === 'boolean') {\n yt.setup.setGlobalOption('secure', config.secure);\n } else {\n yt.setup.setGlobalOption('secure', true);\n }\n\n yt.setup.setGlobalOption('authentication', {type: config.authentication || 'none'});\n\n yt.subscribe('error', onError);\n}\n\nfunction onError(error: any) {\n const code = error && error.code;\n\n if (code === yt.codes.USER_IS_BANNED) {\n getWindowStore().dispatch({type: BAN_USER});\n } else if (code === yt.codes.USER_EXCEEDED_RPS) {\n getWindowStore().dispatch({type: BLOCK_USER});\n } else if (code == yt.codes.XSRF_TOKEN_EXPIRED) {\n const content = `Your CSRF-token '${getToken()}' has expired. Please reaload the page`;\n console.log(content);\n\n new Toaster().add({\n name: 'xsrf-expired',\n theme: 'info',\n autoHiding: false,\n title: 'CSRF-toke expired',\n content: content,\n });\n }\n}\n\nfunction getToken() {\n const cluster = YT.cluster;\n const tokenName = cluster && getXsrfCookieName(cluster);\n return tokenName && Cookies.get(tokenName);\n}\n\nconst secureDecoding = (value: string) => {\n try {\n return unipika.decode(value);\n } catch (e) {\n return value;\n }\n};\n\nexport const JSONSerializer = {\n stringify(data: unknown) {\n return JSON.stringify(data);\n },\n parse(data: string) {\n return JSON.parse(data, (_, value) => {\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n return Object.keys(value).reduce<Record<any, any>>((acc, k) => {\n acc[secureDecoding(k)] =\n typeof value[k] === 'string' ? secureDecoding(value[k]) : value[k];\n\n return acc;\n }, {});\n }\n\n return value;\n });\n },\n};\n","import {AnyAction} from 'redux';\nimport {ThunkAction} from 'redux-thunk';\nimport {Toaster} from '@gravity-ui/uikit';\nimport type {AxiosError} from 'axios';\nimport {YTApiId, ytApiV4Id} from '../../../rum/rum-wrap-api';\nimport {\n getEffectiveApiStage,\n getQueryTrackerRequestOptions,\n} from '../../selectors/query-tracker/query';\nimport {showErrorPopup} from '../../../utils/utils';\nimport {QUERY_ACO_LOADING, QueryACOActions} from '../../reducers/query-tracker/queryAco';\nimport {RootState} from '../../reducers';\nimport {setSettingByKey} from '../settings';\n\ntype QueryTrackerInfoResponse = Awaited<ReturnType<typeof ytApiV4Id.getQueryTrackerInfo>>;\n\nexport const getQueryTrackerInfo = (): ThunkAction<\n Promise<QueryTrackerInfoResponse>,\n any,\n any,\n QueryACOActions\n> => {\n return (dispatch, getState) => {\n const state = getState();\n const {stage} = getQueryTrackerRequestOptions(state);\n\n dispatch({type: QUERY_ACO_LOADING.REQUEST});\n\n return ytApiV4Id\n .getQueryTrackerInfo(YTApiId.getQueryTrackerInfo, {\n setup: {\n transformError({\n parsedData,\n rawError,\n }: {\n parsedData: Awaited<ReturnType<typeof ytApiV4Id.getQueryTrackerInfo>>;\n rawError: AxiosError;\n }) {\n if (rawError?.response?.status === 404) {\n throw {\n data: parsedData,\n status: rawError?.response?.status,\n };\n }\n\n throw parsedData;\n },\n },\n parameters: {stage},\n })\n .then((data) => {\n dispatch({\n type: QUERY_ACO_LOADING.SUCCESS,\n data: {data},\n });\n\n return data;\n })\n .catch((error) => {\n // @todo Remove the condition when the method will be implemented on all clusters\n if (error?.status !== 404) {\n const toaster = new Toaster();\n toaster.add({\n name: 'aco',\n theme: 'danger',\n title: 'Failed to load ACO',\n content: error?.message,\n actions: [{label: ' Details', onClick: () => showErrorPopup(error)}],\n });\n }\n\n dispatch({\n type: QUERY_ACO_LOADING.FAILURE,\n });\n });\n };\n};\n\nexport function setUserDefaultACO(\n aco: string,\n): ThunkAction<Promise<any>, RootState, any, AnyAction> {\n return async (dispatch, getState) => {\n const state = getState();\n const stage = getEffectiveApiStage(state);\n\n await dispatch(setSettingByKey(`qt-stage::${stage}::queryTracker::defaultACO`, aco));\n };\n}\n","import * as React from 'react';\nexport const TabsContext = React.createContext({\n activeTabId: undefined,\n});\nTabsContext.displayName = 'TabsContext';\n","'use client';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { Label } from '../Label';\nimport { block } from '../utils/cn';\nimport { TabsContext } from './TabsContext';\nconst b = block('tabs');\nexport function TabsItem({ id, className, title, meta, hint, icon, counter, label, active, disabled, hasOverflow, extraProps, onClick, qa, }) {\n const { activeTabId } = React.useContext(TabsContext);\n const isActive = typeof active === 'boolean' ? active : activeTabId === id;\n const handleClick = () => {\n onClick(id);\n };\n const handleKeyDown = (event) => {\n if (event.key === ' ') {\n onClick(id);\n }\n };\n const htmlTitle = React.useMemo(() => {\n if (hint !== undefined) {\n return hint;\n }\n if (typeof title === 'string') {\n return title;\n }\n return undefined;\n }, [hint, title]);\n return (_jsxs(\"div\", Object.assign({}, extraProps, { role: \"tab\", \"aria-selected\": isActive, \"aria-disabled\": disabled === true, tabIndex: disabled ? -1 : 0, className: b('item', { active: isActive, disabled, overflow: Boolean(hasOverflow) }, className), title: htmlTitle, onClick: handleClick, onKeyDown: handleKeyDown, \"data-qa\": qa, children: [_jsxs(\"div\", { className: b('item-content'), children: [icon && _jsx(\"div\", { className: b('item-icon'), children: icon }), _jsx(\"div\", { className: b('item-title'), children: title || id }), counter !== undefined && _jsx(\"div\", { className: b('item-counter'), children: counter }), label && (_jsx(Label, { className: b('item-label'), theme: label.theme, children: label.content }))] }), meta && _jsx(\"div\", { className: b('item-meta'), children: meta })] })));\n}\nTabsItem.displayName = 'Tabs.Item';\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { block } from '../utils/cn';\nimport { TabsContext } from './TabsContext';\nimport { TabsItem } from './TabsItem';\nimport './Tabs.css';\nconst b = block('tabs');\nexport var TabsDirection;\n(function (TabsDirection) {\n TabsDirection[\"Horizontal\"] = \"horizontal\";\n TabsDirection[\"Vertical\"] = \"vertical\";\n})(TabsDirection || (TabsDirection = {}));\nconst getActiveTabId = (activeTab, allowNotSelected, items) => {\n var _a;\n if (activeTab) {\n return activeTab;\n }\n if (allowNotSelected || (items === null || items === void 0 ? void 0 : items.length) === 0) {\n return undefined;\n }\n return (_a = items === null || items === void 0 ? void 0 : items[0]) === null || _a === void 0 ? void 0 : _a.id;\n};\nconst emptyTabsList = [];\nconst TabsComponent = React.forwardRef(({ direction = TabsDirection.Horizontal, size = 'm', activeTab, allowNotSelected = false, items = emptyTabsList, children, className, onSelectTab, wrapTo, qa, }, ref) => {\n const activeTabId = getActiveTabId(activeTab, allowNotSelected, items);\n const tabsContextValue = React.useMemo(() => ({ activeTabId }), [activeTabId]);\n const tabs = React.useMemo(() => {\n const handleTabClick = (tabId) => {\n if (onSelectTab) {\n onSelectTab(tabId);\n }\n };\n return items.map((item, index) => {\n const tabItemNode = _jsx(TabsItem, Object.assign({}, item, { onClick: handleTabClick }), item.id);\n if (wrapTo) {\n return wrapTo(item, tabItemNode, index);\n }\n return tabItemNode;\n });\n }, [items, onSelectTab, wrapTo]);\n return (_jsx(\"div\", { role: \"tablist\", className: b({ direction, size }, className), \"data-qa\": qa, ref: ref, children: _jsx(TabsContext.Provider, { value: tabsContextValue, children: children || tabs }) }));\n});\nTabsComponent.displayName = 'Tabs';\nexport const Tabs = Object.assign(TabsComponent, { Item: TabsItem });\n","import React from 'react';\nimport withLazyLoading from '../../../hocs/withLazyLoading';\n\nfunction importComponents() {\n return import(/* webpackChunkName: \"yt-query-token\" */ './index');\n}\n\nexport const LazyAddQueryTokenForm = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importComponents()).AddQueryTokenFormButton};\n }),\n);\n\nexport const LazyQueryTokenList = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importComponents()).QueryTokenTable};\n }),\n);\n\nexport const LazyQueryTokenButton = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importComponents()).QueryTokenButton};\n }),\n);\n","export const VisibleHostType = {\n host: 'host',\n physicalHost: 'physicalHost',\n};\n\nexport const mastersRadioButtonItems = [\n {value: VisibleHostType.host, text: 'Container'},\n {value: VisibleHostType.physicalHost, text: 'Host'},\n];\n","const SvgPencilToSquare = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M6.169 6.331a3 3 0 0 0-.833 1.6l-.338 1.912a1 1 0 0 0 1.159 1.159l1.912-.338a3 3 0 0 0 1.6-.833l3.07-3.07 2-2A.9.9 0 0 0 15 4.13 3.13 3.13 0 0 0 11.87 1a.9.9 0 0 0-.632.262l-2 2zm3.936-1.814L7.229 7.392a1.5 1.5 0 0 0-.416.8L6.6 9.4l1.208-.213.057-.01a1.5 1.5 0 0 0 .743-.406l2.875-2.876a1.63 1.63 0 0 0-1.378-1.378m2.558.199a3.14 3.14 0 0 0-1.379-1.38l.82-.82a1.63 1.63 0 0 1 1.38 1.38zM8 2.25a.75.75 0 0 0-.75-.75H4.5a3 3 0 0 0-3 3v7a3 3 0 0 0 3 3h7a3 3 0 0 0 3-3V8.75a.75.75 0 0 0-1.5 0v2.75a1.5 1.5 0 0 1-1.5 1.5h-7A1.5 1.5 0 0 1 3 11.5v-7A1.5 1.5 0 0 1 4.5 3h2.75A.75.75 0 0 0 8 2.25\" clipRule=\"evenodd\" /></svg>;\nexport default SvgPencilToSquare;","'use client';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { useCheckbox } from '../../hooks/private';\nimport { ControlLabel } from '../ControlLabel';\nimport { block } from '../utils/cn';\nimport './Switch.css';\nconst b = block('switch');\nexport const Switch = React.forwardRef(function Switch(props, ref) {\n const { size = 'm', disabled = false, content, children, title, style, className, qa } = props;\n const { checked, inputProps } = useCheckbox(Object.assign(Object.assign({}, props), { controlProps: Object.assign(Object.assign({}, props.controlProps), { role: 'switch' }) }));\n const text = content || children;\n const control = (_jsxs(\"span\", { className: b('indicator'), children: [_jsx(\"input\", Object.assign({}, inputProps, { className: b('control') })), _jsx(\"span\", { className: b('outline') }), _jsx(\"span\", { className: b('slider') })] }));\n return (_jsx(ControlLabel, { ref: ref, title: title, style: style, size: size, disabled: disabled, className: b({\n size,\n disabled,\n checked,\n }, className), labelClassName: b('text'), qa: qa, control: control, children: text }));\n});\n","import axios, {AxiosResponse} from 'axios';\n\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport Cookies from 'js-cookie';\n\nimport ypath from '../../common/thor/ypath';\nimport {checkIsDeveloper} from '../../../shared/utils/check-permission';\nimport {INIT_CLUSTER_PARAMS, PRELOAD_ERROR, UPDATE_CLUSTER} from '../../constants/index';\nimport {getCurrentUserName} from '../../store/selectors/global';\nimport {getXsrfCookieName} from '../../utils';\nimport {RESET_STORE_BEFORE_CLUSTER_CHANGE} from '../../constants/utils';\nimport {\n isRecentClustersFirst,\n isRecentPagesFirst,\n isRedirectToBetaSwitched,\n shouldUsePreserveState,\n} from '../../store/selectors/settings';\nimport {rumLogError} from '../../rum/rum-counter';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {RumWrapper, YTApiId} from '../../rum/rum-wrap-api';\nimport {RumMeasureTypes} from '../../rum/rum-measure-types';\nimport {getBatchError, wrapApiPromiseByToaster} from '../../utils/utils';\nimport {BatchResultsItem, RawVersion} from '../../../shared/yt-types';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../store/reducers';\nimport {YT} from '../../config/yt-config';\nimport {GLOBAL_PARTIAL} from '../../constants/global';\nimport {FIX_MY_TYPE, YTError} from '../../../@types/types';\nimport {initYTApiClusterParams} from '../../common/yt-api';\nimport {NAMESPACES, SettingName} from '../../../shared/constants/settings';\nimport {updateTitle} from './global';\nimport {reloadUserSettings, setSetting} from './settings';\nimport {joinMenuItemsAction, splitMenuItemsAction, trackVisit} from './menu';\n\nfunction handleUiConfigError(path: string, error: any, type?: string) {\n rumLogError(\n {\n level: 'warn',\n type,\n message: `${path} cannot be loaded, some ui features might be not available`,\n block: path,\n },\n error,\n );\n}\n\nconst toast = new Toaster();\n\nexport function prepareClusterUiConfig(uiConfig: BatchResultsItem, uiDevConfig: BatchResultsItem) {\n if (uiConfig.error && uiConfig.error.code !== yt.codes.NODE_DOES_NOT_EXIST) {\n handleUiConfigError('//sys/@ui_config', uiConfig.error);\n toast.add({\n name: 'get-ui_config',\n theme: 'danger',\n autoHiding: false,\n title: 'Failed to load //sys/@ui_config',\n content:\n 'Some UI features might be not available. ' +\n 'Try to reload the page. ' +\n 'If the problem persists please report it via Bug Reporter.',\n });\n }\n if (uiDevConfig.error && uiDevConfig.error.code !== yt.codes.NODE_DOES_NOT_EXIST) {\n handleUiConfigError('//sys/@ui_config_dev_overrides', uiDevConfig.error);\n }\n return [uiConfig.output || {}, uiDevConfig.output || {}];\n}\n\ntype GlobalThunkAction<T = unknown> = ThunkAction<T, RootState, any, FIX_MY_TYPE>;\n\nexport function getClusterParams(\n rumId: RumWrapper<typeof RumMeasureTypes.CLUSTER_PARAMS>,\n cluster: string,\n) {\n return wrapApiPromiseByToaster(\n rumId.fetch(\n YTApiId.clusterParams,\n axios.request({\n url: '/api/cluster-params/' + cluster,\n method: 'GET',\n }),\n ),\n {\n skipSuccessToast: true,\n toasterName: 'cluster_initialization_failure',\n errorTitle: 'Cluster initialization failure',\n errorContent: 'An error occured',\n },\n );\n}\n\nexport function initClusterParams(cluster: string): GlobalThunkAction<Promise<void>> {\n return (dispatch, getState) => {\n initYTApiClusterParams(cluster);\n\n dispatch({\n type: INIT_CLUSTER_PARAMS.REQUEST,\n });\n\n const login = getCurrentUserName(getState());\n const rumId = new RumWrapper(cluster, RumMeasureTypes.CLUSTER_PARAMS);\n\n return getClusterParams(rumId, cluster)\n .then(({data}) => {\n const {mediumList, schedulerVersion, masterVersion, uiConfig, uiDevConfig} = data;\n const error = getBatchError([mediumList], 'Cluster initialization failure');\n if (error) {\n throw error;\n }\n const [uiConfigOutput, uiDevConfigOutput] = prepareClusterUiConfig(\n uiConfig,\n uiDevConfig,\n );\n dispatch({\n type: INIT_CLUSTER_PARAMS.SUCCESS,\n data: {\n cluster,\n mediumList: ypath.getValue(mediumList.output),\n isDeveloper: false,\n clusterUiConfig: uiConfigOutput,\n schedulerVersion: schedulerVersion.output,\n masterVersion: masterVersion.output,\n },\n });\n\n return rumId\n .fetch(\n YTApiId.clusterParamsIsDeveloper,\n checkIsDeveloper(login, undefined, YTApiId.clusterParamsIsDeveloper),\n )\n .then((isDeveloper) => {\n if (isDeveloper) {\n const clusterUiConfig = isDeveloper\n ? Object.assign({}, uiConfigOutput, uiDevConfigOutput)\n : uiConfigOutput;\n dispatch({type: GLOBAL_PARTIAL, data: {isDeveloper, clusterUiConfig}});\n }\n })\n .catch((e) => {\n console.error('Failed to check if current user is admin', e);\n });\n })\n .catch((e) => {\n dispatch({\n type: INIT_CLUSTER_PARAMS.FAILURE,\n data: e,\n });\n });\n };\n}\n\nfunction initClusterAndUserSettingsAfterClusterChanging(params: {\n cluster: string;\n login: string;\n}): GlobalThunkAction<Promise<void>> {\n return async (dispatch, getState) => {\n await dispatch(initClusterParams(params.cluster));\n await dispatch(updateTitle({cluster: params.cluster, path: '', page: ''}));\n await dispatch(reloadUserSettings(params.login));\n\n const state = getState();\n // todo: get rid of redirectToBetaSwitched setting.\n // It`s exist for set default value of redirectToBeta setting, when settings document is empty yet.\n // Set redirectToBeta on server after get all user settings (home.js). Or get rid of this logic at all.\n if (!isRedirectToBetaSwitched(state)) {\n dispatch(\n setSetting(\n SettingName.DEVELOPMENT.REDIRECT_TO_BETA_SWITCHED,\n NAMESPACES.DEVELOPMENT,\n true,\n ),\n );\n dispatch(\n setSetting(SettingName.DEVELOPMENT.REDIRECT_TO_BETA, NAMESPACES.DEVELOPMENT, true),\n );\n }\n\n if (isRecentClustersFirst(state)) {\n dispatch(splitMenuItemsAction('cluster'));\n } else {\n dispatch(joinMenuItemsAction('clusters'));\n }\n\n if (isRecentPagesFirst(state)) {\n dispatch(splitMenuItemsAction('page'));\n } else {\n dispatch(joinMenuItemsAction('pages'));\n }\n\n dispatch(trackVisit('cluster', params.cluster));\n };\n}\ninterface ClusterInfoData {\n version?: RawVersion;\n versionError?: YTError;\n token?: {\n login: string;\n csrf_token?: string;\n };\n tokenError?: YTError;\n}\n\nlet count = 0;\nexport function updateCluster(cluster: string): GlobalThunkAction {\n return (dispatch, getState) => {\n const dispatchError = (error: any) => {\n if (error instanceof Error) {\n console.error(error);\n }\n dispatch({\n type: UPDATE_CLUSTER.FAILURE,\n data: {error: error?.response?.data || error},\n });\n };\n\n dispatch({\n type: UPDATE_CLUSTER.REQUEST,\n });\n\n const rumId = new RumWrapper(cluster, RumMeasureTypes.CLUSTER_PARAMS);\n return rumId\n .fetch<AxiosResponse<ClusterInfoData>>(\n YTApiId.ui_clusterInfo,\n axios.request({\n url: '/api/cluster-info/' + cluster,\n method: 'GET',\n }),\n )\n .then(({data}) => {\n const {token, tokenError, version, versionError} = data;\n\n if (count++) {\n dispatch({\n type: RESET_STORE_BEFORE_CLUSTER_CHANGE,\n data: {\n shouldUsePreserveState: shouldUsePreserveState(getState()),\n },\n });\n }\n\n if (!version || versionError) {\n dispatch({\n type: UPDATE_CLUSTER.FAILURE,\n data: {errorType: PRELOAD_ERROR.CONNECTION, error: versionError},\n });\n } else {\n dispatch({\n type: UPDATE_CLUSTER.SUCCESS,\n data: {version},\n });\n\n YT.parameters.version = version;\n YT.cluster = cluster;\n\n if (!token?.csrf_token || tokenError) {\n Cookies.remove(getXsrfCookieName(cluster));\n dispatch({\n type: UPDATE_CLUSTER.FAILURE,\n data: {\n errorType: PRELOAD_ERROR.AUTHENTICATION,\n error: tokenError || new Error('Failed to get CSRF-token'),\n },\n });\n } else {\n const {login, csrf_token} = token;\n YT.parameters.login = login;\n dispatch({type: GLOBAL_PARTIAL, data: {login}});\n Cookies.set(getXsrfCookieName(cluster), csrf_token);\n\n return dispatch(\n initClusterAndUserSettingsAfterClusterChanging({cluster, login}),\n )\n .then(() =>\n dispatch({\n type: UPDATE_CLUSTER.FINAL_SUCCESS,\n }),\n )\n .catch(dispatchError);\n }\n }\n\n return Promise.resolve();\n })\n .catch(dispatchError);\n };\n}\n\nexport function unmountCluster(): GlobalThunkAction {\n return (dispatch) => {\n YT.parameters.version = '';\n YT.cluster = '';\n\n dispatch({\n type: GLOBAL_PARTIAL,\n data: {\n cluster: undefined,\n },\n });\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport PropTypes from 'prop-types';\n\nimport hammer from '../../common/hammer';\nimport Icon from '../Icon/Icon';\nimport {RadioButton, RadioButtonProps} from '@gravity-ui/uikit';\n\ninterface Props<T extends string = string> extends RadioButtonProps<T> {\n items: Array<ItemType<T>>;\n}\n\nexport interface ItemType<T extends string = string> {\n icon?: any;\n text: string;\n value: T;\n}\n\nconst block = cn('elements-radiobutton');\n\nexport default class CustomRadioButton<T extends string = string> extends React.Component<\n Props<T>\n> {\n static propTypes = {\n value: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape({value: PropTypes.string})),\n };\n\n static prepareSimpleValue(value: Props['value']) {\n if (value === undefined || value === null) {\n throw new Error('CustomRadioButton: unexpected value');\n }\n return {\n value: value,\n text: hammer.format['ReadableField'](value),\n };\n }\n\n render() {\n const {items, className, ...props} = this.props;\n\n return (\n <RadioButton {...props} className={block(null, className)}>\n {items.map((option) => (\n <RadioButton.Option {...option} key={option.value}>\n {option.icon && <Icon {...option.icon} />}\n {option.text || ' '}{' '}\n {/* XXX whitespace helps render single icon correctly */}\n </RadioButton.Option>\n ))}\n </RadioButton>\n );\n }\n}\n"],"names":["RumMeasureTypes","CLUSTER_PARAMS","ACCOUNTS","NAVIGATION_PRELOAD","NAVIGATION_CONTENT_DOCUMENT","NAVIGATION_CONTENT_FILE","NAVIGATION_CONTENT_LINK","NAVIGATION_CONTENT_MAP_NODE","NAVIGATION_CONTENT_REPLICATED_TABLE","NAVIGATION_CONTENT_TABLE_STATIC","NAVIGATION_CONTENT_TABLE_DYNAMIC","NAVIGATION_CONTENT_TRANSACTION","NAVIGATION_CONTENT_TRANSACTION_MAP","NAVIGATION_TAB_ACL","NAVIGATION_TAB_ACL_ACCESS","NAVIGATION_TAB_ANNOTATION","NAVIGATION_TAB_ATTRIBUTES","NAVIGATION_TAB_USER_ATTRIBUTES","NAVIGATION_TAB_LOCKS","NAVIGATION_TAB_SCHEMA","NAVIGATION_TAB_TABLETS","NAVIGATION_TAB_TABLET_ERRORS","OPERATIONS_LIST","OPERATION","OPERATION_TAB_DETAILS","OPERATION_TAB_ATTRIBUTES","OPERATION_TAB_SPECIFICATION","OPERATION_TAB_STATISTICS","OPERATION_TAB_MONITOR","OPERATION_TAB_PARTITION_SIZES","OPERATION_TAB_JOB_SIZES","OPERATION_TAB_JOBS","SCHEDULING","SCHEDULING_OVERVIEW","SCHEDULING_DETAILS","SCHEDULING_MONITOR","SCHEDULING_ACL","YQL_KIT_WIDGET","addComponentKeysets","en","ru","N","b","Title","children","closeIconSize","hasSeparator","closeTitle","i18n","onClose","React","className","separator","Text","as","variant","Button","onClick","view","size","extraProps","Icon","I","data","Xmark","useStableCallback","func","funcRef","current","undefined","args","escapeStringForRegExp","input","replace","getSettingsFromChildren","searchText","preparedFilter","getSettingsFromChildrenRecursive","RegExp","basepath","filterRe","menu","pages","hasGroup","hasItems","forEach","element","type","menuFragment","pagesFragment","props","push","Object","assign","groupTitle","pageId","id","items","title","getSettingsPageFromChildren","icon","withBadge","disabled","hidden","page","sections","showTitle","getSettingsItemsFromChildren","fragmentItems","item","test","displayName","context","SettingsSelectionContextProvider","Provider","value","SettingsMenu","onChange","activeItemId","ref","focusItemId","setFocusId","containerRef","handleChange","getFocused","useCurrent","handleKeyDown","event","focused","key","focusNext","clearFocus","map","firstLevelItem","renderMenuItem","selected","badge","container","direction","elements","querySelectorAll","length","currentIndex","Array","prototype","findIndex","call","getAttribute","SettingsMenuMobile","tabItems","onTouchMove","e","stopPropagation","Tabs","activeTab","onSelectTab","SettingsSearch","initialValue","debounce","inputRef","inputSize","placeholder","autoFocus","setValue","onChangeDebounced","debounceFn","handleUpdate","updated","TextInput","controlRef","hasClear","onUpdate","controlProps","SettingsContext","useSettingsContext","Settings","loading","renderLoading","renderRightAdornment","renderSectionRightAdornment","showRightAdornmentOnHover","Loader","SettingsContent","getPageTitleById","activePage","firstLevel","secondLevel","initialPage","initialSearch","selection","renderNotFound","filterPlaceholder","emptyPlaceholder","onPageChange","search","setSearch","selectedRef","settingId","section","values","setting","getSelectedSettingsPart","useSettingsSelectionProviderValue","pageKeys","keys","selectionInitialPage","includes","selectedPage","setCurrentPage","searchInputRef","menuRef","isMobile","handler","window","addEventListener","removeEventListener","find","handlePageChange","newPage","prevPage","scrollIntoView","focus","onKeyDown","preventDefault","filteredSections","filter","isSelected","isSectionSelected","Flex","gap","alignItems","header","settingTitle","highlightedTitle","prepareTitle","renderSetting","renderSection","renderPageContent","string","temp","slice","parts","split","Boolean","part","match","exec","m","i","index","Group","Page","Section","Item","labelId","align","renderTitleComponent","identity","mode","description","isSettingSelected","titleNode","_jsxs","_objectSpread","xmlns","fill","viewBox","_jsx","fillRule","d","clipRule","block","SettingsMenuItem","_Component","_classCallCheck","_callSuper","arguments","_inherits","_createClass","_this$props","this","annotationHighlight","settingName","annotation","setSetting","getSetting","settingNS","label","oneLine","useSwitch","qa","checked","name","Switch","Checkbox","content","dangerouslySetInnerHTML","__html","Fragment","Component","connect","state","makeGetSetting","cn","SettingsMenuRadioBase","heading","_props$convertValue","convertValue","v","onAfterChange","set","get","rest","_objectWithoutProperties","_excluded","evt","target","res","RadioButton","String","_excluded2","onChangeHandler","_ref","validator","_useState","useState","_useState2","_slicedToArray","error","handleBlur","useCallback","onBlur","AddVcsTokenForm","dispatch","useDispatch","isSaving","setSaving","_useState3","_useState4","vcs","setVcs","_useState5","_useState6","token","setToken","config","useSelector","selectVcsConfig","useEffect","getVcsTokensAvailability","handleSave","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","saveToken","finish","stop","apply","useMemo","reduce","acc","auth","text","SelectSingle","VcsListItem","vcsId","_React$useState","_React$useState2","isSending","setIsSending","handleOnClick","_ref2","TrashBinIcon","VcsList","handleRemoveToken","removeToken","hasToken","SettingsItemLayot","SettingsMenuSelect","options","setItems","getOptionsOnMount","then","select","width","SettingsMenuRadioByKey","_ref3","settingKey","_useSettingByKey2","getSettingsData","setSettingByKey","useSettingByKey","BooleanSettingItem","addI18Keysets","DefaultAcoSelect","useThunkDispatch","defaultUserACO","getDefaultQueryACO","getQueryTrackerInfo","access_control_objects","setUserDefaultACO","queriesPage","cluster","hasQuerySuggestions","makePage","compact_","makeItem","SettingName","QUERY_TRACKER","YQL_AGENT_STAGE","SettingsMenuInput","NAMESPACES","STAGE","concat","_toConsumableArray","color","LazyAddQueryTokenForm","LazyQueryTokenList","oauthTokenUrl","uiSettings","StartPageSettingMemo","StartPageSetting","wrapEscapeText","useSettings","isAdmin","clusterNS","getCurrentClusterNS","httpProxyVersion","getHttpProxyVersion","schedulerVersion","getGlobalSchedulerVersion","masterVersion","getGlobalMasterVersion","vcsConfig","isVcsVisible","selectIsVcsVisible","UIFactory","getInlineSuggestionsApi","generalIcon","GLOBAL","AUTO_REFRESH","MENU","RECENT_CLUSTER_FIRST","RECENT_PAGE_FIRST","paletteIcon","THEME","SettingsMenuRadio","A11Y","USE_SAFE_COLORS","closeTagIcon","DEVELOPMENT","REGULAR_USER_UI","dataIcon","YSON","FORMAT","SHOW_DECODED","BINARY_AS_HEX","ESCAPE_WHITESPACES","COMPACT","systemIcon","SYSTEM","MASTERS_HOST_TYPE","mastersRadioButtonItems","operationsIcon","OPERATIONS","STATISTICS_AGGREGATION_TYPE","AGGREGATOR_RADIO_ITEMS","navigationIcon","LOCAL","NAVIGATION_DEFAULT_PATH","navigationPathValidator","NAVIGATION","DEFAULT_CHYT_ALIAS","chytAliasValidator","USE_SMART_SORT","GROUP_NODES","USE_SMART_FILTER","ENABLE_PATH_AUTO_CORRECTION","docsUrl","docsUrls","makePageBySections","componentsIcon","COMPONENTS","ENABLE_SIDE_BAR","tableIcon","YQL_TYPES","ROWS_PER_TABLE_PAGE","Number","MAXIMUM_TABLE_STRING_SIZE","cellSizeRadioButtonItems","DEFAULT_TABLE_COLUMN_LIMIT","pageSizeRadioButtonItems","ENABLE_TABLE_SIMILARITY","TABLE_DISPLAY_RAW_STRINGS","shieldIcon","Link","url","LogoGitlabIcon","some","PencilToSquareIcon","infoIcon","YT","parameters","version","hashByTitle","reduce_","all","getRecentPagesInfo","pageItems","headerPages","filter_","map_","STARTING_PAGE","ypath","YPath","create","err","message","startsWith","iconData","SettingsPanel","isDeveloperOrWatchMen","useClusterFromLocation","login","getCurrentUserName","settings","externalSettings","getExternalSettings","extPages","produce","forEach_","extPage","extSections","s","extIdsMap","Map","newItems","has","splice","useSettingsDescription","some_","j","k","selectFileEditor","queryTracker","queryFilesModal","fileEditor","selectDeletedFiles","deletedFiles","selectFileEditorConfig","createSelector","getQueryFiles","files","fileArray","fileType","file","f","fileId","selectQueryFilesButtonConfig","addForm","addFormOpen","isOpen","addFormType","showTabs","getNSName","itemName","LAST_VISITED_CLUSTER","LAST_VISITED_PAGE","splitMenuItemsAction","collectionName","getState","clusters","getRecentClustersInfo","SPLIT_MENU_ITEMS","getLastVisitedSetting","nsName","getPath","getLastVisitedSettingName","currentTime","moment","unix","joinMenuItemsAction","JOIN_MENU_ITEMS","trackVisit","ns","trackPageVisit","getCluster","known","getKnownPages","updateTitle","mergeScreen","setTimeout","getMetrics","countHit","trackTabVisit","tab","getClusterNS","lastVisitedTabs","getLastVisitedTabs","newLastVisitedTabs","_defineProperty","LAST_VISITED_TAB","freeGlobal","global","freeSelf","self","root","Function","reWhitespace","reTrimStart","Symbol","require$$0","objectProto","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","getRawTag","isOwn","tag","unmasked","result","baseGetTag","objectToString","baseTrim","charAt","trimmedEndIndex","isObject","require$$1","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","now","Date","toNumber","isObjectLike","isSymbol","other","valueOf","isBinary","nativeMax","Math","max","nativeMin","min","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","clearTimeout","cancel","flush","__rest","t","p","indexOf","getOwnPropertySymbols","propertyIsEnumerable","SuppressedError","initYTApiClusterParams","getClusterConfig","yt","setGlobalOption","getClusterProxy","getConfigData","ytApiUseCORS","secure","location","protocol","getXsrfCookieName","authentication","onError","tokenName","code","USER_IS_BANNED","getWindowStore","BAN_USER","USER_EXCEEDED_RPS","BLOCK_USER","XSRF_TOKEN_EXPIRED","Cookies","console","log","Toaster","add","theme","autoHiding","secureDecoding","unipika","decode","JSONSerializer","stringify","JSON","parse","_","_typeof","isArray","stage","getQueryTrackerRequestOptions","QUERY_ACO_LOADING","REQUEST","ytApiV4Id","YTApiId","setup","transformError","_rawError$response","_rawError$response2","parsedData","rawError","response","status","SUCCESS","actions","showErrorPopup","FAILURE","aco","getEffectiveApiStage","_x","_x2","TabsContext","activeTabId","TabsItem","meta","hint","counter","active","hasOverflow","isActive","htmlTitle","role","tabIndex","overflow","Label","TabsDirection","emptyTabsList","TabsComponent","Horizontal","allowNotSelected","wrapTo","_a","getActiveTabId","tabsContextValue","tabs","handleTabClick","tabId","tabItemNode","importComponents","withLazyLoading","t0","sent","AddQueryTokenFormButton","abrupt","_callee2","_context2","QueryTokenTable","LazyQueryTokenButton","_callee3","_context3","QueryTokenButton","VisibleHostType","host","physicalHost","style","inputProps","useCheckbox","control","ControlLabel","labelClassName","handleUiConfigError","path","rumLogError","level","toast","prepareClusterUiConfig","uiConfig","uiDevConfig","NODE_DOES_NOT_EXIST","output","getClusterParams","rumId","wrapApiPromiseByToaster","fetch","clusterParams","axios","request","method","skipSuccessToast","toasterName","errorTitle","errorContent","initClusterParams","INIT_CLUSTER_PARAMS","RumWrapper","mediumList","getBatchError","_prepareClusterUiConf","_prepareClusterUiConf2","uiConfigOutput","uiDevConfigOutput","getValue","isDeveloper","clusterUiConfig","clusterParamsIsDeveloper","checkIsDeveloper","GLOBAL_PARTIAL","count","updateCluster","dispatchError","_error$response","Error","UPDATE_CLUSTER","ui_clusterInfo","params","tokenError","versionError","RESET_STORE_BEFORE_CLUSTER_CHANGE","shouldUsePreserveState","errorType","PRELOAD_ERROR","CONNECTION","csrf_token","reloadUserSettings","isRedirectToBetaSwitched","REDIRECT_TO_BETA_SWITCHED","REDIRECT_TO_BETA","isRecentClustersFirst","isRecentPagesFirst","FINAL_SUCCESS","AUTHENTICATION","Promise","resolve","unmountCluster","CustomRadioButton","_React$Component","option","_createElement","Option","hammer","format"],"sourceRoot":""}