@ytsaurus/ui 3.6.0 → 3.6.1
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.
- package/dist/public/build/assets-manifest.json +37 -37
- package/dist/public/build/css/{main.89a1698b.css → main.eac511a5.css} +2 -2
- package/dist/public/build/css/main.eac511a5.css.map +1 -0
- package/dist/public/build/js/{1394.45bb669a.chunk.js → 1394.9f9c9f9a.chunk.js} +2 -2
- package/dist/public/build/js/{1394.45bb669a.chunk.js.map → 1394.9f9c9f9a.chunk.js.map} +1 -1
- package/dist/public/build/js/4804.2d9406dc.chunk.js +3 -0
- package/dist/public/build/js/4804.2d9406dc.chunk.js.map +1 -0
- package/dist/public/build/js/{accounts-monitoring-prometheus.262cacd8.chunk.js → accounts-monitoring-prometheus.38e8206a.chunk.js} +2 -2
- package/dist/public/build/js/accounts-monitoring-prometheus.38e8206a.chunk.js.map +1 -0
- package/dist/public/build/js/acl.00a69fe0.chunk.js +2 -0
- package/dist/public/build/js/acl.00a69fe0.chunk.js.map +1 -0
- package/dist/public/build/js/{bundle-monitoring-prometheus.d49a9a1a.chunk.js → bundle-monitoring-prometheus.dc8084bb.chunk.js} +2 -2
- package/dist/public/build/js/bundle-monitoring-prometheus.dc8084bb.chunk.js.map +1 -0
- package/dist/public/build/js/components.c4fc1d81.chunk.js +2 -0
- package/dist/public/build/js/components.c4fc1d81.chunk.js.map +1 -0
- package/dist/public/build/js/main.a04f2740.js +3 -0
- package/dist/public/build/js/{main.3e360b19.js.map → main.a04f2740.js.map} +1 -1
- package/dist/public/build/js/navigation.cd66d63f.chunk.js +2 -0
- package/dist/public/build/js/{navigation.8d91701a.chunk.js.map → navigation.cd66d63f.chunk.js.map} +1 -1
- package/dist/public/build/js/{prometheus-dashboard.3c9f3a99.chunk.js → prometheus-dashboard.d3814a09.chunk.js} +2 -2
- package/dist/public/build/js/prometheus-dashboard.d3814a09.chunk.js.map +1 -0
- package/dist/public/build/js/query-navigation.f7f5a1b5.chunk.js +2 -0
- package/dist/public/build/js/{query-navigation.f52623cc.chunk.js.map → query-navigation.f7f5a1b5.chunk.js.map} +1 -1
- package/dist/public/build/js/{runtime.2344fc6d.js → runtime.3af0a91e.js} +2 -2
- package/dist/public/build/js/{runtime.2344fc6d.js.map → runtime.3af0a91e.js.map} +1 -1
- package/dist/public/build/js/scheduling.4f518a8a.chunk.js +2 -0
- package/dist/public/build/js/scheduling.4f518a8a.chunk.js.map +1 -0
- package/dist/public/build/js/{system-monitoring-prometheus.b6ce8ed8.chunk.js → system-monitoring-prometheus.4004494c.chunk.js} +2 -2
- package/dist/public/build/js/system-monitoring-prometheus.4004494c.chunk.js.map +1 -0
- package/dist/public/build/js/{system.08fe4f55.chunk.js → system.2e84d486.chunk.js} +2 -2
- package/dist/public/build/js/{system.08fe4f55.chunk.js.map → system.2e84d486.chunk.js.map} +1 -1
- package/dist/public/build/js/yt-monaco-editor.4ad443b3.chunk.js +2 -0
- package/dist/public/build/js/{yt-monaco-editor.ba9a69f6.chunk.js.map → yt-monaco-editor.4ad443b3.chunk.js.map} +1 -1
- package/dist/public/build/manifest.json +32 -32
- package/package.json +2 -2
- package/dist/public/build/css/main.89a1698b.css.map +0 -1
- package/dist/public/build/js/4804.05d44971.chunk.js +0 -3
- package/dist/public/build/js/4804.05d44971.chunk.js.map +0 -1
- package/dist/public/build/js/accounts-monitoring-prometheus.262cacd8.chunk.js.map +0 -1
- package/dist/public/build/js/acl.91a762f3.chunk.js +0 -2
- package/dist/public/build/js/acl.91a762f3.chunk.js.map +0 -1
- package/dist/public/build/js/bundle-monitoring-prometheus.d49a9a1a.chunk.js.map +0 -1
- package/dist/public/build/js/components.aa32cd54.chunk.js +0 -2
- package/dist/public/build/js/components.aa32cd54.chunk.js.map +0 -1
- package/dist/public/build/js/main.3e360b19.js +0 -3
- package/dist/public/build/js/navigation.8d91701a.chunk.js +0 -2
- package/dist/public/build/js/prometheus-dashboard.3c9f3a99.chunk.js.map +0 -1
- package/dist/public/build/js/query-navigation.f52623cc.chunk.js +0 -2
- package/dist/public/build/js/scheduling.6f68a262.chunk.js +0 -2
- package/dist/public/build/js/scheduling.6f68a262.chunk.js.map +0 -1
- package/dist/public/build/js/system-monitoring-prometheus.b6ce8ed8.chunk.js.map +0 -1
- package/dist/public/build/js/yt-monaco-editor.ba9a69f6.chunk.js +0 -2
- /package/dist/public/build/js/{4804.05d44971.chunk.js.LICENSE.txt → 4804.2d9406dc.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.3e360b19.js.LICENSE.txt → main.a04f2740.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js/query-navigation.f52623cc.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/assets/img/svg/icons/queue-consumer.svg","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/icons/queue-producer.svg","webpack://@ytsaurus/ui/./src/ui/components/MapNodeIcon/MapNodeIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/SchemaDataType/SchemaDataType.tsx","webpack://@ytsaurus/ui/./src/ui/utils/navigation/path-editor.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/format.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/dynamic-table.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/static-table.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/index.ts","webpack://@ytsaurus/ui/./src/ui/utils/navigation/isLinkToTrashNode.ts","webpack://@ytsaurus/ui/./src/ui/utils/navigation/isPipelineNode.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationHeader/BreadcrumbsItem.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationHeader/NavigationBreadcrumbs.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/star.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/star-fill.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/copy.svg","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/helpers/insertTextWhereCursor.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationHeader/HeaderActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationHeader/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationHeader/NavigationHeader.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationBody/NavigationEmpty/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationBody/NavigationEmpty/NavigationEmpty.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/ItemsList.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/ClusterList/ClusterList.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NodeList/NodeName.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NodeList/NodeListRow/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NodeList/NodeListRow/NodeListRow.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NodeList/NodeList.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/helpers/getNavigationUrl.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationTable/SchemaTab.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationTable/PreviewTab/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationTable/PreviewTab/PreviewTab.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationTable/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationTable/NavigationTable.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationBody/LoadingPlaceholder.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationBody/NavigationError.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationBody/NavigationBody.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/Navigation.tsx","webpack://@ytsaurus/ui/./src/ui/components/PageCounter/PageCounter.tsx","webpack://@ytsaurus/ui/./src/ui/components/ColumnHeader/ColumnHeader.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/folder-tree.svg","webpack://@ytsaurus/ui/./src/ui/utils/navigation/isTrashNode.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/i18n/index.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/utils.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/BreadcrumbsDropdownMenu.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/lab/ListItemView/ListItemView.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/BreadcrumbsItem.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/BreadcrumbsSeparator.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/Breadcrumbs.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/text-indent.svg","webpack://@ytsaurus/ui/./src/ui/components/YqlValue/YqlValue.tsx","webpack://@ytsaurus/ui/./src/ui/components/ColumnCell/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/components/ColumnCell/ColumnCell.tsx","webpack://@ytsaurus/ui/./src/ui/utils/navigation/prepareColumns.tsx"],"sourcesContent":["const SvgQueueConsumer = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}><g clipPath=\"url(#queue-consumer_svg__a)\"><path d=\"M12.154 2.004A3 3 0 0 1 15 5v2H6.25v2h2.5v1.5h-2.5v2h2.5V14H4l-.154-.004a3 3 0 0 1-2.842-2.842L1 11V5a3 3 0 0 1 2.846-2.996L4 2h8zM2.5 11A1.5 1.5 0 0 0 4 12.5h.75v-2H2.5zm0-2h2.25V7H2.5zM4 3.5A1.5 1.5 0 0 0 2.5 5v.5h2.25v-2zm2.25 2h7.25V5A1.5 1.5 0 0 0 12 3.5H6.25z\" /><path stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M15.125 11.283a.25.25 0 0 1 .055.39l-.055.044-3 1.731a.25.25 0 0 1-.375-.216V9.768a.25.25 0 0 1 .312-.243l.063.027z\" /></g><defs><clipPath id=\"queue-consumer_svg__a\"><path d=\"M0 0h16v16H0z\" /></clipPath></defs></svg>;\nexport default SvgQueueConsumer;","const SvgQueueProducer = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}><path d=\"M12.154 2.004A3 3 0 0 1 15 5v2H6.25v2h2.5v1.5h-2.5v2h2.5V14H4l-.154-.004a3 3 0 0 1-2.842-2.842L1 11V5a3 3 0 0 1 2.846-2.996L4 2h8zM2.5 11A1.5 1.5 0 0 0 4 12.5h.75v-2H2.5zm0-2h2.25V7H2.5zM4 3.5A1.5 1.5 0 0 0 2.5 5v.5h2.25v-2zm2.25 2h7.25V5A1.5 1.5 0 0 0 12 3.5H6.25z\" /><path stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"m11 12 1.6 2 2.4-4\" /></svg>;\nexport default SvgQueueProducer;","import React from 'react';\nimport {Icon as GravityIcon} from '@gravity-ui/uikit';\n\nimport hammer from '../../common/hammer';\nimport ypath from '../../common/thor/ypath';\n\nimport Icon from '../../components/Icon/Icon';\n\nimport UIFactory from '../../UIFactory';\n\nimport {getIconNameForType} from '../../utils/navigation/path-editor';\nimport {isTrashNode} from '../../utils/navigation/isTrashNode';\nimport {isLinkToTrashNode} from '../../utils/navigation/isLinkToTrashNode';\n\nimport QueueConsumerIcon from '../../assets/img/svg/icons/queue-consumer.svg';\nimport QueueProducerIcon from '../../assets/img/svg/icons/queue-producer.svg';\n\nimport NodePipelineIcon from '../../assets/img/svg/icons/node-pipeline.svg';\n\nimport type {BaseMapNode} from '../../utils/navigation/content/map-nodes/node';\nimport {isPipelineNode} from '../../utils/navigation/isPipelineNode';\n\nimport './MapNodeIcon.scss';\n\nexport function MapNodeIcon({node}: {node: BaseMapNode}) {\n const item = ypath.getAttributes(node);\n const iconType = item?.type === 'table' && item?.dynamic ? 'table_dynamic' : item?.type;\n let icon = UIFactory.getNavigationMapNodeSettings()?.renderNodeIcon(node);\n\n if (icon) {\n // do nothing\n } else if (isTrashNode(item?.path) || isLinkToTrashNode(item?.targetPath)) {\n icon = <Icon awesome=\"trash-alt\" />;\n } else {\n icon = <Icon awesome={getIconNameForType(iconType, item.targetPathBroken)} />;\n }\n\n let title = hammer.format['ReadableField'](item.type);\n if (iconType === 'table') {\n title = 'Static table';\n }\n\n if (iconType === 'table_dynamic') {\n if (item?.sorted) {\n title = 'Dynamic table';\n } else {\n title = 'Queue table';\n icon = <Icon awesome=\"queue-table\" />;\n }\n }\n\n if (item?.treat_as_queue_consumer) {\n title = 'Queue consumer';\n icon = <GravityIcon data={QueueConsumerIcon} />;\n }\n\n if (item?.treat_as_queue_producer) {\n title = 'Queue producer';\n icon = <GravityIcon data={QueueProducerIcon} />;\n }\n\n if (isPipelineNode(node.$attributes)) {\n title = 'Flow';\n icon = <GravityIcon data={NodePipelineIcon} />;\n }\n\n return (\n <span className={'icon-wrapper'} title={title}>\n {icon}\n </span>\n );\n}\n","import React from 'react';\n\nimport {getPrimitiveTypesMap} from '../../store/selectors/global/supported-features';\nimport {useSelector} from '../../store/redux-hooks';\nimport {getType} from './dataTypes';\nimport DataType from './DataType/DataType';\nimport {parseV3Type} from './dateTypesV3';\n\ninterface Props {\n type_v3: any;\n}\n\nfunction SchemaDataType({type_v3}: Props) {\n const primitiveTypes = useSelector(getPrimitiveTypesMap);\n\n const dataTypeProps = React.useMemo(() => {\n try {\n return getType(parseV3Type(type_v3, primitiveTypes));\n } catch {\n return undefined;\n }\n }, [type_v3, primitiveTypes]);\n\n return dataTypeProps ? (\n <DataType {...dataTypeProps} />\n ) : (\n <>There is no type description in the schema</>\n );\n}\n\nexport default React.memo(SchemaDataType);\n","import filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport sortBy_ from 'lodash/sortBy';\n\nimport unipika from '../../common/thor/unipika';\nimport ypath from '../../common/thor/ypath';\n\nimport CancelHelper from '../cancel-helper';\nimport {YTApiId, ytApiV3Id} from '../../rum/rum-wrap-api';\nimport {getClusterConfigByName, getClusterProxy} from '../../store/selectors/global';\n\nexport const pathEditorRequests = new CancelHelper();\n\nfunction prepareSuggestions(initialPath, parentPath, children) {\n let suggestions = map_(children, (child) => {\n const prepared = {};\n\n prepared.parentPath = parentPath;\n prepared.childPath = '/' + unipika.decode(ypath.getValue(child));\n prepared.path = prepared.parentPath + prepared.childPath;\n prepared.type = ypath.getValue(child, '/@type');\n prepared.dynamic = ypath.getValue(child, '/@dynamic');\n prepared.targetPathBroken = ypath.getValue(child, '/@broken');\n\n return prepared;\n });\n\n suggestions = sortBy_(suggestions, 'childPath');\n\n return suggestions;\n}\n\nexport function preparePath(currentPath) {\n return ypath.YPath.create(currentPath, 'absolute').toSubpath(-2).stringify();\n}\n\nexport function loadSuggestions({path, customFilter, cluster}) {\n const parentPath = preparePath(path);\n\n const apiSetup = {\n parameters: {path: parentPath, attributes: ['type', 'dynamic']},\n cancellation: pathEditorRequests.saveCancelToken,\n };\n\n if (cluster) {\n const clusterConfig = getClusterConfigByName(cluster);\n if (clusterConfig) {\n apiSetup.setup = {\n proxy: getClusterProxy(clusterConfig),\n };\n }\n }\n\n return ytApiV3Id\n .list(YTApiId.pathEditorLoadSuggestions, apiSetup)\n .then(ypath.getValue)\n .then((nodes) => prepareSuggestions(path, parentPath, nodes))\n .then((suggestions) => (customFilter ? customFilter(suggestions) : suggestions));\n}\n\nexport function filterByCurrentPath(currentPath, suggestions) {\n const path = currentPath.toLowerCase();\n\n return filter_(suggestions, (child) => {\n const hasPartOfPath = child.path.startsWith(path);\n const isShowCurrentChild = child.path !== path || child.type === 'map_node';\n\n return hasPartOfPath && isShowCurrentChild;\n });\n}\n\nexport function getNextSelectedIndex(suggestion, selectedIndex) {\n if (selectedIndex === -1 || selectedIndex === suggestion.length - 1) {\n return 0;\n }\n\n return selectedIndex + 1;\n}\n\nexport function getPrevSelectedIndex(suggestions, selectedIndex) {\n if (selectedIndex === -1 || selectedIndex === 0) {\n return suggestions.length - 1;\n }\n\n return selectedIndex - 1;\n}\n\nexport function getCompletedPath(suggestion) {\n return suggestion.type === 'map_node' ? suggestion.path + '/' : suggestion.path;\n}\n\nexport function getIconNameForType(type, targetPathBroken) {\n const icons = {\n document: 'file-alt',\n string_node: 'file-alt',\n int64_node: 'file-alt',\n uint64_node: 'file-alt',\n double_node: 'file-alt',\n boolean_node: 'file-alt',\n map_node: 'folder',\n scheduler_pool_tree_map: 'folder-tree',\n scheduler_pool: 'tasks',\n tablet_cell: 'th',\n journal: 'book',\n table: 'th',\n table_dynamic: 'dyn-th',\n replicated_table: 'th',\n chaos_replicated_table: 'chaos-replicated-table',\n replication_log_table: 'replication-log-table',\n file: 'file',\n topmost_transaction_map: 'folder',\n transaction_map: 'folder',\n transaction: 'code-branch',\n nested_transaction: 'code-branch',\n link: ypath.getBoolean(targetPathBroken) ? 'unlink' : 'link',\n rootstock: 'link',\n portal_entrance: 'link',\n cell_node: 'circle',\n cell_node_map: 'far circle',\n sys_node: 'cog',\n access_control_object_namespace_map: 'acl-namespace-map',\n access_control_object_namespace: 'acl-namespace',\n access_control_object: 'acl-object',\n };\n\n const icon = type ? icons[type] || 'not-suported' : 'eye-slash';\n\n return icon;\n}\n","import {isMediaTag} from '../../../../../utils/yql-types';\n\nconst getDefaultFormat = () => {\n return '--format json';\n};\n\nconst getImageResultFormat = (columnName: string, tag: string) => {\n const [_, extension] = tag.split('/');\n return `--format \"<columns=[${columnName}];enable_escaping=%false>schemaful_dsv\" >${columnName}.${extension}`;\n};\n\nexport const getCliCommandResultFormat = ({\n tag,\n columnName,\n}: {\n tag?: string;\n columnName: string;\n}) => {\n if (tag && isMediaTag(tag)) {\n return getImageResultFormat(columnName, tag as string);\n }\n\n return getDefaultFormat();\n};\n","import type {CellPreviewActionType} from '../../../modals/cell-preview';\nimport {\n getCurrentRowKey,\n getKeyColumns,\n getYqlTypes,\n} from '../../../../selectors/navigation/content/table-ts';\nimport Query from '../../../../../utils/navigation/content/table/query';\nimport {getCliCommandResultFormat} from './format';\n\nexport const getDynamicTableCellPath = ({\n rowIndex,\n path,\n columnName,\n}: {\n path: string;\n columnName: string;\n rowIndex: number;\n}): CellPreviewActionType<string> => {\n return (_, getState) => {\n const yqlTypes = getYqlTypes(getState());\n const key = getCurrentRowKey(getState(), rowIndex);\n const keyColumns = getKeyColumns(getState());\n\n const offset = Query.prepareKey(key, yqlTypes);\n\n return Query.prepareQuery({\n path,\n offset,\n offsetColumns: keyColumns,\n columns: [columnName],\n limit: 1,\n });\n };\n};\n\nexport const getDynamicTableCliCommand = ({\n cellPath,\n tag,\n columnName,\n}: {\n cellPath: string;\n columnName: string;\n tag?: string;\n}): string => {\n return `yt select-rows 'select ${cellPath}' ${getCliCommandResultFormat({columnName, tag})}`;\n};\n","import {type CellPreviewActionType} from '../../../modals/cell-preview';\nimport {getOffsetValue} from '../../../../selectors/navigation/content/table';\nimport {YSON_AS_TEXT, prettyPrint} from '../../../../../utils/unipika';\nimport {getCliCommandResultFormat} from './format';\n\nexport const getStaticTableCellPath = ({\n path,\n columnName,\n rowIndex: index,\n}: {\n path: string;\n columnName: string;\n rowIndex: number;\n}): CellPreviewActionType<string> => {\n return (_, getState) => {\n const offset = getOffsetValue(getState());\n\n const rowIndex = typeof offset === 'number' ? index + offset : index;\n\n return `${path}{${prettyPrint(columnName, YSON_AS_TEXT())}}[#${rowIndex}:#${rowIndex + 1}]`;\n };\n};\n\nexport const getStaticTableCliCommand = ({\n cellPath,\n columnName,\n tag,\n}: {\n cellPath: string;\n columnName: string;\n tag?: string;\n}): string => {\n return `yt read-table '${cellPath}' ${getCliCommandResultFormat({columnName, tag})}`;\n};\n","import {CancelTokenSource} from 'axios';\nimport {batch} from 'react-redux';\n\nimport {getPath} from '../../../../selectors/navigation';\nimport {getDefaultRequestOutputFormat} from '../../../../../utils/navigation/content/table/table';\nimport {CELL_PREVIEW, PREVIEW_LIMIT} from '../../../../../constants/modals/cell-preview';\nimport {isCancelled} from '../../../../../utils/cancel-helper';\nimport {\n CellPreviewActionType,\n cellPreviewCancelHelper,\n openCellPreview,\n} from '../../../modals/cell-preview';\nimport unipika from '../../../../../common/thor/unipika';\nimport {getIsDynamic} from '../../../../selectors/navigation/content/table-ts';\nimport {getDynamicTableCellPath, getDynamicTableCliCommand} from './dynamic-table';\nimport {getStaticTableCellPath, getStaticTableCliCommand} from './static-table';\nimport {isYqlTypesEnabled} from '../../../../selectors/navigation/content/table';\nimport {readStaticTable} from '../../content/table/readStaticTable';\nimport {readDynamicTable} from '../../content/table/readDynamicTable';\nimport {CellDataHandlerNavigation} from '../../../../../types/navigation/table-cell-preview';\n\nconst getCellPath = ({\n columnName,\n rowIndex,\n}: {\n columnName: string;\n rowIndex: number;\n}): CellPreviewActionType<string> => {\n return (dispatch, getState) => {\n const path: string = getPath(getState());\n const isDynamic = getIsDynamic(getState());\n\n const action = isDynamic ? getDynamicTableCellPath : getStaticTableCellPath;\n\n return dispatch(action({path, columnName, rowIndex}));\n };\n};\n\nconst getCliCommand = ({\n cellPath,\n columnName,\n tag,\n}: {\n cellPath: string;\n columnName: string;\n tag?: string;\n}): CellPreviewActionType<string> => {\n return (_dispatch, getState) => {\n const isDynamic = getIsDynamic(getState());\n\n const fn = isDynamic ? getDynamicTableCliCommand : getStaticTableCliCommand;\n\n return fn({cellPath, columnName, tag});\n };\n};\n\nconst loadCellPreview = ({\n cellPath,\n useYqlTypes,\n cancellation,\n}: {\n cellPath: string;\n useYqlTypes: boolean;\n cancellation?: (token: CancelTokenSource) => void;\n}): CellPreviewActionType<ReturnType<typeof readDynamicTable>> => {\n return (_dispatch, getState) => {\n const isDynamic = getIsDynamic(getState());\n\n const output_format = getDefaultRequestOutputFormat({\n stringLimit: PREVIEW_LIMIT,\n useYqlTypes,\n });\n\n return isDynamic\n ? readDynamicTable({\n parameters: {\n output_format,\n query: cellPath,\n },\n cancellation: cancellation ?? cellPreviewCancelHelper.removeAllAndSave,\n })\n : readStaticTable({\n parameters: {path: cellPath, output_format},\n cancellation: cancellation ?? cellPreviewCancelHelper.removeAllAndSave,\n });\n };\n};\n\nexport const onCellPreview = ({\n columnName,\n rowIndex,\n tag,\n dataHandler,\n}: {\n columnName: string;\n rowIndex: number;\n tag?: string;\n dataHandler?: CellDataHandlerNavigation;\n}): CellPreviewActionType => {\n return async (dispatch, getState) => {\n const useYqlTypes = isYqlTypesEnabled(getState());\n\n const cellPath = dispatch(getCellPath({columnName, rowIndex}));\n\n const ytCliDownloadCommand: string = dispatch(getCliCommand({cellPath, columnName, tag}));\n\n if (dataHandler) {\n dataHandler.onStartLoading({columnName, rowIndex});\n } else {\n batch(() => {\n dispatch({type: CELL_PREVIEW.REQUEST, data: {ytCliDownloadCommand}});\n dispatch(openCellPreview());\n });\n }\n\n const data: {\n $type?: string;\n $value?: any;\n $tag?: string;\n } = {};\n\n let isIncomplete: boolean | undefined = false;\n\n try {\n const loadedData = await dispatch(\n loadCellPreview({\n cellPath,\n useYqlTypes,\n cancellation: dataHandler?.saveCancellation,\n }),\n );\n\n if (loadedData.useYqlTypes) {\n const {rows, yqlTypes} = loadedData;\n const column = rows[0][columnName];\n const value = column[0];\n const typeIndex = column[1];\n\n const flags: {incomplete: boolean} = {incomplete: false};\n\n const {$type, $value, $tag} = unipika.converters.yql(\n [value, yqlTypes?.[typeIndex]],\n {\n maxStringSize: undefined,\n maxListSize: undefined,\n treatValAsData: true,\n },\n flags,\n );\n\n isIncomplete = flags.incomplete;\n\n data.$type = $type;\n data.$value = $tag ? $value.$value : $value;\n data.$tag = $tag;\n } else {\n const {rows} = loadedData;\n const column = rows[0][columnName];\n\n const hasType = column && column.$type;\n\n data.$type = column.$type;\n data.$value = hasType ? column.$value : column;\n\n isIncomplete = column.$incomplete;\n }\n\n const noticeText = isIncomplete\n ? 'Unable to load content more than 16MiB. Please use the command bellow to load it locally.'\n : 'You could use the command bellow to load it locally.';\n\n if (dataHandler) {\n dataHandler.onSuccess({columnName, rowIndex, data: loadedData});\n } else {\n dispatch({\n type: CELL_PREVIEW.SUCCESS,\n data: {\n data,\n noticeText,\n },\n });\n }\n } catch (error: any) {\n if (!isCancelled(error)) {\n if (dataHandler) {\n dataHandler.onError({columnName, rowIndex, error});\n } else {\n dispatch({type: CELL_PREVIEW.FAILURE, data: {error}});\n }\n }\n }\n };\n};\n","import {TRASH_PATH} from '../../constants/navigation';\n\nexport function isLinkToTrashNode(targetPath?: string) {\n return targetPath === TRASH_PATH;\n}\n","export function isPipelineNode(attrs?: {pipeline_format_version?: number}) {\n return attrs?.pipeline_format_version !== undefined;\n}\n","import React, {FC, MouseEvent} from 'react';\n\nexport const BreadcrumbsItem: FC<{\n item: {text: string; href: string};\n isCurrent: boolean;\n onClick: (path: string) => void;\n}> = ({item, isCurrent, onClick}) => {\n const handleItemClick = (e: MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n if (item.href && !isCurrent) {\n onClick(item.href);\n }\n };\n\n return (\n <div data-qa={item.text} onClick={handleItemClick}>\n {item.text}\n </div>\n );\n};\n","import React, {FC, useCallback, useMemo} from 'react';\nimport {Breadcrumbs, Button, Icon} from '@gravity-ui/uikit';\nimport {useDispatch, useSelector} from '../../../../store/redux-hooks';\nimport FolderTreeIcon from '@gravity-ui/icons/svgs/folder-tree.svg';\nimport {BreadcrumbsItem as BreadcrumbsItemComponent} from './BreadcrumbsItem';\nimport {\n selectNavigationCluster,\n selectNavigationPath,\n} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport {\n BodyType,\n setCluster,\n setNodeType,\n setPath,\n} from '../../../../store/reducers/query-tracker/queryNavigationSlice';\nimport {loadNodeByPath} from '../../../../store/actions/query-tracker/queryNavigation';\n\nexport const NavigationBreadcrumbs: FC = () => {\n const dispatch = useDispatch();\n const path = useSelector(selectNavigationPath);\n const cluster = useSelector(selectNavigationCluster);\n\n const handleClusterChangeClick = useCallback(() => {\n dispatch(setNodeType(BodyType.Cluster));\n dispatch(setCluster(undefined));\n dispatch(setPath(''));\n }, [dispatch]);\n\n const handleBreadcrumbsClick = useCallback(\n (newPath: string) => {\n dispatch(loadNodeByPath(newPath));\n },\n [dispatch],\n );\n\n const items = useMemo(() => {\n if (!cluster) return [];\n\n let href = '/';\n const result = [{text: cluster, href: '/'}];\n path.split('/').forEach((text) => {\n if (text) {\n href += '/' + text;\n result.push({\n text,\n href,\n });\n }\n });\n\n return result.map((item, index) => {\n const isCurrent = index === result.length - 1;\n return (\n <Breadcrumbs.Item key={index} href={item.href} onClick={(e) => e.preventDefault()}>\n <BreadcrumbsItemComponent\n item={item}\n isCurrent={isCurrent}\n onClick={handleBreadcrumbsClick}\n />\n </Breadcrumbs.Item>\n );\n });\n }, [cluster, path, handleBreadcrumbsClick]);\n\n return (\n <>\n <Button size=\"s\" view=\"flat\" onClick={handleClusterChangeClick}>\n <Icon data={FolderTreeIcon} size={16} />\n </Button>\n <Breadcrumbs showRoot>{items}</Breadcrumbs>\n </>\n );\n};\n","const SvgStar = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"m9.194 5 .351.873.94.064 3.197.217-2.46 2.055-.722.603.23.914.782 3.108-2.714-1.704L8 10.629l-.798.5-2.714 1.705.782-3.108.23-.914-.723-.603-2.46-2.055 3.198-.217.94-.064.35-.874L8 2.025zm-7.723-.292 3.943-.268L6.886.773C7.29-.231 8.71-.231 9.114.773l1.472 3.667 3.943.268c1.08.073 1.518 1.424.688 2.118L12.185 9.36l.964 3.832c.264 1.05-.886 1.884-1.802 1.31L8 12.4l-3.347 2.101c-.916.575-2.066-.26-1.802-1.309l.964-3.832L.783 6.826c-.83-.694-.391-2.045.688-2.118\" clipRule=\"evenodd\" /></svg>;\nexport default SvgStar;","const SvgStarFill = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" d=\"M6.886.773C7.29-.231 8.71-.231 9.114.773l1.472 3.667 3.943.268c1.08.073 1.518 1.424.688 2.118L12.185 9.36l.964 3.832c.264 1.05-.886 1.884-1.802 1.31L8 12.4l-3.347 2.101c-.916.575-2.066-.26-1.802-1.309l.964-3.832L.783 6.826c-.83-.694-.391-2.045.688-2.118l3.943-.268z\" /></svg>;\nexport default SvgStarFill;","const SvgCopy = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5M11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3zM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5\" clipRule=\"evenodd\" /></svg>;\nexport default SvgCopy;","import {Range, editor} from 'monaco-editor';\n\nexport const insertTextWhereCursor = (text: string, mEditor?: editor.IStandaloneCodeEditor) => {\n if (!mEditor) return;\n\n const position = mEditor.getPosition();\n const range = position\n ? new Range(position.lineNumber, position.column, position.lineNumber, position.column)\n : new Range(0, 0, 0, 0);\n\n const edit = {range, text};\n mEditor.executeEdits('Insert text', [edit]);\n};\n","import React, {FC, useCallback} from 'react';\nimport {Button, Icon} from '@gravity-ui/uikit';\nimport StarIcon from '@gravity-ui/icons/svgs/star.svg';\nimport StarFillIcon from '@gravity-ui/icons/svgs/star-fill.svg';\nimport TextIndentIcon from '@gravity-ui/icons/svgs/text-indent.svg';\nimport CopyIcon from '@gravity-ui/icons/svgs/copy.svg';\nimport './HeaderActions.scss';\nimport cn from 'bem-cn-lite';\nimport ArrowUpRightFromSquareIcon from '@gravity-ui/icons/svgs/arrow-up-right-from-square.svg';\nimport {\n copyPathToClipboard,\n toggleFavoritePath,\n} from '../../../../store/actions/query-tracker/queryNavigation';\nimport {\n selectFavouritePaths,\n selectNavigationCluster,\n selectNavigationPath,\n} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport {getQueryEngine} from '../../../../store/selectors/query-tracker/query';\nimport {makePathByQueryEngine} from '../helpers/makePathByQueryEngine';\nimport {insertTextWhereCursor} from '../helpers/insertTextWhereCursor';\nimport {useMonaco} from '../../hooks/useMonaco';\nimport {makeNavigationLink} from '../../../../utils/app-url';\nimport {useDispatch, useSelector} from '../../../../store/redux-hooks';\n\nconst b = cn('navigation-header-actions');\n\nexport const HeaderActions: FC = () => {\n const dispatch = useDispatch();\n const path = useSelector(selectNavigationPath);\n const cluster = useSelector(selectNavigationCluster);\n const favorites = useSelector(selectFavouritePaths);\n const engine = useSelector(getQueryEngine);\n const {getEditor} = useMonaco();\n\n const isFavorite = favorites.includes(path);\n const navigationUrl = makeNavigationLink({path, cluster});\n\n const handleFavoriteToggle = useCallback(() => {\n dispatch(toggleFavoritePath(path));\n }, [dispatch, path]);\n\n const handlePathCopy = useCallback(() => {\n dispatch(copyPathToClipboard(path));\n }, [dispatch, path]);\n\n const handlePastePath = useCallback(() => {\n if (!cluster) return;\n const editor = getEditor('queryEditor');\n const pathString = makePathByQueryEngine({\n cluster,\n path,\n engine,\n });\n insertTextWhereCursor(pathString, editor);\n }, [cluster, engine, getEditor, path]);\n\n if (!cluster) return null;\n\n return (\n <div className={b()}>\n <Button view=\"flat\" href={navigationUrl} target=\"_blank\">\n <Icon data={ArrowUpRightFromSquareIcon} size={16} />\n </Button>\n <Button view=\"flat\" onClick={handleFavoriteToggle}>\n <Icon data={isFavorite ? StarFillIcon : StarIcon} size={16} />\n </Button>\n <Button view=\"flat\" onClick={handlePastePath}>\n <Icon data={TextIndentIcon} size={16} />\n </Button>\n <Button view=\"flat\" onClick={handlePathCopy}>\n <Icon data={CopyIcon} size={16} />\n </Button>\n </div>\n );\n};\n","import {addI18Keysets} from '../../../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:query-tracker.navigation-header', {en, ru});\n","import React, {FC} from 'react';\nimport cn from 'bem-cn-lite';\nimport './NavigationHeader.scss';\nimport {NavigationBreadcrumbs} from './NavigationBreadcrumbs';\nimport {HeaderActions} from './HeaderActions';\nimport {TextInput} from '@gravity-ui/uikit';\nimport {useDispatch, useSelector} from '../../../../store/redux-hooks';\nimport {\n selectNavigationFilter,\n selectNavigationNodeType,\n} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport {BodyType, setFilter} from '../../../../store/reducers/query-tracker/queryNavigationSlice';\nimport i18n from './i18n';\n\nconst b = cn('navigation-header');\n\nexport const NavigationHeader: FC = () => {\n const dispatch = useDispatch();\n const filter = useSelector(selectNavigationFilter);\n const nodeType = useSelector(selectNavigationNodeType);\n\n const showFilter = nodeType !== BodyType.Table;\n\n const handleFilterChange = (value: string) => {\n dispatch(setFilter(value));\n };\n\n return (\n <div className={b()}>\n <div className={b('path-wrap')}>\n <NavigationBreadcrumbs />\n <HeaderActions />\n </div>\n {showFilter && (\n <TextInput\n value={filter}\n placeholder={i18n('field_filter-by-name')}\n onUpdate={handleFilterChange}\n hasClear\n />\n )}\n </div>\n );\n};\n","import {addI18Keysets} from '../../../../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:query-tracker.navigation-body', {en, ru});\n","import React, {FC} from 'react';\nimport {Text} from '@gravity-ui/uikit';\nimport './NavigationEmpty.scss';\nimport cn from 'bem-cn-lite';\nimport i18n from './i18n';\n\nconst b = cn('navigation-empty');\n\nexport const NavigationEmpty: FC = () => {\n return (\n <div className={b()}>\n <Text variant=\"subheader-2\">{i18n('context_empty-directory')}</Text>\n </div>\n );\n};\n","import React from 'react';\nimport ColumnHeader from '../../../components/ColumnHeader/ColumnHeader';\nimport DataTableYT from '../../../components/DataTableYT/DataTableYT';\nimport './ItemsList.scss';\nimport cn from 'bem-cn-lite';\n\nconst b = cn('yt-qt-navigation-items-list');\n\ntype Props<T> = {\n className?: string;\n loading: boolean;\n data: T[];\n render: (rowData: T) => React.ReactNode;\n onClick?: (data: T) => void;\n};\n\nexport function ItemsList<T>({className, data, loading, render, onClick}: Props<T>) {\n return (\n <DataTableYT\n className={b(null, className)}\n rowClassName={() => b('row')}\n settings={{\n stickyHead: 'moving',\n displayIndices: false,\n sortable: true,\n highlightRows: false,\n }}\n data={data}\n columns={[\n {\n name: 'name',\n header: (\n <ColumnHeader\n className={b('header')}\n title=\"Name\"\n column=\"name\"\n loading={loading}\n />\n ),\n render: ({row}) => {\n return render(row);\n },\n },\n ]}\n useThemeYT\n onRowClick={onClick}\n />\n );\n}\n","import React, {FC} from 'react';\nimport {useDispatch, useSelector} from '../../../../store/redux-hooks';\nimport {QueryClusterItem} from '../../QueryTrackerTopRow/QueryClusterSelector/QueryClusterItem';\nimport './ClusterList.scss';\nimport cn from 'bem-cn-lite';\nimport {ClusterConfig} from '../../../../../shared/yt-types';\nimport {setNavigationCluster} from '../../../../store/actions/query-tracker/queryNavigation';\nimport {\n selectClustersByFilter,\n selectLoading,\n} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport {ItemsList} from '../ItemsList';\n\nconst b = cn('navigation-cluster-list');\n\nexport const ClusterList: FC = () => {\n const dispatch = useDispatch();\n const loading = useSelector(selectLoading);\n const clusters = useSelector(selectClustersByFilter);\n\n const handleClusterClick = (cluster: ClusterConfig) => {\n dispatch(setNavigationCluster(cluster.id));\n };\n\n return (\n <ItemsList\n className={b()}\n loading={loading}\n data={clusters}\n render={({id, name, environment}) => {\n return (\n <QueryClusterItem\n key={id}\n id={id}\n name={name}\n environment={environment}\n className={b('item')}\n />\n );\n }}\n onClick={handleClusterClick}\n />\n );\n};\n","import React, {FC} from 'react';\nimport {Text} from '@gravity-ui/uikit';\n\ntype Props = {\n name: string;\n type?: string;\n targetPath?: string;\n};\n\nexport const NodeName: FC<Props> = ({type, name, targetPath}) => {\n return (\n <Text ellipsis>\n {type === 'link' ? (\n <>\n {name}{' '}\n <span role=\"img\" aria-label=\"Arrow pointing right\" style={{margin: '0 4px'}}>\n ➞\n </span>{' '}\n {targetPath}\n </>\n ) : (\n name\n )}\n </Text>\n );\n};\n","import {addI18Keysets} from '../../../../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:query-tracker.navigation-node-list', {en, ru});\n","import React, {FC, MouseEvent} from 'react';\nimport {NavigationNode} from '../../../../../store/reducers/query-tracker/queryNavigationSlice';\nimport './NodeListRow.scss';\nimport cn from 'bem-cn-lite';\nimport {Button, DropdownMenu, Icon} from '@gravity-ui/uikit';\nimport {isFolderNode} from '../../../../../utils/navigation/isFolderNode';\nimport {isTableNode} from '../../../../../utils/navigation/isTableNode';\nimport StarFillIcon from '@gravity-ui/icons/svgs/star-fill.svg';\nimport StarIcon from '@gravity-ui/icons/svgs/star.svg';\nimport TextIndentIcon from '@gravity-ui/icons/svgs/text-indent.svg';\nimport ArrowUpRightFromSquareIcon from '@gravity-ui/icons/svgs/arrow-up-right-from-square.svg';\nimport {useToggle} from 'react-use';\nimport {QueryEngine} from '../../../../../../shared/constants/engines';\nimport {MapNodeIcon} from '../../../../../components/MapNodeIcon/MapNodeIcon';\nimport {NodeName} from '../NodeName';\nimport i18n from './i18n';\n\nconst b = cn('navigation-node-list-row');\n\ntype Props = {\n node: NavigationNode;\n queryEngine: QueryEngine;\n onClick: (path: string, type: string | undefined) => void;\n onFavoriteToggle: (favoritePath: string) => void;\n onClipboardCopy: (path: string, type: 'url' | 'path') => void;\n onEditorInsert: (path: string, type: 'path' | 'select') => void;\n onNewQuery: (path: string, engine: QueryEngine) => void;\n onNewWindowOpen: (path: string) => void;\n};\n\nexport const NodeListRow: FC<Props> = ({\n node,\n queryEngine,\n onClick,\n onFavoriteToggle,\n onClipboardCopy,\n onEditorInsert,\n onNewQuery,\n onNewWindowOpen,\n}) => {\n const {type, dynamic, name, path, targetPath, isFavorite} = node;\n const [tableMenuOpen, toggleTapleMenuOpen] = useToggle(false);\n const [menuOpen, toggleMenuOpen] = useToggle(false);\n const isSupported = isFolderNode(type) || isTableNode(type);\n const showActions = isSupported && name !== '...';\n\n const handleClick = () => {\n if (!isSupported) return;\n onClick(path, type);\n };\n\n const handleStop = (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n };\n\n const handleFavoriteClick = (e: MouseEvent<HTMLButtonElement>) => {\n handleStop(e);\n onFavoriteToggle(path);\n };\n\n const handlePastePathClick = (e: MouseEvent<HTMLButtonElement>) => {\n handleStop(e);\n onEditorInsert(path, 'path');\n };\n\n return (\n <div\n className={b({unsupported: !isSupported, active: menuOpen || tableMenuOpen})}\n onClick={handleClick}\n >\n <div className={b('icon-wrap')}>\n <MapNodeIcon node={{$attributes: node}} />\n {isFavorite && (\n <Icon data={StarFillIcon} className={b('favorite-icon')} size={10} />\n )}\n </div>\n <NodeName type={type} name={name} targetPath={targetPath} />\n {showActions && (\n <div className={b('actions')}>\n <Button view=\"flat\" onClick={handleFavoriteClick}>\n <Icon data={isFavorite ? StarFillIcon : StarIcon} size={16} />\n </Button>\n {isTableNode(type) ? (\n <DropdownMenu\n open={tableMenuOpen}\n onOpenToggle={toggleTapleMenuOpen}\n renderSwitcher={(props) => (\n <Button view=\"flat\" {...props}>\n <Icon data={TextIndentIcon} size={16} />\n </Button>\n )}\n items={[\n {\n text: i18n('action_copy-to-clipboard'),\n items: [\n {\n text: i18n('value_path'),\n action: (e) => {\n e.stopPropagation();\n onClipboardCopy(path, 'path');\n },\n },\n ],\n },\n {\n text: i18n('action_insert-into-editor'),\n items: [\n {\n text: i18n('value_path'),\n action: (e) => {\n e.stopPropagation();\n onEditorInsert(path, 'path');\n },\n },\n ...(dynamic || queryEngine !== QueryEngine.YT_QL\n ? [\n {\n text: i18n('value_select'),\n action: (\n e:\n | React.MouseEvent<HTMLElement>\n | KeyboardEvent,\n ) => {\n e.stopPropagation();\n onEditorInsert(path, 'select');\n },\n },\n ]\n : []),\n ],\n },\n {\n text: i18n('action_create-new-query'),\n items: [\n ...(dynamic\n ? [\n {\n text: i18n('value_select-yt-ql'),\n action: (\n e:\n | React.MouseEvent<HTMLElement>\n | KeyboardEvent,\n ) => {\n e.stopPropagation();\n onNewQuery(path, QueryEngine.YT_QL);\n },\n },\n ]\n : []),\n {\n text: i18n('value_select-yql'),\n action: (e) => {\n e.stopPropagation();\n onNewQuery(path, QueryEngine.YQL);\n },\n },\n {\n text: i18n('value_select-chyt'),\n action: (e) => {\n e.stopPropagation();\n onNewQuery(path, QueryEngine.CHYT);\n },\n },\n {\n text: i18n('value_select-spyt'),\n action: (e) => {\n e.stopPropagation();\n onNewQuery(path, QueryEngine.SPYT);\n },\n },\n ],\n },\n ]}\n onSwitcherClick={handleStop}\n />\n ) : (\n <Button view=\"flat\" onClick={handlePastePathClick}>\n <Icon data={TextIndentIcon} size={16} />\n </Button>\n )}\n <DropdownMenu\n open={menuOpen}\n onOpenToggle={toggleMenuOpen}\n items={[\n {\n action: (e) => {\n e.stopPropagation();\n onClipboardCopy(path, 'url');\n },\n text: i18n('action_copy-link'),\n },\n {\n action: () => {\n onNewWindowOpen(path);\n },\n text: i18n('action_open-in-cluster'),\n iconEnd: <Icon data={ArrowUpRightFromSquareIcon} />,\n },\n ]}\n onSwitcherClick={handleStop}\n />\n </div>\n )}\n </div>\n );\n};\n","import React, {FC, useCallback, useRef, useState} from 'react';\nimport {useDispatch, useSelector} from '../../../../store/redux-hooks';\nimport {\n selectLoading,\n selectNavigationClusterConfig,\n selectNodeListByFilter,\n} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport {NodeListRow} from './NodeListRow';\nimport {\n copyPathToClipboard,\n loadNodeByPath,\n loadTableAttributesByPath,\n makeNewQueryWithTableSelect,\n toggleFavoritePath,\n} from '../../../../store/actions/query-tracker/queryNavigation';\nimport './NodeList.scss';\nimport cn from 'bem-cn-lite';\nimport {isFolderNode} from '../../../../utils/navigation/isFolderNode';\nimport {isTableNode} from '../../../../utils/navigation/isTableNode';\nimport {useMonaco} from '../../hooks/useMonaco';\nimport {insertTextWhereCursor} from '../helpers/insertTextWhereCursor';\nimport {getQueryEngine, isQueryDraftEditted} from '../../../../store/selectors/query-tracker/query';\nimport {makePathByQueryEngine} from '../helpers/makePathByQueryEngine';\nimport {QueryEngine} from '../../../../../shared/constants/engines';\nimport {getNavigationUrl} from '../helpers/getNavigationUrl';\nimport {createTableSelect} from '../helpers/createTableSelect';\nimport {getQueryResultGlobalSettings} from '../../../../store/selectors/query-tracker/queryResult';\nimport {NewQueryPromt} from '../../NewQueryButton/NewQueryButton';\nimport {ItemsList} from '../ItemsList';\n\nconst b = cn('navigation-node-list');\n\nexport const NodeList: FC = () => {\n const dispatch = useDispatch();\n const [showPrompt, setShowPrompt] = useState(false);\n const newQueryParams = useRef<{path: string; engine: QueryEngine} | null>(null);\n const clusterConfig = useSelector(selectNavigationClusterConfig);\n const nodes = useSelector(selectNodeListByFilter);\n const engine = useSelector(getQueryEngine);\n const {pageSize} = getQueryResultGlobalSettings();\n const dirtyQuery = useSelector(isQueryDraftEditted);\n const loading = useSelector(selectLoading);\n const {getEditor} = useMonaco();\n\n const handleNodeClick = (path: string, type: string | undefined) => {\n if (isFolderNode(type)) {\n dispatch(loadNodeByPath(path));\n return;\n }\n if (isTableNode(type)) {\n dispatch(loadTableAttributesByPath(path));\n return;\n }\n };\n\n const handleFavoriteToggle = useCallback(\n (favoritePath: string) => {\n dispatch(toggleFavoritePath(favoritePath));\n },\n [dispatch],\n );\n\n const handleEditorInsert = useCallback(\n async (path: string, type: 'path' | 'select') => {\n if (!clusterConfig || !clusterConfig.id) return;\n const editor = getEditor('queryEditor');\n let text = '';\n if (type === 'path') {\n text = makePathByQueryEngine({\n cluster: clusterConfig.id,\n path,\n engine,\n });\n } else {\n text = await createTableSelect({clusterConfig, path, engine, limit: pageSize});\n }\n insertTextWhereCursor(text, editor);\n },\n [clusterConfig, engine, getEditor, pageSize],\n );\n\n const onClipboardCopy = useCallback(\n (path: string, type: 'path' | 'url') => {\n if (!clusterConfig || !clusterConfig.id) return;\n const pathString =\n type === 'path'\n ? makePathByQueryEngine({\n cluster: clusterConfig.id,\n path,\n engine,\n })\n : getNavigationUrl(clusterConfig.id, path);\n dispatch(copyPathToClipboard(pathString));\n },\n [clusterConfig, dispatch, engine],\n );\n\n const handleNewWindowOpen = useCallback(\n (path: string) => {\n if (!clusterConfig || !clusterConfig.id) return;\n const url = new URL(location.origin + `/${clusterConfig.id}/navigation`);\n url.searchParams.append('path', path);\n window.open(url);\n },\n [clusterConfig],\n );\n\n const handlePromptConfirm = useCallback(() => {\n const parameters = newQueryParams.current;\n if (!parameters) return;\n\n dispatch(makeNewQueryWithTableSelect(parameters.path, parameters.engine));\n setShowPrompt(false);\n }, [dispatch, setShowPrompt]);\n\n const handlePromptCancel = useCallback(() => {\n newQueryParams.current = null;\n setShowPrompt(false);\n }, [setShowPrompt]);\n\n const handleNewQuery = useCallback(\n async (path: string, newEngine: QueryEngine) => {\n if (dirtyQuery) {\n setShowPrompt(true);\n newQueryParams.current = {path, engine: newEngine};\n return;\n }\n\n newQueryParams.current = {path, engine: newEngine};\n handlePromptConfirm();\n },\n [dirtyQuery, handlePromptConfirm, setShowPrompt],\n );\n\n return (\n <div className={b()}>\n <ItemsList\n loading={loading}\n data={nodes}\n render={(node) => {\n return (\n <NodeListRow\n key={node.path}\n node={node}\n queryEngine={engine}\n onClick={handleNodeClick}\n onFavoriteToggle={handleFavoriteToggle}\n onEditorInsert={handleEditorInsert}\n onClipboardCopy={onClipboardCopy}\n onNewWindowOpen={handleNewWindowOpen}\n onNewQuery={handleNewQuery}\n />\n );\n }}\n />\n <NewQueryPromt\n confirm={handlePromptConfirm}\n cancel={handlePromptCancel}\n visible={showPrompt}\n />\n </div>\n );\n};\n\nexport default NodeList;\n","export const getNavigationUrl = (cluster: string, path: string) => {\n const url = new URL(location.origin + location.pathname);\n url.searchParams.append('listMode', 'navigation');\n url.searchParams.append('navCluster', cluster);\n if (path && path !== '/') {\n url.searchParams.append('navPath', path);\n }\n\n return url.toString();\n};\n","import React, {FC} from 'react';\nimport {\n NavigationTableSchema,\n setFilter,\n} from '../../../../store/reducers/query-tracker/queryNavigationSlice';\nimport DataTableYT from '../../../../components/DataTableYT/DataTableYT';\nimport {Column} from '@gravity-ui/react-data-table';\nimport {Text, TextInput} from '@gravity-ui/uikit';\nimport Icon from '../../../../components/Icon/Icon';\nimport {useDispatch, useSelector} from '../../../../store/redux-hooks';\nimport {selectNavigationFilter} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport unipika from '../../../../common/thor/unipika';\n\ntype Props = {\n schema: NavigationTableSchema[];\n};\n\nconst columns: Column<NavigationTableSchema>[] = [\n {\n name: 'name',\n header: 'Name',\n render: ({row}) => {\n return (\n <>\n {Boolean(row.sort_order) && (\n <Icon\n awesome={\n row.sort_order === 'descending'\n ? 'sort-amount-up'\n : 'sort-amount-down-alt'\n }\n size={16}\n />\n )}{' '}\n {unipika.prettyprint(row.name, {asHTML: false})}\n </>\n );\n },\n },\n {\n name: 'type',\n header: 'Type v3',\n render: ({row}) => {\n return (\n <>\n {row.type} {!row.required && <Text variant=\"caption-1\">optional</Text>}\n </>\n );\n },\n },\n];\n\nexport const SchemaTab: FC<Props> = ({schema}) => {\n const dispatch = useDispatch();\n const filter = useSelector(selectNavigationFilter);\n\n const handleFilterChange = (value: string) => {\n dispatch(setFilter(value));\n };\n\n return (\n <>\n <TextInput\n value={filter}\n placeholder=\"Filter by name\"\n onUpdate={handleFilterChange}\n hasClear\n />\n <DataTableYT data={schema} columns={columns} useThemeYT />\n </>\n );\n};\n","import {addI18Keysets} from '../../../../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:query-tracker.navigation-table', {en, ru});\n","import React, {FC, useMemo} from 'react';\nimport {useDispatch} from '../../../../../store/redux-hooks';\nimport {\n NavigationTable,\n NavigationTableSchema,\n} from '../../../../../store/reducers/query-tracker/queryNavigationSlice';\nimport DataTableYT from '../../../../../components/DataTableYT/DataTableYT';\nimport './PreviewTab.scss';\nimport cn from 'bem-cn-lite';\nimport {Button, Icon} from '@gravity-ui/uikit';\nimport ArrowUpRightFromSquareIcon from '@gravity-ui/icons/svgs/arrow-up-right-from-square.svg';\nimport {prepareColumns} from '../../../../../utils/navigation/prepareColumns';\nimport {TypeArray} from '../../../../../components/SchemaDataType/dataTypes';\nimport {YsonSettings} from '../../../../../store/selectors/thor/unipika';\nimport {onCellPreview} from '../../../../../store/actions/navigation/modals/cell-preview';\nimport i18n from './i18n';\n\nconst b = cn('navigation-preview-tab');\n\ntype Props = {\n table: NavigationTable;\n ysonSettings: YsonSettings;\n onEditorInsert: () => void;\n};\n\nexport const PreviewTab: FC<Props> = ({table, ysonSettings, onEditorInsert}) => {\n const dispatch = useDispatch();\n const onShowPreview = React.useCallback(\n (columnName: string, rowIndex: number) => {\n dispatch(onCellPreview({columnName, rowIndex}));\n },\n [dispatch],\n );\n const columns = useMemo(() => {\n return prepareColumns({\n columns: table.columns.map((i) => ({name: i})),\n keyColumns: [],\n yqlTypes: table.yqlTypes as TypeArray[] | null,\n ysonSettings,\n useRawStrings: undefined,\n schemaByName: table.schema.reduce<Record<string, NavigationTableSchema>>(\n (acc, item) => {\n acc[item.name] = item;\n return acc;\n },\n {},\n ),\n onShowPreview,\n });\n }, [table, ysonSettings]);\n\n return (\n <div>\n <Button onClick={onEditorInsert}>\n <Icon data={ArrowUpRightFromSquareIcon} size={16} />\n {i18n('action_insert-select')}\n </Button>\n <DataTableYT className={b()} columns={columns} data={table.rows} useThemeYT />\n </div>\n );\n};\n","import {addI18Keysets} from '../../../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:query-tracker.navigation-table', {en, ru});\n","import React, {FC, useState} from 'react';\nimport {SegmentedRadioGroup} from '@gravity-ui/uikit';\nimport cn from 'bem-cn-lite';\nimport './NavigationTable.scss';\nimport {SchemaTab} from './SchemaTab';\nimport {useSelector} from '../../../../store/redux-hooks';\nimport {\n selectNavigationClusterConfig,\n selectNavigationPath,\n selectTableWithFilter,\n} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport {PreviewTab} from './PreviewTab/PreviewTab';\nimport {insertTextWhereCursor} from '../helpers/insertTextWhereCursor';\nimport {createTableSelect} from '../helpers/createTableSelect';\nimport {useMonaco} from '../../hooks/useMonaco';\nimport {getQueryEngine} from '../../../../store/selectors/query-tracker/query';\nimport {getPageSize} from '../../../../store/selectors/navigation/content/table-ts';\nimport {getYsonSettingsDisableDecode} from '../../../../store/selectors/thor/unipika';\nimport i18n from './i18n';\n\nconst enum TableTab {\n Schema = 'schema',\n Preview = 'preview',\n Meta = 'meta',\n}\n\nconst b = cn('qt-navigation-table');\n\nexport const NavigationTable: FC = () => {\n const [activeTab, setActiveTab] = useState(TableTab.Schema);\n const clusterConfig = useSelector(selectNavigationClusterConfig);\n const table = useSelector(selectTableWithFilter);\n const engine = useSelector(getQueryEngine);\n const limit = useSelector(getPageSize);\n const path = useSelector(selectNavigationPath);\n const ysonSettings = useSelector(getYsonSettingsDisableDecode);\n const {getEditor} = useMonaco();\n\n const handleChangeTab = (id: string) => {\n setActiveTab(id as TableTab);\n };\n\n const handleInsertTableSelect = async () => {\n if (!clusterConfig) return;\n const editor = getEditor('queryEditor');\n const text = await createTableSelect({clusterConfig, path, engine, limit});\n insertTextWhereCursor(text, editor);\n };\n\n if (!table) return <div>{i18n('context_empty-data')}</div>;\n\n return (\n <div className={b()}>\n <SegmentedRadioGroup\n defaultValue={activeTab}\n onUpdate={handleChangeTab}\n options={[\n {value: TableTab.Schema, content: i18n('title_schema')},\n {value: TableTab.Preview, content: i18n('title_preview')},\n {value: TableTab.Meta, content: i18n('title_meta')},\n ]}\n />\n <div className={b('content')}>\n {activeTab === TableTab.Schema && <SchemaTab schema={table.schema} />}\n {activeTab === TableTab.Preview && (\n <PreviewTab\n table={table}\n onEditorInsert={handleInsertTableSelect}\n ysonSettings={ysonSettings}\n />\n )}\n {activeTab === TableTab.Meta && <MetaTable items={table.meta} />}\n </div>\n </div>\n );\n};\n","import React, {FC} from 'react';\nimport {Flex, Loader} from '@gravity-ui/uikit';\n\nexport const LoadingPlaceholder: FC = () => {\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n <Loader />\n </Flex>\n );\n};\n","import React, {FC} from 'react';\nimport {useSelector} from '../../../../store/redux-hooks';\nimport {\n selectNavigationCluster,\n selectNavigationError,\n selectNavigationPath,\n} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport {NavigationError as PrettyError} from '../../../navigation/Navigation/NavigationError/NavigationError';\nimport './NavigationError.scss';\nimport cn from 'bem-cn-lite';\n\nconst b = cn('yt-qt-navigation-error');\n\nexport const NavigationError: FC = () => {\n const error = useSelector(selectNavigationError);\n const cluster = useSelector(selectNavigationCluster);\n const path = useSelector(selectNavigationPath);\n\n if (!cluster || !error) return null;\n\n return (\n <div className={b()}>\n <PrettyError\n message={error?.message}\n details={error}\n cluster={cluster}\n path={path}\n vertical\n />\n </div>\n );\n};\n","import React, {FC} from 'react';\nimport {NavigationEmpty} from './NavigationEmpty';\nimport {useSelector} from '../../../../store/redux-hooks';\nimport {selectNavigationNodeType} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport {BodyType} from '../../../../store/reducers/query-tracker/queryNavigationSlice';\nimport {ClusterList} from '../ClusterList';\nimport {NodeList} from '../NodeList';\nimport {NavigationTable} from '../NavigationTable';\nimport {LoadingPlaceholder} from './LoadingPlaceholder';\nimport {NavigationError} from './NavigationError';\n\nexport const NavigationBody: FC = () => {\n const nodeType = useSelector(selectNavigationNodeType);\n\n switch (nodeType) {\n case BodyType.Tree:\n return <NodeList />;\n case BodyType.Table:\n return <NavigationTable />;\n case BodyType.Cluster:\n return <ClusterList />;\n case BodyType.Loading:\n return <LoadingPlaceholder />;\n case BodyType.Error:\n return <NavigationError />;\n default:\n return <NavigationEmpty />;\n }\n};\n","import React, {FC, useEffect} from 'react';\nimport './Navigation.scss';\nimport {NavigationHeader} from './NavigationHeader';\nimport {NavigationBody} from './NavigationBody';\nimport cn from 'bem-cn-lite';\nimport {useDispatch} from '../../../store/redux-hooks';\nimport {initNavigation} from '../../../store/actions/query-tracker/queryNavigation';\n\nconst b = cn('query-navigation');\n\nexport const Navigation: FC = () => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(initNavigation());\n }, [dispatch]);\n\n return (\n <div className={b()}>\n <NavigationHeader />\n <NavigationBody />\n </div>\n );\n};\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nconst block = cn('yt-page-counter');\n\nexport interface PageCounterProps {\n className?: string;\n pageIndex?: number;\n pageCount?: number;\n}\n\nfunction PageCounter({pageIndex, pageCount, className}: PageCounterProps) {\n if (pageIndex === undefined || pageCount === undefined) {\n return null;\n }\n\n return pageCount! > 1 ? (\n <span className={block(null, className)}>\n Page: {(pageIndex || 0) + 1} / {pageCount}\n </span>\n ) : null;\n}\n\nexport default React.memo(PageCounter);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport barsDescendingSvg from '@gravity-ui/icons/svgs/bars-descending-align-left.svg';\nimport {Button, DropdownMenu, Icon, Text} from '@gravity-ui/uikit';\n\nimport format from '../../common/hammer/format';\n\nimport SortIcon from '../../components/SortIcon/SortIcon';\n\nimport {OrderType, calculateNextOrderValue, nextSortOrderValue} from '../../utils/sort-helpers';\nimport PageCounter, {PageCounterProps} from '../../components/PageCounter/PageCounter';\nimport Loader from '../../components/Loader/Loader';\nimport {rumLogError} from '../../rum/rum-counter';\n\nimport './ColumnHeader.scss';\n\nconst block = cn('column-header');\n\nexport type ColumnInfo<T> = {\n column: T;\n title?: string;\n shortTitle?: string;\n /**\n * Ignored when allowedOrderTypes is defined\n */\n allowUnordered?: boolean;\n /**\n * Ignored when allowedOrderTypes is defined\n */\n withUndefined?: boolean;\n allowedOrderTypes?: Array<OrderType>;\n};\n\nexport type HasSortColumn<T> =\n | (ColumnInfo<T> & {options?: undefined})\n | ({\n title: string;\n shortTitle?: string;\n column: T;\n options: Array<ColumnInfo<T>>;\n } & Partial<Record<keyof Omit<ColumnInfo<T>, 'column' | 'title' | 'shortTitle'>, undefined>>);\n\nexport type ColumnHeaderProps<T extends string = string> = PageCounterProps &\n HasSortColumn<T> & {\n className?: string;\n order?: OrderType;\n multisortIndex?: number;\n sortIconSize?: number;\n onSort?: (\n column: T,\n nextOrder: OrderType,\n options: {currentOrder?: OrderType; multisort?: boolean},\n ) => void;\n\n loading?: boolean;\n\n align?: 'center' | 'left' | 'right';\n };\n\ntype NameTitleContent = {\n nameContent: string;\n titleContent: string;\n};\n\nfunction getNameTitle<T extends string>({\n column,\n title,\n shortTitle,\n}: Pick<ColumnInfo<T>, 'column' | 'title' | 'shortTitle'>): NameTitleContent {\n const t = title ?? format.ReadableField(column);\n const nameContent = !shortTitle ? t : shortTitle;\n return {nameContent, titleContent: t};\n}\n\nfunction useColumnInfo<T extends string = string>(\n props: ColumnHeaderProps<T>,\n): ColumnInfo<T> & NameTitleContent & {subColumn?: NameTitleContent} {\n if (props.options === undefined) {\n const {column, allowUnordered, withUndefined, title, shortTitle, allowedOrderTypes} = props;\n return {\n column,\n allowUnordered,\n withUndefined,\n allowedOrderTypes,\n ...getNameTitle({column, title, shortTitle}),\n };\n }\n\n const {column: value, options, title, shortTitle} = props;\n const columnData = options.find(({column}) => value === column)!;\n if (!columnData) {\n rumLogError({\n message: 'Unexpected behavior: missing value in ColumnHeader.props.options',\n additional: props,\n });\n }\n return {\n subColumn: getNameTitle({...columnData}),\n ...columnData,\n ...getNameTitle({column: '', title, shortTitle}),\n };\n}\n\nexport default function ColumnHeader<T extends string = string>(props: ColumnHeaderProps<T>) {\n const {\n className,\n align,\n order,\n onSort,\n multisortIndex,\n loading,\n pageIndex,\n pageCount,\n sortIconSize,\n } = props;\n const {\n column,\n allowUnordered,\n withUndefined,\n nameContent,\n titleContent,\n allowedOrderTypes,\n subColumn,\n } = useColumnInfo(props);\n\n const changeHandler = React.useCallback(\n (e: React.MouseEvent) => {\n const nextOrder = allowedOrderTypes\n ? calculateNextOrderValue(order, allowedOrderTypes)\n : nextSortOrderValue(order, allowUnordered, withUndefined);\n onSort?.(column, nextOrder, {\n currentOrder: order,\n multisort: e.ctrlKey || e.metaKey,\n });\n },\n [column, order, onSort, allowUnordered, allowedOrderTypes, withUndefined],\n );\n\n const sortable = Boolean(onSort);\n\n return (\n <div className={block(null, className)}>\n <div\n className={block('label-icon', {sortable, align})}\n onClick={sortable ? changeHandler : undefined}\n >\n <span className={block('label')} title={titleContent}>\n {nameContent}\n </span>\n {sortable && (\n <span className={block('icon')}>\n <SortIcon order={order} size={sortIconSize} />\n </span>\n )}\n {multisortIndex !== undefined && (\n <span className={block('multisort')}>\n <sup>{multisortIndex}</sup>\n </span>\n )}\n {Boolean(order) && Boolean(subColumn) && (\n <Text\n className={block('label', {'sub-column': true})}\n variant=\"caption-2\"\n title={subColumn?.titleContent}\n color=\"dark-secondary\"\n >\n {subColumn?.nameContent}\n </Text>\n )}\n </div>\n <SubColumnSelector options={props.options} order={order} onSort={onSort} />\n {loading !== undefined && (\n <div className={block('loader')}>\n <Loader visible={loading} />\n </div>\n )}\n {Boolean(pageCount) && (\n <PageCounter\n className={block('page-counter')}\n pageIndex={pageIndex}\n pageCount={pageCount}\n />\n )}\n </div>\n );\n}\n\nfunction SubColumnSelector<T extends string>({\n order,\n options,\n onSort,\n}: Pick<ColumnHeaderProps<T>, 'onSort'> & {\n order?: ColumnHeaderProps<T>['order'];\n options?: Array<ColumnInfo<T>>;\n}) {\n return !options ? null : (\n <DropdownMenu\n items={options.map((x) => {\n const {titleContent} = getNameTitle(x);\n return {\n text: titleContent,\n action() {\n if (!onSort) {\n return;\n }\n const {column, allowUnordered, withUndefined, allowedOrderTypes} = x;\n const nextOrder = allowedOrderTypes\n ? calculateNextOrderValue(order, allowedOrderTypes)\n : nextSortOrderValue(order, allowUnordered, withUndefined);\n onSort(column, nextOrder, {\n currentOrder: order,\n });\n },\n };\n })}\n renderSwitcher={({onClick}) => (\n <Button onClick={onClick} view=\"flat\" size=\"xs\">\n <Icon size={12} data={barsDescendingSvg} />\n </Button>\n )}\n />\n );\n}\n","const SvgFolderTree = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M7.5 13.5v-3A.5.5 0 0 1 8 10h.672a.5.5 0 0 1 .353.146l.414.415.44.439H13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5H8a.5.5 0 0 1-.5-.5M6 13H4.5a3 3 0 0 1-3-3V1.25a.75.75 0 0 1 1.5 0V2a1.5 1.5 0 0 0 1.5 1.5H6v-1a2 2 0 0 1 2-2h.672a2 2 0 0 1 1.414.586l.414.414H13a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2V5H4.5A3 3 0 0 1 3 4.599V10a1.5 1.5 0 0 0 1.5 1.5H6v-1a2 2 0 0 1 2-2h.672a2 2 0 0 1 1.414.586l.414.414H13a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2zm1.5-8.75V5.5A.5.5 0 0 0 8 6h5a.5.5 0 0 0 .5-.5v-2A.5.5 0 0 0 13 3H9.879l-.44-.44-.414-.414A.5.5 0 0 0 8.672 2H8a.5.5 0 0 0-.5.5z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgFolderTree;","import {TRASH_PATH} from '../../constants/navigation';\n\nexport function isTrashNode(path?: string) {\n return path === TRASH_PATH;\n}\n","import {addComponentKeysets} from '../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nconst COMPONENT = 'lab/Breadcrumbs';\n\nexport default addComponentKeysets({en, ru}, COMPONENT);\n","import {block} from '../utils/cn';\n\nexport const b = block('breadcrumbs');\n","'use client';\n\nimport * as React from 'react';\n\nimport {\n useClick,\n useDismiss,\n useFloatingRootContext,\n useInteractions,\n useListNavigation,\n useRole,\n} from '@floating-ui/react';\nimport type {UseInteractionsReturn} from '@floating-ui/react';\n\nimport {Button} from '../Button';\nimport {Popup} from '../Popup';\nimport type {PopupPlacement} from '../Popup';\n\nimport i18n from './i18n';\nimport {b} from './utils';\n\ninterface DropdownMenuProps {\n children: React.ReactNode;\n disabled?: boolean;\n popupPlacement?: PopupPlacement;\n popupStyle?: 'staircase';\n}\n\ninterface MenuContext {\n isMenu: boolean;\n activeIndex: null | number;\n getItemProps: UseInteractionsReturn['getItemProps'];\n listItemsRef: {current: Array<HTMLElement | null>};\n popupStyle: undefined | 'staircase';\n}\n\nconst menuContext = React.createContext<MenuContext>({\n isMenu: false,\n activeIndex: null as null | number,\n getItemProps: (props = {}) => props,\n listItemsRef: {current: []},\n popupStyle: undefined,\n});\n\nexport function BreadcrumbsDropdownMenu({\n children,\n disabled,\n popupPlacement,\n popupStyle,\n}: DropdownMenuProps) {\n const [reference, setReference] = React.useState<HTMLButtonElement | null>(null);\n const [floating, setFloating] = React.useState<HTMLDivElement | null>(null);\n const [activeIndex, setActiveIndex] = React.useState<number | null>(null);\n const [open, setOpen] = React.useState(false);\n\n const context = useFloatingRootContext({\n open,\n onOpenChange: setOpen,\n elements: {reference, floating},\n });\n\n const listItemsRef = React.useRef<Array<HTMLElement | null>>([]);\n\n const listNavigation = useListNavigation(context, {\n enabled: !disabled,\n listRef: listItemsRef,\n activeIndex,\n onNavigate: setActiveIndex,\n loop: true,\n });\n\n const dismiss = useDismiss(context, {enabled: !disabled});\n const click = useClick(context, {enabled: !disabled});\n const role = useRole(context, {role: 'menu'});\n\n const interactions = [click, dismiss, listNavigation, role];\n const {getReferenceProps, getItemProps} = useInteractions(interactions);\n\n const {t} = i18n.useTranslation();\n\n return (\n <div className={b('menu')}>\n <Button\n ref={setReference}\n {...getReferenceProps()}\n title={t('label_more')}\n aria-label={t('label_more')}\n size=\"s\"\n view=\"flat\"\n disabled={disabled}\n >\n <Button.Icon>...</Button.Icon>\n </Button>\n <Popup\n floatingContext={context}\n floatingRef={setFloating}\n floatingInteractions={interactions}\n placement={popupPlacement}\n className={b('menu-popup')}\n >\n <menuContext.Provider\n value={{isMenu: true, getItemProps, listItemsRef, activeIndex, popupStyle}}\n >\n {children}\n </menuContext.Provider>\n </Popup>\n </div>\n );\n}\n\nexport function useMenuContext() {\n return React.useContext(menuContext);\n}\n","import * as React from 'react';\n\nimport {Check} from '@gravity-ui/icons';\nimport {focusable} from 'tabbable';\n\nimport {useForkRef} from '../../../hooks';\nimport {ArrowToggle} from '../../ArrowToggle';\nimport {Button} from '../../Button';\nimport {Icon} from '../../Icon';\nimport type {DOMProps} from '../../types';\nimport {block} from '../../utils/cn';\nimport {filterDOMProps} from '../../utils/filterDOMProps';\n\nimport './ListItemView.scss';\n\nconst b = block('lab-list-item-view');\n\nexport interface ListItemViewProps<T extends React.ElementType = 'div'> extends DOMProps {\n id?: string;\n children: React.ReactNode;\n size?: 's' | 'm' | 'l' | 'xl';\n selected?: boolean;\n active?: boolean;\n hovered?: boolean;\n onClick?: (e: React.MouseEvent) => void;\n disabled?: boolean;\n selectionStyle?: 'check' | 'highlight' | 'none';\n collapsible?: boolean;\n collapsed?: boolean;\n onCollapseChange?: (collapsed: boolean) => void;\n draggable?: boolean;\n nestedLevel?: number;\n startContent?: React.ReactNode;\n description?: React.ReactNode;\n endContent?: React.ReactNode;\n isContainer?: boolean;\n component?: T;\n componentProps?: React.ComponentProps<T>;\n}\n\nexport const ListItemView = React.forwardRef(ListItemViewComponent) as <\n T extends React.ElementType = 'div',\n>(\n props: ListItemViewProps<T> & Omit<React.ComponentPropsWithRef<T>, keyof ListItemViewProps<T>>,\n) => React.ReactElement;\n\nexport function ListItemViewComponent(\n props: ListItemViewProps & Omit<React.ComponentPropsWithoutRef<'div'>, keyof ListItemViewProps>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n size,\n active,\n selected,\n hovered,\n disabled,\n onClick,\n selectionStyle,\n className,\n style,\n collapsed,\n onCollapseChange,\n children,\n isContainer = false,\n component: Component = 'div',\n componentProps,\n collapsible: _collapsible,\n description,\n draggable: _draggable,\n startContent: _startContent,\n endContent: _endContent,\n nestedLevel: _nestedLevel,\n } = props;\n const containerRef = React.useRef(null);\n const componentRef = useForkRef(containerRef, ref);\n return (\n <Component\n ref={componentRef}\n {...componentProps}\n {...filterDOMProps(props)}\n className={b(\n {\n size,\n selected: selected && selectionStyle === 'highlight',\n disabled,\n active,\n hovered: typeof hovered === 'boolean' && (hovered ? 'yes' : 'no'),\n 'is-container': isContainer,\n 'has-description': Boolean(description),\n },\n componentProps?.className ?? className,\n )}\n style={componentProps?.style ?? style}\n onClick={(e) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n const target = e.target;\n if (\n target instanceof Element &&\n containerRef.current &&\n focusable(containerRef.current).some((el) => el.contains(target))\n ) {\n return;\n }\n\n if (\n typeof onClick === 'function' ||\n typeof componentProps?.onClick === 'function'\n ) {\n onClick?.(e);\n componentProps?.onClick?.(e);\n } else if (typeof onCollapseChange === 'function') {\n onCollapseChange(!collapsed);\n }\n }}\n >\n {isContainer ? (\n children\n ) : (\n <ListItemViewContent {...props}>{children}</ListItemViewContent>\n )}\n </Component>\n );\n}\n\nfunction ListItemViewContent({\n selected,\n disabled,\n selectionStyle,\n draggable,\n nestedLevel,\n collapsible,\n collapsed,\n onCollapseChange,\n startContent,\n children,\n description,\n endContent,\n}: ListItemViewProps) {\n return (\n <React.Fragment>\n {draggable ? <Slot name=\"drag-handle\" /> : null}\n {nestedLevel ? <Slot name=\"spacer\" style={{'--_--nested-level': nestedLevel}} /> : null}\n {collapsible ? (\n <Slot name=\"collapsed-toggle\">\n <Button\n className={b('collapsible')}\n view=\"flat\"\n tabIndex={-1}\n disabled={disabled}\n onClick={() => {\n onCollapseChange?.(!collapsed);\n }}\n aria-hidden=\"true\"\n >\n <Button.Icon>\n <ArrowToggle\n className={b('arrow', {direction: collapsed ? 'bottom' : 'top'})}\n />\n </Button.Icon>\n </Button>\n </Slot>\n ) : null}\n {selectionStyle === 'check' && (\n <Slot name=\"checked\">\n <div className={b('checked')}>\n {selected ? <Icon data={Check} className={b('icon')} /> : null}\n </div>\n </Slot>\n )}\n {startContent ? <Slot name=\"start-content\">{startContent}</Slot> : null}\n <Slot name=\"content\">{children}</Slot>\n {description ? <Slot name=\"description\">{description}</Slot> : null}\n {endContent ? <Slot name=\"end-content\">{endContent}</Slot> : null}\n </React.Fragment>\n );\n}\n\nfunction Slot({\n name,\n children,\n className,\n style,\n}: {\n name:\n | 'drag-handle'\n | 'spacer'\n | 'collapsed-toggle'\n | 'checked'\n | 'start-content'\n | 'content'\n | 'description'\n | 'end-content'\n | 'container';\n children?: React.ReactNode;\n} & DOMProps) {\n return (\n <div className={b('slot', {name}, className)} style={style}>\n {children}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\n\nimport {KeyCode} from '../../constants';\nimport {ListItemView} from '../lab/ListItemView/ListItemView';\nimport {filterDOMProps} from '../utils/filterDOMProps';\n\nimport {useMenuContext} from './BreadcrumbsDropdownMenu';\nimport {b} from './utils';\n\nexport interface BreadcrumbsItemInnerProps {\n __disabled?: boolean;\n __onAction?: () => void;\n __current?: boolean;\n __index?: number;\n}\n\nexport interface BreadcrumbsItemProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\nfunction BreadcrumbsItem(props: BreadcrumbsItemProps, ref: React.ForwardedRef<HTMLAnchorElement>) {\n const domProps = filterDOMProps(props, {labelable: true});\n\n const {\n href,\n hrefLang,\n target,\n rel,\n download,\n ping,\n referrerPolicy,\n children,\n __disabled: disabled,\n __current: current,\n __onAction: onAction,\n __index: index,\n ...restProps\n } = props as BreadcrumbsItemProps & BreadcrumbsItemInnerProps;\n\n const handleAction = (event: React.MouseEvent<HTMLAnchorElement>) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n if (typeof restProps.onClick === 'function') {\n restProps.onClick(event);\n }\n\n if (typeof onAction === 'function') {\n onAction();\n }\n };\n\n const linkProps: React.AnchorHTMLAttributes<HTMLAnchorElement> = {\n onClick: handleAction,\n 'aria-disabled': disabled ? true : undefined,\n };\n\n if (href) {\n linkProps.href = href;\n linkProps.hrefLang = hrefLang;\n linkProps.target = target;\n linkProps.rel = target === '_blank' && !rel ? 'noopener noreferrer' : rel;\n linkProps.download = download;\n linkProps.ping = ping;\n linkProps.referrerPolicy = referrerPolicy;\n linkProps.tabIndex = disabled ? -1 : undefined;\n } else {\n linkProps.role = 'link';\n linkProps.tabIndex = disabled ? undefined : 0;\n linkProps.onKeyDown = (event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n if (typeof restProps.onKeyDown === 'function') {\n restProps.onKeyDown(event);\n }\n\n if (event.key === KeyCode.ENTER) {\n if (typeof onAction === 'function') {\n onAction();\n }\n }\n };\n }\n\n if (current) {\n linkProps['aria-current'] = props['aria-current'] ?? 'page';\n }\n\n const Element = href ? 'a' : 'span';\n\n const {isMenu, getItemProps, listItemsRef, activeIndex, popupStyle} = useMenuContext();\n if (isMenu) {\n const active = !disabled && activeIndex === index;\n return (\n <ListItemView\n ref={(node: HTMLElement | null) => {\n listItemsRef.current[index ?? 0] = node;\n }}\n nestedLevel={popupStyle === 'staircase' ? index : undefined}\n active={active}\n size=\"m\"\n className={b('menu-link', props.className)}\n component={Element}\n componentProps={getItemProps({\n ...restProps,\n ...domProps,\n ...linkProps,\n role: 'menuitem',\n tabIndex: active ? 0 : -1,\n })}\n disabled={disabled}\n >\n {children}\n </ListItemView>\n );\n }\n\n return (\n <Element\n {...restProps}\n {...domProps}\n {...linkProps}\n ref={ref}\n className={b(\n 'link',\n {\n 'is-current': current,\n 'is-disabled': disabled && !current,\n },\n props.className,\n )}\n >\n {children}\n </Element>\n );\n}\n\nBreadcrumbsItem.displayName = 'Breadcrumbs.Item';\n\nconst _BreadcrumbsItem = React.forwardRef(BreadcrumbsItem);\nexport {_BreadcrumbsItem as BreadcrumbsItem};\n","import type {BreadcrumbsProps} from './Breadcrumbs';\nimport {b} from './utils';\n\ntype Props = Pick<BreadcrumbsProps, 'separator'>;\n\nexport function BreadcrumbsSeparator({separator}: Props) {\n return (\n <div aria-hidden={true} className={b('divider')}>\n {separator ?? '/'}\n </div>\n );\n}\n\nBreadcrumbsSeparator.displayName = 'Breadcrumbs.Separator';\n","'use client';\n\nimport * as React from 'react';\n\nimport {useForkRef, useResizeObserver} from '../../hooks';\nimport type {PopupPlacement} from '../Popup';\nimport type {AriaLabelingProps, DOMProps, Key, QAProps} from '../types';\nimport {filterDOMProps} from '../utils/filterDOMProps';\n\nimport {BreadcrumbsDropdownMenu} from './BreadcrumbsDropdownMenu';\nimport {BreadcrumbsItem} from './BreadcrumbsItem';\nimport type {BreadcrumbsItemInnerProps} from './BreadcrumbsItem';\nimport {BreadcrumbsSeparator} from './BreadcrumbsSeparator';\nimport {b} from './utils';\n\nimport './Breadcrumbs.scss';\n\nexport interface BreadcrumbsProps extends DOMProps, AriaLabelingProps, QAProps {\n id?: string;\n showRoot?: boolean;\n separator?: React.ReactNode;\n maxItems?: number;\n popupStyle?: 'staircase';\n popupPlacement?: PopupPlacement;\n itemComponent?: React.ElementType;\n children: React.ReactNode;\n disabled?: boolean;\n onAction?: (key: Key) => void;\n endContent?: React.ReactNode;\n}\n\nexport const Breadcrumbs = React.forwardRef(function Breadcrumbs(\n props: BreadcrumbsProps,\n ref: React.Ref<HTMLOListElement>,\n) {\n const listRef = React.useRef<HTMLOListElement>(null);\n const containerRef = useForkRef(ref, listRef);\n const endContentRef = React.useRef<HTMLLIElement>(null);\n\n const items: React.ReactElement<any>[] = [];\n React.Children.forEach(props.children, (child, index) => {\n if (React.isValidElement(child)) {\n if (child.key === undefined || child.key === null) {\n child = React.cloneElement(child, {key: index});\n }\n items.push(child);\n }\n });\n\n const [visibleItemsCount, setVisibleItemsCount] = React.useState(items.length);\n const [calculated, setCalculated] = React.useState(false);\n const recalculate = (visibleItems: number) => {\n const list = listRef.current;\n if (!list) {\n return;\n }\n const listItems = Array.from(list.children) as HTMLElement[];\n const endElement = endContentRef.current;\n if (endElement) {\n listItems.pop();\n }\n if (listItems.length === 0) {\n setCalculated(true);\n return;\n }\n const containerWidth = list.offsetWidth - (endElement?.offsetWidth ?? 0);\n let newVisibleItemsCount = 0;\n let calculatedWidth = 0;\n let maxItems = props.maxItems || Infinity;\n\n let rootWidth = 0;\n if (props.showRoot) {\n const item = listItems.shift();\n if (item) {\n rootWidth = item.offsetWidth;\n calculatedWidth += rootWidth;\n }\n newVisibleItemsCount++;\n }\n\n const hasMenu = items.length > visibleItems;\n if (hasMenu) {\n const item = listItems.shift();\n if (item) {\n calculatedWidth += item.offsetWidth;\n }\n maxItems--;\n }\n\n if (props.showRoot && calculatedWidth >= containerWidth) {\n calculatedWidth -= rootWidth;\n newVisibleItemsCount--;\n }\n\n const lastItem = listItems.pop();\n if (lastItem) {\n calculatedWidth += Math.min(lastItem.offsetWidth, 200);\n if (calculatedWidth < containerWidth) {\n newVisibleItemsCount++;\n }\n }\n\n for (let i = listItems.length - 1; i >= 0; i--) {\n const item = listItems[i];\n calculatedWidth += item.offsetWidth;\n if (calculatedWidth >= containerWidth) {\n break;\n }\n newVisibleItemsCount++;\n }\n\n newVisibleItemsCount = Math.max(Math.min(maxItems, newVisibleItemsCount), 1);\n if (newVisibleItemsCount === visibleItemsCount) {\n setCalculated(true);\n } else {\n setVisibleItemsCount(newVisibleItemsCount);\n }\n };\n\n const handleResize = React.useCallback(() => {\n setVisibleItemsCount(items.length);\n setCalculated(false);\n }, [items.length]);\n useResizeObserver({\n ref: listRef,\n onResize: handleResize,\n });\n useResizeObserver({\n ref: props.endContent ? endContentRef : undefined,\n onResize: handleResize,\n });\n\n const lastChildren = React.useRef<typeof props.children | null>(null);\n React.useLayoutEffect(() => {\n if (calculated && props.children !== lastChildren.current) {\n lastChildren.current = props.children;\n setVisibleItemsCount(items.length);\n setCalculated(false);\n }\n }, [calculated, items.length, props.children]);\n\n React.useLayoutEffect(() => {\n if (!calculated) {\n recalculate(visibleItemsCount);\n }\n });\n\n let contents = items;\n if (items.length > visibleItemsCount) {\n contents = [];\n const breadcrumbs = [...items];\n let endItems = visibleItemsCount;\n if (props.showRoot && visibleItemsCount > 1) {\n const rootItem = breadcrumbs.shift();\n if (rootItem) {\n contents.push(rootItem);\n }\n endItems--;\n }\n const hiddenItems = breadcrumbs.slice(0, -endItems);\n const menuItem = (\n <BreadcrumbsDropdownMenu\n disabled={props.disabled}\n popupPlacement={props.popupPlacement}\n popupStyle={props.popupStyle}\n data-breadcrumbs-menu-item={true}\n >\n {hiddenItems.map((child, index) => {\n const Component = props.itemComponent ?? BreadcrumbsItem;\n const key = child.key ?? index;\n const handleAction = () => {\n if (typeof props.onAction === 'function') {\n props.onAction(key);\n }\n };\n const innerProps: BreadcrumbsItemInnerProps = {\n __index: index,\n __disabled: props.disabled || child.props.disabled,\n __onAction: handleAction,\n };\n return (\n <Component {...child.props} key={key} {...innerProps}>\n {child.props.children}\n </Component>\n );\n })}\n </BreadcrumbsDropdownMenu>\n );\n\n contents.push(menuItem);\n contents.push(...breadcrumbs.slice(-endItems));\n }\n\n const lastIndex = contents.length - 1;\n const breadcrumbsItems = contents.map((child, index) => {\n const isCurrent = index === lastIndex;\n const key = child.key ?? index;\n\n const {'data-breadcrumbs-menu-item': isMenu, ...childProps} = child.props;\n let item: React.ReactNode;\n if (isMenu) {\n item = child;\n } else {\n const Component = props.itemComponent ?? BreadcrumbsItem;\n const handleAction = () => {\n if (typeof props.onAction === 'function') {\n props.onAction(key);\n }\n };\n const innerProps: BreadcrumbsItemInnerProps = {\n __current: isCurrent,\n __disabled: props.disabled || childProps.disabled,\n __onAction: handleAction,\n };\n item = (\n <Component {...childProps} key={key} {...innerProps}>\n {childProps.children}\n </Component>\n );\n }\n return (\n <li\n key={isMenu ? 'menu' : `item-${key}`}\n className={b('item', {calculating: isCurrent && !calculated, current: isCurrent})}\n >\n {item}\n {isCurrent ? null : <BreadcrumbsSeparator separator={props.separator} />}\n </li>\n );\n });\n if (props.endContent) {\n breadcrumbsItems.push(\n <li key=\"end-content\" ref={endContentRef} className={b('item')}>\n {props.endContent}\n </li>,\n );\n }\n return (\n <ol\n ref={containerRef}\n {...filterDOMProps(props, {labelable: true})}\n data-qa={props.qa}\n className={b(null, props.className)}\n style={props.style}\n >\n {breadcrumbsItems}\n </ol>\n );\n}) as unknown as BreadcrumbsComponent;\n\ntype BreadcrumbsComponent = React.FunctionComponent<\n BreadcrumbsProps & {ref?: React.Ref<HTMLElement>}\n> & {\n Item: typeof BreadcrumbsItem;\n};\n\nBreadcrumbs.Item = BreadcrumbsItem;\nBreadcrumbs.displayName = 'Breadcrumbs';\n","const SvgTextIndent = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M13.25 2H2.75a.75.75 0 0 0 0 1.5h10.5a.75.75 0 0 0 0-1.5m0 3.5h-5.5a.75.75 0 0 0 0 1.5h5.5a.75.75 0 0 0 0-1.5m0 3.5h-5.5a.75.75 0 0 0 0 1.5h5.5a.75.75 0 0 0 0-1.5m-10.5 3.5h10.5a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5m.49-7a.74.74 0 0 1 .463.162l1.906 1.526a1.04 1.04 0 0 1 0 1.624l-1.906 1.526A.74.74 0 0 1 2.5 9.76V6.24a.74.74 0 0 1 .74-.74\" clipRule=\"evenodd\" /></svg>;\nexport default SvgTextIndent;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\nimport unipika from '../../common/thor/unipika';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\nimport Yson from '../../components/Yson/Yson';\nimport {UnipikaSettings} from '../../components/Yson/StructuredYson/StructuredYsonTypes';\n\n/**\n * See unipika for more details\n */\nexport type UnipikaValueType = Array<string | UnipikaValueType>;\n\nexport type YqlValueProps = {\n value?: unknown;\n type: UnipikaValueType;\n settings: UnipikaSettings;\n inline?: boolean;\n};\n\nexport default class YqlValue extends React.Component<YqlValueProps> {\n static propTypes = {\n settings: PropTypes.object,\n value: PropTypes.any,\n type: PropTypes.array,\n inline: PropTypes.bool,\n };\n\n static defaultProps = {\n inline: false,\n folding: false,\n settings: Yson.defaultUnipikaSettings,\n };\n\n static getFormattedValue(value: unknown, type: UnipikaValueType, settings: UnipikaSettings) {\n const yqlValue = [value, type];\n\n return settings.format === 'raw-json'\n ? unipika.formatRaw(yqlValue, settings)\n : unipika.formatFromYQL(yqlValue, settings);\n }\n\n render() {\n const {value, type, inline, settings} = this.props;\n\n const formattedValue = YqlValue.getFormattedValue(value, type, settings);\n\n let title;\n\n if (inline) {\n const titleSettings = Object.assign({}, settings, {\n asHTML: false,\n });\n\n title =\n settings.format === 'raw-json'\n ? unipika.formatRaw(value, titleSettings)\n : unipika.formatFromYQL(value, titleSettings);\n }\n\n const classes = block('unipika-wrapper')({\n inline: inline && 'yes',\n });\n\n return (\n <ErrorBoundary>\n {settings.asHTML ? (\n <div className={classes} title={title} dir=\"auto\">\n <pre\n className=\"unipika\"\n dangerouslySetInnerHTML={{__html: formattedValue}}\n />\n </div>\n ) : (\n <div\n className={classes}\n title={title}\n dir=\"auto\"\n dangerouslySetInnerHTML={{__html: formattedValue}}\n />\n )}\n </ErrorBoundary>\n );\n }\n}\n","import {addI18Keysets} from '../../../i18n/index';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:column-cell', {en, ru});\n","import React, {useState} from 'react';\nimport cn from 'bem-cn-lite';\nimport copyToClipboard from 'copy-to-clipboard';\n\nimport {Button, Flex, Icon as UIKitIcon} from '@gravity-ui/uikit';\nimport {Eye} from '@gravity-ui/icons';\n\nimport unipika from '../../common/thor/unipika';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport YqlValue from '../../components/YqlValue/YqlValue';\nimport Yson from '../../components/Yson/Yson';\nimport Label from '../../components/Label/Label';\nimport {TypeArray} from '../../components/SchemaDataType/dataTypes';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {UnipikaSettings} from '../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {rumLogError} from '../../rum/rum-counter';\n\nimport i18n from './i18n';\n\nimport './ColumnCell.scss';\n\nconst block = cn('yt-column-cell');\n\nfunction unquote(v: string) {\n const match = /^\"(.*)\"$/.exec(v);\n return match ? match[1] : v;\n}\n\ntype CellValueType =\n | null\n | (CellValueData & {\n $incomplete?: boolean;\n [k: number]: {inc?: boolean};\n });\n\ntype CellValueData = {$type: string; $value: string} | {$type?: undefined; $value: unknown};\n\ntype ColumnCellProps = {\n className?: string;\n\n value?: CellValueType | null;\n yqlTypes: Array<TypeArray> | null;\n ysonSettings: UnipikaSettings;\n allowRawStrings?: boolean | null;\n rowIndex: number;\n columnName: string;\n onShowPreview: (columnName: string, rowIndex: number, tag?: string) => void | Promise<void>;\n useYqlTypes?: boolean;\n};\n\nexport function ColumnCell({\n value = null,\n yqlTypes,\n ysonSettings,\n allowRawStrings,\n className,\n rowIndex,\n columnName,\n onShowPreview,\n useYqlTypes,\n}: ColumnCellProps) {\n const [hovered, setHovered] = useState(false);\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n const formatType = yqlTypes && value ? yqlTypes[Number(value[1])] : undefined;\n\n const escapedValue =\n formatType && value\n ? YqlValue.getFormattedValue(value[0], formatType, {\n ...ysonSettings,\n asHTML: false,\n })\n : unipika.prettyprint(value, {...ysonSettings, asHTML: false});\n const formattedValue =\n formatType && value ? (\n <YqlValue value={value[0]} type={formatType} settings={ysonSettings} />\n ) : (\n <Yson value={value} settings={ysonSettings} />\n );\n\n const {tag, isIncompleteTagged, isIncompleteValue} = React.useMemo(() => {\n let isIncompleteTagged = false;\n let isIncompleteValue = false;\n let tag: string | undefined;\n\n if (value && formatType) {\n const flags: {incomplete: boolean} = {incomplete: false};\n\n const {$tag} = unipika.converters.yql([value[0], formatType], ysonSettings, flags);\n\n isIncompleteValue = flags.incomplete;\n isIncompleteTagged = flags.incomplete && $tag;\n tag = $tag;\n } else if (value) {\n isIncompleteValue = Boolean(value.$incomplete);\n }\n\n return {tag, isIncompleteTagged, isIncompleteValue};\n }, [value, formatType, ysonSettings]);\n\n const valueType = useYqlTypes ? formatType : value?.$type;\n const rawValue = useYqlTypes ? value?.[0] : value?.$value;\n\n const allowRawCopy = typeof rawValue === 'string' && isStringType(valueType);\n const useRawString = allowRawCopy && allowRawStrings;\n let copyTooltip = i18n('hold-shift-raw');\n if (useRawString) {\n copyTooltip = i18n('hold-shift-escaped');\n }\n\n const visibleValue = !useRawString ? (\n formattedValue\n ) : (\n <div className={'unipika-wrapper'}>\n <pre className={'unipika'}>\n <span className={'string'}>{rawValue}</span>\n </pre>\n </div>\n );\n\n const [isPreviewInProgress, setPreviewInProgress] = React.useState(false);\n\n return (\n <div\n className={block(null, className) /*dataTableBlock('value')*/}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {isIncompleteTagged ? (\n <Label theme=\"warning\" text={i18n('incomplete-type', {tag})} />\n ) : (\n visibleValue\n )}\n {(hovered || isIncompleteTagged) && (\n <div className={block('control-button-wrapper')}>\n <Flex alignItems=\"center\">\n {value && !isIncompleteValue && (\n <Tooltip\n content={\n !allowRawCopy ? undefined : (\n <span className={block('copy-value-tooltip')}>\n {copyTooltip}\n </span>\n )\n }\n >\n <ClipboardButton\n view=\"flat-secondary\"\n size=\"m\"\n text={useRawString ? rawValue : unquote(escapedValue)}\n onCopy={(event: React.MouseEvent) => {\n if (event?.shiftKey && allowRawCopy) {\n copyToClipboard(\n useRawString ? unquote(escapedValue) : rawValue,\n );\n }\n }}\n />\n </Tooltip>\n )}\n {isIncompleteValue && (\n <Button\n view=\"flat-secondary\"\n size=\"m\"\n qa=\"truncated-preview-button\"\n onClick={async () => {\n setPreviewInProgress(true);\n try {\n if (!isPreviewInProgress) {\n await onShowPreview(columnName, rowIndex, tag);\n }\n } finally {\n setPreviewInProgress(false);\n }\n }}\n loading={isPreviewInProgress}\n >\n <UIKitIcon data={Eye} size=\"12\" />\n </Button>\n )}\n </Flex>\n </div>\n )}\n </div>\n );\n}\n\nfunction isStringType(type?: string | TypeArray) {\n if (!type) {\n return false;\n }\n if (typeof type === 'string') {\n return type === 'string';\n }\n\n try {\n if (type[0] !== 'DataType') {\n return false;\n }\n const lower = type[1].toLowerCase();\n return lower === 'string' || lower === 'json' || lower === 'utf8';\n } catch (error: any) {\n rumLogError({message: `ColumnCell: unexpected type: '${JSON.stringify(type)}'`}, error);\n return false;\n }\n}\n","import React from 'react';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport SchemaDataType from '../../components/SchemaDataType/SchemaDataType';\nimport Yson from '../../components/Yson/Yson';\nimport unipika from '../../common/thor/unipika';\nimport Icon from '../../components/Icon/Icon';\nimport {ColumnCell} from '../../components/ColumnCell/ColumnCell';\n\nimport map_ from 'lodash/map';\n\nimport {TypeArray} from '../../components/SchemaDataType/dataTypes';\nimport type {YsonSettings} from '../../store/selectors/thor/unipika';\n\nexport type NameWithSortOrder = {name: string; sortOrder?: string};\n\nexport function prepareColumns({\n columns,\n keyColumns,\n yqlTypes,\n ysonSettings,\n useRawStrings,\n schemaByName,\n onShowPreview,\n useYqlTypes,\n}: {\n columns: NameWithSortOrder[];\n keyColumns: string[];\n yqlTypes?: TypeArray[] | null;\n ysonSettings: YsonSettings;\n useRawStrings: boolean | null | undefined;\n schemaByName: Record<string, any>;\n onShowPreview: (columnName: string, rowIndex: number, tag?: string) => void;\n useYqlTypes?: boolean;\n}) {\n return map_(columns, (column) => {\n const render = ({value, index}: {value?: any; index: number; row: any}) => (\n <ColumnCell\n allowRawStrings={useRawStrings}\n value={value}\n yqlTypes={yqlTypes || []}\n ysonSettings={ysonSettings}\n rowIndex={index}\n columnName={column.name}\n onShowPreview={onShowPreview}\n useYqlTypes={useYqlTypes}\n />\n );\n const {sortOrder} = column;\n const isKeyColumn = keyColumns.indexOf(column.name) > -1;\n const {type_v3} = schemaByName[column.name] || {};\n const header = (\n <Tooltip content={Boolean(type_v3) && <SchemaDataType type_v3={type_v3} />}>\n <Yson value={unipika.unescapeKeyValue(column.name)} settings={ysonSettings} inline>\n {isKeyColumn && (\n <Icon\n awesome={\n sortOrder === 'descending'\n ? 'sort-amount-up'\n : 'sort-amount-down-alt'\n }\n />\n )}\n </Yson>\n </Tooltip>\n );\n return Object.assign({}, column, {render, header});\n });\n}\n"],"names":["props","_jsxs","_objectSpread","xmlns","fill","viewBox","children","clipPath","_jsx","d","stroke","strokeLinecap","strokeLinejoin","strokeWidth","id","MapNodeIcon","_ref","_UIFactory$getNavigat","node","item","ypath","getAttributes","iconType","type","dynamic","icon","UIFactory","getNavigationMapNodeSettings","renderNodeIcon","isTrashNode","path","isLinkToTrashNode","targetPath","Icon","awesome","getIconNameForType","targetPathBroken","title","hammer","format","sorted","treat_as_queue_consumer","GravityIcon","data","QueueConsumerIcon","treat_as_queue_producer","QueueProducerIcon","isPipelineNode","$attributes","NodePipelineIcon","className","SchemaDataType","type_v3","primitiveTypes","useSelector","getPrimitiveTypesMap","dataTypeProps","React","getType","parseV3Type","_unused","DataType","_Fragment","pathEditorRequests","CancelHelper","preparePath","currentPath","YPath","create","toSubpath","stringify","loadSuggestions","customFilter","cluster","parentPath","apiSetup","parameters","attributes","cancellation","saveCancelToken","clusterConfig","getClusterConfigByName","setup","proxy","getClusterProxy","ytApiV3Id","list","YTApiId","pathEditorLoadSuggestions","then","getValue","nodes","initialPath","suggestions","map_","child","prepared","childPath","unipika","decode","sortBy_","prepareSuggestions","filterByCurrentPath","toLowerCase","filter_","hasPartOfPath","startsWith","isShowCurrentChild","getNextSelectedIndex","suggestion","selectedIndex","length","getPrevSelectedIndex","getCompletedPath","icons","document","string_node","int64_node","uint64_node","double_node","boolean_node","map_node","scheduler_pool_tree_map","scheduler_pool","tablet_cell","journal","table","table_dynamic","replicated_table","chaos_replicated_table","replication_log_table","file","topmost_transaction_map","transaction_map","transaction","nested_transaction","link","getBoolean","rootstock","portal_entrance","cell_node","cell_node_map","sys_node","access_control_object_namespace_map","access_control_object_namespace","access_control_object","getCliCommandResultFormat","tag","columnName","isMediaTag","_tag$split","split","_tag$split2","_slicedToArray","extension","concat","getImageResultFormat","getDynamicTableCellPath","rowIndex","_","getState","yqlTypes","getYqlTypes","key","getCurrentRowKey","keyColumns","getKeyColumns","offset","Query","prepareKey","prepareQuery","offsetColumns","columns","limit","getDynamicTableCliCommand","_ref2","cellPath","getStaticTableCellPath","index","getOffsetValue","prettyPrint","YSON_AS_TEXT","getStaticTableCliCommand","getCellPath","dispatch","getPath","getIsDynamic","getCliCommand","_dispatch","loadCellPreview","_ref3","useYqlTypes","isDynamic","output_format","getDefaultRequestOutputFormat","stringLimit","PREVIEW_LIMIT","readDynamicTable","query","cellPreviewCancelHelper","removeAllAndSave","readStaticTable","onCellPreview","_ref4","dataHandler","_ref5","_asyncToGenerator","_regeneratorRuntime","mark","_callee","ytCliDownloadCommand","isIncomplete","loadedData","rows","column","value","typeIndex","flags","_unipika$converters$y","$type","$value","$tag","_rows","_column","hasType","noticeText","wrap","_context","prev","next","isYqlTypesEnabled","onStartLoading","batch","CELL_PREVIEW","REQUEST","openCellPreview","saveCancellation","sent","incomplete","converters","yql","maxStringSize","undefined","maxListSize","treatValAsData","$incomplete","onSuccess","SUCCESS","t0","isCancelled","onError","error","FAILURE","stop","_x","_x2","apply","arguments","TRASH_PATH","attrs","pipeline_format_version","BreadcrumbsItem","isCurrent","onClick","text","e","preventDefault","href","NavigationBreadcrumbs","useDispatch","selectNavigationPath","selectNavigationCluster","handleClusterChangeClick","useCallback","setNodeType","BodyType","Cluster","setCluster","setPath","handleBreadcrumbsClick","newPath","loadNodeByPath","items","useMemo","result","forEach","push","map","Breadcrumbs","Item","BreadcrumbsItemComponent","Button","size","view","FolderTreeIcon","showRoot","fillRule","clipRule","insertTextWhereCursor","mEditor","position","getPosition","edit","range","Range","lineNumber","executeEdits","b","cn","HeaderActions","favorites","selectFavouritePaths","engine","getQueryEngine","getEditor","useMonaco","isFavorite","includes","navigationUrl","makeNavigationLink","handleFavoriteToggle","toggleFavoritePath","handlePathCopy","copyPathToClipboard","handlePastePath","editor","pathString","makePathByQueryEngine","target","ArrowUpRightFromSquareIcon","StarFillIcon","StarIcon","TextIndentIcon","CopyIcon","addI18Keysets","en","ru","NavigationHeader","filter","selectNavigationFilter","showFilter","selectNavigationNodeType","Table","TextInput","placeholder","i18n","onUpdate","setFilter","hasClear","NavigationEmpty","Text","variant","ItemsList","loading","render","DataTableYT","rowClassName","settings","stickyHead","displayIndices","sortable","highlightRows","name","header","ColumnHeader","row","useThemeYT","onRowClick","ClusterList","selectLoading","clusters","selectClustersByFilter","environment","QueryClusterItem","setNavigationCluster","NodeName","ellipsis","role","style","margin","NodeListRow","queryEngine","onFavoriteToggle","onClipboardCopy","onEditorInsert","onNewQuery","onNewWindowOpen","_useToggle","useToggle","_useToggle2","tableMenuOpen","toggleTapleMenuOpen","_useToggle3","_useToggle4","menuOpen","toggleMenuOpen","isSupported","isFolderNode","isTableNode","showActions","handleStop","stopPropagation","unsupported","active","DropdownMenu","open","onOpenToggle","renderSwitcher","action","_toConsumableArray","QueryEngine","YT_QL","YQL","CHYT","SPYT","onSwitcherClick","iconEnd","NodeList","_useState","useState","_useState2","showPrompt","setShowPrompt","newQueryParams","useRef","selectNavigationClusterConfig","selectNodeListByFilter","pageSize","getQueryResultGlobalSettings","dirtyQuery","isQueryDraftEditted","handleNodeClick","loadTableAttributesByPath","favoritePath","handleEditorInsert","abrupt","createTableSelect","url","URL","location","origin","pathname","searchParams","append","toString","getNavigationUrl","handleNewWindowOpen","window","handlePromptConfirm","current","makeNewQueryWithTableSelect","handlePromptCancel","handleNewQuery","_callee2","newEngine","_context2","_x3","_x4","NewQueryPromt","confirm","cancel","visible","Boolean","sort_order","prettyprint","asHTML","required","SchemaTab","schema","PreviewTab","ysonSettings","onShowPreview","prepareColumns","i","useRawStrings","schemaByName","reduce","acc","NavigationTable","activeTab","setActiveTab","selectTableWithFilter","getPageSize","getYsonSettingsDisableDecode","handleInsertTableSelect","SegmentedRadioGroup","defaultValue","options","content","MetaTable","meta","LoadingPlaceholder","Flex","alignItems","justifyContent","Loader","NavigationError","selectNavigationError","PrettyError","message","details","vertical","NavigationBody","Tree","Loading","Error","Navigation","useEffect","initNavigation","block","PageCounter","pageIndex","pageCount","getNameTitle","shortTitle","t","ReadableField","nameContent","titleContent","align","order","onSort","multisortIndex","sortIconSize","_useColumnInfo","allowUnordered","withUndefined","allowedOrderTypes","columnData","find","rumLogError","additional","subColumn","useColumnInfo","changeHandler","nextOrder","calculateNextOrderValue","nextSortOrderValue","currentOrder","multisort","ctrlKey","metaKey","SortIcon","color","SubColumnSelector","x","barsDescendingSvg","addComponentKeysets","menuContext","isMenu","activeIndex","getItemProps","listItemsRef","popupStyle","BreadcrumbsDropdownMenu","disabled","popupPlacement","reference","setReference","floating","setFloating","setActiveIndex","setOpen","context","onOpenChange","elements","listNavigation","enabled","listRef","onNavigate","loop","dismiss","interactions","getReferenceProps","useTranslation","ref","Popup","floatingContext","floatingRef","floatingInteractions","placement","Provider","ListItemView","selected","hovered","selectionStyle","collapsed","onCollapseChange","isContainer","component","Component","componentProps","collapsible","_collapsible","description","draggable","_draggable","startContent","_startContent","endContent","_endContent","nestedLevel","_nestedLevel","containerRef","componentRef","useForkRef","filterDOMProps","Element","some","el","contains","ListItemViewContent","Slot","tabIndex","ArrowToggle","direction","I","Check","domProps","labelable","hrefLang","rel","download","ping","referrerPolicy","__disabled","__current","__onAction","onAction","__index","restProps","linkProps","event","onKeyDown","ENTER","displayName","_BreadcrumbsItem","BreadcrumbsSeparator","separator","endContentRef","visibleItemsCount","setVisibleItemsCount","calculated","setCalculated","handleResize","useResizeObserver","onResize","lastChildren","visibleItems","listItems","Array","from","endElement","pop","containerWidth","offsetWidth","newVisibleItemsCount","calculatedWidth","maxItems","Infinity","rootWidth","shift","lastItem","Math","min","max","recalculate","contents","breadcrumbs","endItems","rootItem","hiddenItems","slice","menuItem","itemComponent","innerProps","lastIndex","breadcrumbsItems","childProps","handleAction","calculating","qa","YqlValue","_React$Component","_classCallCheck","_callSuper","_inherits","_createClass","_this$props","this","inline","formattedValue","getFormattedValue","titleSettings","Object","assign","formatRaw","formatFromYQL","classes","ErrorBoundary","dir","dangerouslySetInnerHTML","__html","yqlValue","defaultProps","folding","Yson","defaultUnipikaSettings","unquote","v","match","exec","ColumnCell","_ref$value","allowRawStrings","setHovered","formatType","Number","escapedValue","_React$useMemo","isIncompleteTagged","isIncompleteValue","valueType","rawValue","allowRawCopy","lower","JSON","isStringType","useRawString","copyTooltip","visibleValue","_React$useState","_React$useState2","isPreviewInProgress","setPreviewInProgress","onMouseEnter","onMouseLeave","Label","theme","Tooltip","ClipboardButton","onCopy","shiftKey","copyToClipboard","finish","UIKitIcon","Eye","sortOrder","isKeyColumn","indexOf","unescapeKeyValue"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"js/query-navigation.f7f5a1b5.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/assets/img/svg/icons/queue-consumer.svg","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/icons/queue-producer.svg","webpack://@ytsaurus/ui/./src/ui/components/MapNodeIcon/MapNodeIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/SchemaDataType/SchemaDataType.tsx","webpack://@ytsaurus/ui/./src/ui/utils/navigation/path-editor.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/format.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/dynamic-table.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/static-table.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/index.ts","webpack://@ytsaurus/ui/./src/ui/utils/navigation/isLinkToTrashNode.ts","webpack://@ytsaurus/ui/./src/ui/utils/navigation/isPipelineNode.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationHeader/BreadcrumbsItem.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationHeader/NavigationBreadcrumbs.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/star.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/star-fill.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/copy.svg","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/helpers/insertTextWhereCursor.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationHeader/HeaderActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationHeader/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationHeader/NavigationHeader.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationBody/NavigationEmpty/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationBody/NavigationEmpty/NavigationEmpty.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/ItemsList.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/ClusterList/ClusterList.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NodeList/NodeName.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NodeList/NodeListRow/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NodeList/NodeListRow/NodeListRow.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NodeList/NodeList.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/helpers/getNavigationUrl.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationTable/SchemaTab.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationTable/PreviewTab/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationTable/PreviewTab/PreviewTab.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationTable/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationTable/NavigationTable.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationBody/LoadingPlaceholder.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationBody/NavigationError.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/NavigationBody/NavigationBody.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/Navigation/Navigation.tsx","webpack://@ytsaurus/ui/./src/ui/components/PageCounter/PageCounter.tsx","webpack://@ytsaurus/ui/./src/ui/components/ColumnHeader/ColumnHeader.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/folder-tree.svg","webpack://@ytsaurus/ui/./src/ui/utils/navigation/isTrashNode.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/i18n/index.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/utils.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/BreadcrumbsDropdownMenu.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/lab/ListItemView/ListItemView.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/BreadcrumbsItem.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/BreadcrumbsSeparator.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/Breadcrumbs.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/text-indent.svg","webpack://@ytsaurus/ui/./src/ui/components/YqlValue/YqlValue.tsx","webpack://@ytsaurus/ui/./src/ui/components/ColumnCell/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/components/ColumnCell/ColumnCell.tsx","webpack://@ytsaurus/ui/./src/ui/utils/navigation/prepareColumns.tsx"],"sourcesContent":["const SvgQueueConsumer = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}><g clipPath=\"url(#queue-consumer_svg__a)\"><path d=\"M12.154 2.004A3 3 0 0 1 15 5v2H6.25v2h2.5v1.5h-2.5v2h2.5V14H4l-.154-.004a3 3 0 0 1-2.842-2.842L1 11V5a3 3 0 0 1 2.846-2.996L4 2h8zM2.5 11A1.5 1.5 0 0 0 4 12.5h.75v-2H2.5zm0-2h2.25V7H2.5zM4 3.5A1.5 1.5 0 0 0 2.5 5v.5h2.25v-2zm2.25 2h7.25V5A1.5 1.5 0 0 0 12 3.5H6.25z\" /><path stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M15.125 11.283a.25.25 0 0 1 .055.39l-.055.044-3 1.731a.25.25 0 0 1-.375-.216V9.768a.25.25 0 0 1 .312-.243l.063.027z\" /></g><defs><clipPath id=\"queue-consumer_svg__a\"><path d=\"M0 0h16v16H0z\" /></clipPath></defs></svg>;\nexport default SvgQueueConsumer;","const SvgQueueProducer = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}><path d=\"M12.154 2.004A3 3 0 0 1 15 5v2H6.25v2h2.5v1.5h-2.5v2h2.5V14H4l-.154-.004a3 3 0 0 1-2.842-2.842L1 11V5a3 3 0 0 1 2.846-2.996L4 2h8zM2.5 11A1.5 1.5 0 0 0 4 12.5h.75v-2H2.5zm0-2h2.25V7H2.5zM4 3.5A1.5 1.5 0 0 0 2.5 5v.5h2.25v-2zm2.25 2h7.25V5A1.5 1.5 0 0 0 12 3.5H6.25z\" /><path stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"m11 12 1.6 2 2.4-4\" /></svg>;\nexport default SvgQueueProducer;","import React from 'react';\nimport {Icon as GravityIcon} from '@gravity-ui/uikit';\n\nimport hammer from '../../common/hammer';\nimport ypath from '../../common/thor/ypath';\n\nimport Icon from '../../components/Icon/Icon';\n\nimport UIFactory from '../../UIFactory';\n\nimport {getIconNameForType} from '../../utils/navigation/path-editor';\nimport {isTrashNode} from '../../utils/navigation/isTrashNode';\nimport {isLinkToTrashNode} from '../../utils/navigation/isLinkToTrashNode';\n\nimport QueueConsumerIcon from '../../assets/img/svg/icons/queue-consumer.svg';\nimport QueueProducerIcon from '../../assets/img/svg/icons/queue-producer.svg';\n\nimport NodePipelineIcon from '../../assets/img/svg/icons/node-pipeline.svg';\n\nimport type {BaseMapNode} from '../../utils/navigation/content/map-nodes/node';\nimport {isPipelineNode} from '../../utils/navigation/isPipelineNode';\n\nimport './MapNodeIcon.scss';\n\nexport function MapNodeIcon({node}: {node: BaseMapNode}) {\n const item = ypath.getAttributes(node);\n const iconType = item?.type === 'table' && item?.dynamic ? 'table_dynamic' : item?.type;\n let icon = UIFactory.getNavigationMapNodeSettings()?.renderNodeIcon(node);\n\n if (icon) {\n // do nothing\n } else if (isTrashNode(item?.path) || isLinkToTrashNode(item?.targetPath)) {\n icon = <Icon awesome=\"trash-alt\" />;\n } else {\n icon = <Icon awesome={getIconNameForType(iconType, item.targetPathBroken)} />;\n }\n\n let title = hammer.format['ReadableField'](item.type);\n if (iconType === 'table') {\n title = 'Static table';\n }\n\n if (iconType === 'table_dynamic') {\n if (item?.sorted) {\n title = 'Dynamic table';\n } else {\n title = 'Queue table';\n icon = <Icon awesome=\"queue-table\" />;\n }\n }\n\n if (item?.treat_as_queue_consumer) {\n title = 'Queue consumer';\n icon = <GravityIcon data={QueueConsumerIcon} />;\n }\n\n if (item?.treat_as_queue_producer) {\n title = 'Queue producer';\n icon = <GravityIcon data={QueueProducerIcon} />;\n }\n\n if (isPipelineNode(node.$attributes)) {\n title = 'Flow';\n icon = <GravityIcon data={NodePipelineIcon} />;\n }\n\n return (\n <span className={'icon-wrapper'} title={title}>\n {icon}\n </span>\n );\n}\n","import React from 'react';\n\nimport {getPrimitiveTypesMap} from '../../store/selectors/global/supported-features';\nimport {useSelector} from '../../store/redux-hooks';\nimport {getType} from './dataTypes';\nimport DataType from './DataType/DataType';\nimport {parseV3Type} from './dateTypesV3';\n\ninterface Props {\n type_v3: any;\n}\n\nfunction SchemaDataType({type_v3}: Props) {\n const primitiveTypes = useSelector(getPrimitiveTypesMap);\n\n const dataTypeProps = React.useMemo(() => {\n try {\n return getType(parseV3Type(type_v3, primitiveTypes));\n } catch {\n return undefined;\n }\n }, [type_v3, primitiveTypes]);\n\n return dataTypeProps ? (\n <DataType {...dataTypeProps} />\n ) : (\n <>There is no type description in the schema</>\n );\n}\n\nexport default React.memo(SchemaDataType);\n","import filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport sortBy_ from 'lodash/sortBy';\n\nimport unipika from '../../common/thor/unipika';\nimport ypath from '../../common/thor/ypath';\n\nimport CancelHelper from '../cancel-helper';\nimport {YTApiId, ytApiV3Id} from '../../rum/rum-wrap-api';\nimport {getClusterConfigByName, getClusterProxy} from '../../store/selectors/global';\n\nexport const pathEditorRequests = new CancelHelper();\n\nfunction prepareSuggestions(initialPath, parentPath, children) {\n let suggestions = map_(children, (child) => {\n const prepared = {};\n\n prepared.parentPath = parentPath;\n prepared.childPath = '/' + unipika.decode(ypath.getValue(child));\n prepared.path = prepared.parentPath + prepared.childPath;\n prepared.type = ypath.getValue(child, '/@type');\n prepared.dynamic = ypath.getValue(child, '/@dynamic');\n prepared.targetPathBroken = ypath.getValue(child, '/@broken');\n\n return prepared;\n });\n\n suggestions = sortBy_(suggestions, 'childPath');\n\n return suggestions;\n}\n\nexport function preparePath(currentPath) {\n return ypath.YPath.create(currentPath, 'absolute').toSubpath(-2).stringify();\n}\n\nexport function loadSuggestions({path, customFilter, cluster}) {\n const parentPath = preparePath(path);\n\n const apiSetup = {\n parameters: {path: parentPath, attributes: ['type', 'dynamic']},\n cancellation: pathEditorRequests.saveCancelToken,\n };\n\n if (cluster) {\n const clusterConfig = getClusterConfigByName(cluster);\n if (clusterConfig) {\n apiSetup.setup = {\n proxy: getClusterProxy(clusterConfig),\n };\n }\n }\n\n return ytApiV3Id\n .list(YTApiId.pathEditorLoadSuggestions, apiSetup)\n .then(ypath.getValue)\n .then((nodes) => prepareSuggestions(path, parentPath, nodes))\n .then((suggestions) => (customFilter ? customFilter(suggestions) : suggestions));\n}\n\nexport function filterByCurrentPath(currentPath, suggestions) {\n const path = currentPath.toLowerCase();\n\n return filter_(suggestions, (child) => {\n const hasPartOfPath = child.path.startsWith(path);\n const isShowCurrentChild = child.path !== path || child.type === 'map_node';\n\n return hasPartOfPath && isShowCurrentChild;\n });\n}\n\nexport function getNextSelectedIndex(suggestion, selectedIndex) {\n if (selectedIndex === -1 || selectedIndex === suggestion.length - 1) {\n return 0;\n }\n\n return selectedIndex + 1;\n}\n\nexport function getPrevSelectedIndex(suggestions, selectedIndex) {\n if (selectedIndex === -1 || selectedIndex === 0) {\n return suggestions.length - 1;\n }\n\n return selectedIndex - 1;\n}\n\nexport function getCompletedPath(suggestion) {\n return suggestion.type === 'map_node' ? suggestion.path + '/' : suggestion.path;\n}\n\nexport function getIconNameForType(type, targetPathBroken) {\n const icons = {\n document: 'file-alt',\n string_node: 'file-alt',\n int64_node: 'file-alt',\n uint64_node: 'file-alt',\n double_node: 'file-alt',\n boolean_node: 'file-alt',\n map_node: 'folder',\n scheduler_pool_tree_map: 'folder-tree',\n scheduler_pool: 'tasks',\n tablet_cell: 'th',\n journal: 'book',\n table: 'th',\n table_dynamic: 'dyn-th',\n replicated_table: 'th',\n chaos_replicated_table: 'chaos-replicated-table',\n replication_log_table: 'replication-log-table',\n file: 'file',\n topmost_transaction_map: 'folder',\n transaction_map: 'folder',\n transaction: 'code-branch',\n nested_transaction: 'code-branch',\n link: ypath.getBoolean(targetPathBroken) ? 'unlink' : 'link',\n rootstock: 'link',\n portal_entrance: 'link',\n cell_node: 'circle',\n cell_node_map: 'far circle',\n sys_node: 'cog',\n access_control_object_namespace_map: 'acl-namespace-map',\n access_control_object_namespace: 'acl-namespace',\n access_control_object: 'acl-object',\n };\n\n const icon = type ? icons[type] || 'not-suported' : 'eye-slash';\n\n return icon;\n}\n","import {isMediaTag} from '../../../../../utils/yql-types';\n\nconst getDefaultFormat = () => {\n return '--format json';\n};\n\nconst getImageResultFormat = (columnName: string, tag: string) => {\n const [_, extension] = tag.split('/');\n return `--format \"<columns=[${columnName}];enable_escaping=%false>schemaful_dsv\" >${columnName}.${extension}`;\n};\n\nexport const getCliCommandResultFormat = ({\n tag,\n columnName,\n}: {\n tag?: string;\n columnName: string;\n}) => {\n if (tag && isMediaTag(tag)) {\n return getImageResultFormat(columnName, tag as string);\n }\n\n return getDefaultFormat();\n};\n","import type {CellPreviewActionType} from '../../../modals/cell-preview';\nimport {\n getCurrentRowKey,\n getKeyColumns,\n getYqlTypes,\n} from '../../../../selectors/navigation/content/table-ts';\nimport Query from '../../../../../utils/navigation/content/table/query';\nimport {getCliCommandResultFormat} from './format';\n\nexport const getDynamicTableCellPath = ({\n rowIndex,\n path,\n columnName,\n}: {\n path: string;\n columnName: string;\n rowIndex: number;\n}): CellPreviewActionType<string> => {\n return (_, getState) => {\n const yqlTypes = getYqlTypes(getState());\n const key = getCurrentRowKey(getState(), rowIndex);\n const keyColumns = getKeyColumns(getState());\n\n const offset = Query.prepareKey(key, yqlTypes);\n\n return Query.prepareQuery({\n path,\n offset,\n offsetColumns: keyColumns,\n columns: [columnName],\n limit: 1,\n });\n };\n};\n\nexport const getDynamicTableCliCommand = ({\n cellPath,\n tag,\n columnName,\n}: {\n cellPath: string;\n columnName: string;\n tag?: string;\n}): string => {\n return `yt select-rows 'select ${cellPath}' ${getCliCommandResultFormat({columnName, tag})}`;\n};\n","import {type CellPreviewActionType} from '../../../modals/cell-preview';\nimport {getOffsetValue} from '../../../../selectors/navigation/content/table';\nimport {YSON_AS_TEXT, prettyPrint} from '../../../../../utils/unipika';\nimport {getCliCommandResultFormat} from './format';\n\nexport const getStaticTableCellPath = ({\n path,\n columnName,\n rowIndex: index,\n}: {\n path: string;\n columnName: string;\n rowIndex: number;\n}): CellPreviewActionType<string> => {\n return (_, getState) => {\n const offset = getOffsetValue(getState());\n\n const rowIndex = typeof offset === 'number' ? index + offset : index;\n\n return `${path}{${prettyPrint(columnName, YSON_AS_TEXT())}}[#${rowIndex}:#${rowIndex + 1}]`;\n };\n};\n\nexport const getStaticTableCliCommand = ({\n cellPath,\n columnName,\n tag,\n}: {\n cellPath: string;\n columnName: string;\n tag?: string;\n}): string => {\n return `yt read-table '${cellPath}' ${getCliCommandResultFormat({columnName, tag})}`;\n};\n","import {CancelTokenSource} from 'axios';\nimport {batch} from 'react-redux';\n\nimport {getPath} from '../../../../selectors/navigation';\nimport {getDefaultRequestOutputFormat} from '../../../../../utils/navigation/content/table/table';\nimport {CELL_PREVIEW, PREVIEW_LIMIT} from '../../../../../constants/modals/cell-preview';\nimport {isCancelled} from '../../../../../utils/cancel-helper';\nimport {\n CellPreviewActionType,\n cellPreviewCancelHelper,\n openCellPreview,\n} from '../../../modals/cell-preview';\nimport unipika from '../../../../../common/thor/unipika';\nimport {getIsDynamic} from '../../../../selectors/navigation/content/table-ts';\nimport {getDynamicTableCellPath, getDynamicTableCliCommand} from './dynamic-table';\nimport {getStaticTableCellPath, getStaticTableCliCommand} from './static-table';\nimport {isYqlTypesEnabled} from '../../../../selectors/navigation/content/table';\nimport {readStaticTable} from '../../content/table/readStaticTable';\nimport {readDynamicTable} from '../../content/table/readDynamicTable';\nimport {CellDataHandlerNavigation} from '../../../../../types/navigation/table-cell-preview';\n\nconst getCellPath = ({\n columnName,\n rowIndex,\n}: {\n columnName: string;\n rowIndex: number;\n}): CellPreviewActionType<string> => {\n return (dispatch, getState) => {\n const path: string = getPath(getState());\n const isDynamic = getIsDynamic(getState());\n\n const action = isDynamic ? getDynamicTableCellPath : getStaticTableCellPath;\n\n return dispatch(action({path, columnName, rowIndex}));\n };\n};\n\nconst getCliCommand = ({\n cellPath,\n columnName,\n tag,\n}: {\n cellPath: string;\n columnName: string;\n tag?: string;\n}): CellPreviewActionType<string> => {\n return (_dispatch, getState) => {\n const isDynamic = getIsDynamic(getState());\n\n const fn = isDynamic ? getDynamicTableCliCommand : getStaticTableCliCommand;\n\n return fn({cellPath, columnName, tag});\n };\n};\n\nconst loadCellPreview = ({\n cellPath,\n useYqlTypes,\n cancellation,\n}: {\n cellPath: string;\n useYqlTypes: boolean;\n cancellation?: (token: CancelTokenSource) => void;\n}): CellPreviewActionType<ReturnType<typeof readDynamicTable>> => {\n return (_dispatch, getState) => {\n const isDynamic = getIsDynamic(getState());\n\n const output_format = getDefaultRequestOutputFormat({\n stringLimit: PREVIEW_LIMIT,\n useYqlTypes,\n });\n\n return isDynamic\n ? readDynamicTable({\n parameters: {\n output_format,\n query: cellPath,\n },\n cancellation: cancellation ?? cellPreviewCancelHelper.removeAllAndSave,\n })\n : readStaticTable({\n parameters: {path: cellPath, output_format},\n cancellation: cancellation ?? cellPreviewCancelHelper.removeAllAndSave,\n });\n };\n};\n\nexport const onCellPreview = ({\n columnName,\n rowIndex,\n tag,\n dataHandler,\n}: {\n columnName: string;\n rowIndex: number;\n tag?: string;\n dataHandler?: CellDataHandlerNavigation;\n}): CellPreviewActionType => {\n return async (dispatch, getState) => {\n const useYqlTypes = isYqlTypesEnabled(getState());\n\n const cellPath = dispatch(getCellPath({columnName, rowIndex}));\n\n const ytCliDownloadCommand: string = dispatch(getCliCommand({cellPath, columnName, tag}));\n\n if (dataHandler) {\n dataHandler.onStartLoading({columnName, rowIndex});\n } else {\n batch(() => {\n dispatch({type: CELL_PREVIEW.REQUEST, data: {ytCliDownloadCommand}});\n dispatch(openCellPreview());\n });\n }\n\n const data: {\n $type?: string;\n $value?: any;\n $tag?: string;\n } = {};\n\n let isIncomplete: boolean | undefined = false;\n\n try {\n const loadedData = await dispatch(\n loadCellPreview({\n cellPath,\n useYqlTypes,\n cancellation: dataHandler?.saveCancellation,\n }),\n );\n\n if (loadedData.useYqlTypes) {\n const {rows, yqlTypes} = loadedData;\n const column = rows[0][columnName];\n const value = column[0];\n const typeIndex = column[1];\n\n const flags: {incomplete: boolean} = {incomplete: false};\n\n const {$type, $value, $tag} = unipika.converters.yql(\n [value, yqlTypes?.[typeIndex]],\n {\n maxStringSize: undefined,\n maxListSize: undefined,\n treatValAsData: true,\n },\n flags,\n );\n\n isIncomplete = flags.incomplete;\n\n data.$type = $type;\n data.$value = $tag ? $value.$value : $value;\n data.$tag = $tag;\n } else {\n const {rows} = loadedData;\n const column = rows[0][columnName];\n\n const hasType = column && column.$type;\n\n data.$type = column.$type;\n data.$value = hasType ? column.$value : column;\n\n isIncomplete = column.$incomplete;\n }\n\n const noticeText = isIncomplete\n ? 'Unable to load content more than 16MiB. Please use the command bellow to load it locally.'\n : 'You could use the command bellow to load it locally.';\n\n if (dataHandler) {\n dataHandler.onSuccess({columnName, rowIndex, data: loadedData});\n } else {\n dispatch({\n type: CELL_PREVIEW.SUCCESS,\n data: {\n data,\n noticeText,\n },\n });\n }\n } catch (error: any) {\n if (!isCancelled(error)) {\n if (dataHandler) {\n dataHandler.onError({columnName, rowIndex, error});\n } else {\n dispatch({type: CELL_PREVIEW.FAILURE, data: {error}});\n }\n }\n }\n };\n};\n","import {TRASH_PATH} from '../../constants/navigation';\n\nexport function isLinkToTrashNode(targetPath?: string) {\n return targetPath === TRASH_PATH;\n}\n","export function isPipelineNode(attrs?: {pipeline_format_version?: number}) {\n return attrs?.pipeline_format_version !== undefined;\n}\n","import React, {FC, MouseEvent} from 'react';\n\nexport const BreadcrumbsItem: FC<{\n item: {text: string; href: string};\n isCurrent: boolean;\n onClick: (path: string) => void;\n}> = ({item, isCurrent, onClick}) => {\n const handleItemClick = (e: MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n if (item.href && !isCurrent) {\n onClick(item.href);\n }\n };\n\n return (\n <div data-qa={item.text} onClick={handleItemClick}>\n {item.text}\n </div>\n );\n};\n","import React, {FC, useCallback, useMemo} from 'react';\nimport {Breadcrumbs, Button, Icon} from '@gravity-ui/uikit';\nimport {useDispatch, useSelector} from '../../../../store/redux-hooks';\nimport FolderTreeIcon from '@gravity-ui/icons/svgs/folder-tree.svg';\nimport {BreadcrumbsItem as BreadcrumbsItemComponent} from './BreadcrumbsItem';\nimport {\n selectNavigationCluster,\n selectNavigationPath,\n} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport {\n BodyType,\n setCluster,\n setNodeType,\n setPath,\n} from '../../../../store/reducers/query-tracker/queryNavigationSlice';\nimport {loadNodeByPath} from '../../../../store/actions/query-tracker/queryNavigation';\n\nexport const NavigationBreadcrumbs: FC = () => {\n const dispatch = useDispatch();\n const path = useSelector(selectNavigationPath);\n const cluster = useSelector(selectNavigationCluster);\n\n const handleClusterChangeClick = useCallback(() => {\n dispatch(setNodeType(BodyType.Cluster));\n dispatch(setCluster(undefined));\n dispatch(setPath(''));\n }, [dispatch]);\n\n const handleBreadcrumbsClick = useCallback(\n (newPath: string) => {\n dispatch(loadNodeByPath(newPath));\n },\n [dispatch],\n );\n\n const items = useMemo(() => {\n if (!cluster) return [];\n\n let href = '/';\n const result = [{text: cluster, href: '/'}];\n path.split('/').forEach((text) => {\n if (text) {\n href += '/' + text;\n result.push({\n text,\n href,\n });\n }\n });\n\n return result.map((item, index) => {\n const isCurrent = index === result.length - 1;\n return (\n <Breadcrumbs.Item key={index} href={item.href} onClick={(e) => e.preventDefault()}>\n <BreadcrumbsItemComponent\n item={item}\n isCurrent={isCurrent}\n onClick={handleBreadcrumbsClick}\n />\n </Breadcrumbs.Item>\n );\n });\n }, [cluster, path, handleBreadcrumbsClick]);\n\n return (\n <>\n <Button size=\"s\" view=\"flat\" onClick={handleClusterChangeClick}>\n <Icon data={FolderTreeIcon} size={16} />\n </Button>\n <Breadcrumbs showRoot>{items}</Breadcrumbs>\n </>\n );\n};\n","const SvgStar = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"m9.194 5 .351.873.94.064 3.197.217-2.46 2.055-.722.603.23.914.782 3.108-2.714-1.704L8 10.629l-.798.5-2.714 1.705.782-3.108.23-.914-.723-.603-2.46-2.055 3.198-.217.94-.064.35-.874L8 2.025zm-7.723-.292 3.943-.268L6.886.773C7.29-.231 8.71-.231 9.114.773l1.472 3.667 3.943.268c1.08.073 1.518 1.424.688 2.118L12.185 9.36l.964 3.832c.264 1.05-.886 1.884-1.802 1.31L8 12.4l-3.347 2.101c-.916.575-2.066-.26-1.802-1.309l.964-3.832L.783 6.826c-.83-.694-.391-2.045.688-2.118\" clipRule=\"evenodd\" /></svg>;\nexport default SvgStar;","const SvgStarFill = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" d=\"M6.886.773C7.29-.231 8.71-.231 9.114.773l1.472 3.667 3.943.268c1.08.073 1.518 1.424.688 2.118L12.185 9.36l.964 3.832c.264 1.05-.886 1.884-1.802 1.31L8 12.4l-3.347 2.101c-.916.575-2.066-.26-1.802-1.309l.964-3.832L.783 6.826c-.83-.694-.391-2.045.688-2.118l3.943-.268z\" /></svg>;\nexport default SvgStarFill;","const SvgCopy = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M12 2.5H8A1.5 1.5 0 0 0 6.5 4v1H8a3 3 0 0 1 3 3v1.5h1A1.5 1.5 0 0 0 13.5 8V4A1.5 1.5 0 0 0 12 2.5M11 11h1a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v1H4a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h4a3 3 0 0 0 3-3zM4 6.5h4A1.5 1.5 0 0 1 9.5 8v4A1.5 1.5 0 0 1 8 13.5H4A1.5 1.5 0 0 1 2.5 12V8A1.5 1.5 0 0 1 4 6.5\" clipRule=\"evenodd\" /></svg>;\nexport default SvgCopy;","import {Range, editor} from 'monaco-editor';\n\nexport const insertTextWhereCursor = (text: string, mEditor?: editor.IStandaloneCodeEditor) => {\n if (!mEditor) return;\n\n const position = mEditor.getPosition();\n const range = position\n ? new Range(position.lineNumber, position.column, position.lineNumber, position.column)\n : new Range(0, 0, 0, 0);\n\n const edit = {range, text};\n mEditor.executeEdits('Insert text', [edit]);\n};\n","import React, {FC, useCallback} from 'react';\nimport {Button, Icon} from '@gravity-ui/uikit';\nimport StarIcon from '@gravity-ui/icons/svgs/star.svg';\nimport StarFillIcon from '@gravity-ui/icons/svgs/star-fill.svg';\nimport TextIndentIcon from '@gravity-ui/icons/svgs/text-indent.svg';\nimport CopyIcon from '@gravity-ui/icons/svgs/copy.svg';\nimport './HeaderActions.scss';\nimport cn from 'bem-cn-lite';\nimport ArrowUpRightFromSquareIcon from '@gravity-ui/icons/svgs/arrow-up-right-from-square.svg';\nimport {\n copyPathToClipboard,\n toggleFavoritePath,\n} from '../../../../store/actions/query-tracker/queryNavigation';\nimport {\n selectFavouritePaths,\n selectNavigationCluster,\n selectNavigationPath,\n} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport {getQueryEngine} from '../../../../store/selectors/query-tracker/query';\nimport {makePathByQueryEngine} from '../helpers/makePathByQueryEngine';\nimport {insertTextWhereCursor} from '../helpers/insertTextWhereCursor';\nimport {useMonaco} from '../../hooks/useMonaco';\nimport {makeNavigationLink} from '../../../../utils/app-url';\nimport {useDispatch, useSelector} from '../../../../store/redux-hooks';\n\nconst b = cn('navigation-header-actions');\n\nexport const HeaderActions: FC = () => {\n const dispatch = useDispatch();\n const path = useSelector(selectNavigationPath);\n const cluster = useSelector(selectNavigationCluster);\n const favorites = useSelector(selectFavouritePaths);\n const engine = useSelector(getQueryEngine);\n const {getEditor} = useMonaco();\n\n const isFavorite = favorites.includes(path);\n const navigationUrl = makeNavigationLink({path, cluster});\n\n const handleFavoriteToggle = useCallback(() => {\n dispatch(toggleFavoritePath(path));\n }, [dispatch, path]);\n\n const handlePathCopy = useCallback(() => {\n dispatch(copyPathToClipboard(path));\n }, [dispatch, path]);\n\n const handlePastePath = useCallback(() => {\n if (!cluster) return;\n const editor = getEditor('queryEditor');\n const pathString = makePathByQueryEngine({\n cluster,\n path,\n engine,\n });\n insertTextWhereCursor(pathString, editor);\n }, [cluster, engine, getEditor, path]);\n\n if (!cluster) return null;\n\n return (\n <div className={b()}>\n <Button view=\"flat\" href={navigationUrl} target=\"_blank\">\n <Icon data={ArrowUpRightFromSquareIcon} size={16} />\n </Button>\n <Button view=\"flat\" onClick={handleFavoriteToggle}>\n <Icon data={isFavorite ? StarFillIcon : StarIcon} size={16} />\n </Button>\n <Button view=\"flat\" onClick={handlePastePath}>\n <Icon data={TextIndentIcon} size={16} />\n </Button>\n <Button view=\"flat\" onClick={handlePathCopy}>\n <Icon data={CopyIcon} size={16} />\n </Button>\n </div>\n );\n};\n","import {addI18Keysets} from '../../../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:query-tracker.navigation-header', {en, ru});\n","import React, {FC} from 'react';\nimport cn from 'bem-cn-lite';\nimport './NavigationHeader.scss';\nimport {NavigationBreadcrumbs} from './NavigationBreadcrumbs';\nimport {HeaderActions} from './HeaderActions';\nimport {TextInput} from '@gravity-ui/uikit';\nimport {useDispatch, useSelector} from '../../../../store/redux-hooks';\nimport {\n selectNavigationFilter,\n selectNavigationNodeType,\n} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport {BodyType, setFilter} from '../../../../store/reducers/query-tracker/queryNavigationSlice';\nimport i18n from './i18n';\n\nconst b = cn('navigation-header');\n\nexport const NavigationHeader: FC = () => {\n const dispatch = useDispatch();\n const filter = useSelector(selectNavigationFilter);\n const nodeType = useSelector(selectNavigationNodeType);\n\n const showFilter = nodeType !== BodyType.Table;\n\n const handleFilterChange = (value: string) => {\n dispatch(setFilter(value));\n };\n\n return (\n <div className={b()}>\n <div className={b('path-wrap')}>\n <NavigationBreadcrumbs />\n <HeaderActions />\n </div>\n {showFilter && (\n <TextInput\n value={filter}\n placeholder={i18n('field_filter-by-name')}\n onUpdate={handleFilterChange}\n hasClear\n />\n )}\n </div>\n );\n};\n","import {addI18Keysets} from '../../../../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:query-tracker.navigation-body', {en, ru});\n","import React, {FC} from 'react';\nimport {Text} from '@gravity-ui/uikit';\nimport './NavigationEmpty.scss';\nimport cn from 'bem-cn-lite';\nimport i18n from './i18n';\n\nconst b = cn('navigation-empty');\n\nexport const NavigationEmpty: FC = () => {\n return (\n <div className={b()}>\n <Text variant=\"subheader-2\">{i18n('context_empty-directory')}</Text>\n </div>\n );\n};\n","import React from 'react';\nimport ColumnHeader from '../../../components/ColumnHeader/ColumnHeader';\nimport DataTableYT from '../../../components/DataTableYT/DataTableYT';\nimport './ItemsList.scss';\nimport cn from 'bem-cn-lite';\n\nconst b = cn('yt-qt-navigation-items-list');\n\ntype Props<T> = {\n className?: string;\n loading: boolean;\n data: T[];\n render: (rowData: T) => React.ReactNode;\n onClick?: (data: T) => void;\n};\n\nexport function ItemsList<T>({className, data, loading, render, onClick}: Props<T>) {\n return (\n <DataTableYT\n className={b(null, className)}\n rowClassName={() => b('row')}\n settings={{\n stickyHead: 'moving',\n displayIndices: false,\n sortable: true,\n highlightRows: false,\n }}\n data={data}\n columns={[\n {\n name: 'name',\n header: (\n <ColumnHeader\n className={b('header')}\n title=\"Name\"\n column=\"name\"\n loading={loading}\n />\n ),\n render: ({row}) => {\n return render(row);\n },\n },\n ]}\n useThemeYT\n onRowClick={onClick}\n />\n );\n}\n","import React, {FC} from 'react';\nimport {useDispatch, useSelector} from '../../../../store/redux-hooks';\nimport {QueryClusterItem} from '../../QueryTrackerTopRow/QueryClusterSelector/QueryClusterItem';\nimport './ClusterList.scss';\nimport cn from 'bem-cn-lite';\nimport {ClusterConfig} from '../../../../../shared/yt-types';\nimport {setNavigationCluster} from '../../../../store/actions/query-tracker/queryNavigation';\nimport {\n selectClustersByFilter,\n selectLoading,\n} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport {ItemsList} from '../ItemsList';\n\nconst b = cn('navigation-cluster-list');\n\nexport const ClusterList: FC = () => {\n const dispatch = useDispatch();\n const loading = useSelector(selectLoading);\n const clusters = useSelector(selectClustersByFilter);\n\n const handleClusterClick = (cluster: ClusterConfig) => {\n dispatch(setNavigationCluster(cluster.id));\n };\n\n return (\n <ItemsList\n className={b()}\n loading={loading}\n data={clusters}\n render={({id, name, environment}) => {\n return (\n <QueryClusterItem\n key={id}\n id={id}\n name={name}\n environment={environment}\n className={b('item')}\n />\n );\n }}\n onClick={handleClusterClick}\n />\n );\n};\n","import React, {FC} from 'react';\nimport {Text} from '@gravity-ui/uikit';\n\ntype Props = {\n name: string;\n type?: string;\n targetPath?: string;\n};\n\nexport const NodeName: FC<Props> = ({type, name, targetPath}) => {\n return (\n <Text ellipsis>\n {type === 'link' ? (\n <>\n {name}{' '}\n <span role=\"img\" aria-label=\"Arrow pointing right\" style={{margin: '0 4px'}}>\n ➞\n </span>{' '}\n {targetPath}\n </>\n ) : (\n name\n )}\n </Text>\n );\n};\n","import {addI18Keysets} from '../../../../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:query-tracker.navigation-node-list', {en, ru});\n","import React, {FC, MouseEvent} from 'react';\nimport {NavigationNode} from '../../../../../store/reducers/query-tracker/queryNavigationSlice';\nimport './NodeListRow.scss';\nimport cn from 'bem-cn-lite';\nimport {Button, DropdownMenu, Icon} from '@gravity-ui/uikit';\nimport {isFolderNode} from '../../../../../utils/navigation/isFolderNode';\nimport {isTableNode} from '../../../../../utils/navigation/isTableNode';\nimport StarFillIcon from '@gravity-ui/icons/svgs/star-fill.svg';\nimport StarIcon from '@gravity-ui/icons/svgs/star.svg';\nimport TextIndentIcon from '@gravity-ui/icons/svgs/text-indent.svg';\nimport ArrowUpRightFromSquareIcon from '@gravity-ui/icons/svgs/arrow-up-right-from-square.svg';\nimport {useToggle} from 'react-use';\nimport {QueryEngine} from '../../../../../../shared/constants/engines';\nimport {MapNodeIcon} from '../../../../../components/MapNodeIcon/MapNodeIcon';\nimport {NodeName} from '../NodeName';\nimport i18n from './i18n';\n\nconst b = cn('navigation-node-list-row');\n\ntype Props = {\n node: NavigationNode;\n queryEngine: QueryEngine;\n onClick: (path: string, type: string | undefined) => void;\n onFavoriteToggle: (favoritePath: string) => void;\n onClipboardCopy: (path: string, type: 'url' | 'path') => void;\n onEditorInsert: (path: string, type: 'path' | 'select') => void;\n onNewQuery: (path: string, engine: QueryEngine) => void;\n onNewWindowOpen: (path: string) => void;\n};\n\nexport const NodeListRow: FC<Props> = ({\n node,\n queryEngine,\n onClick,\n onFavoriteToggle,\n onClipboardCopy,\n onEditorInsert,\n onNewQuery,\n onNewWindowOpen,\n}) => {\n const {type, dynamic, name, path, targetPath, isFavorite} = node;\n const [tableMenuOpen, toggleTapleMenuOpen] = useToggle(false);\n const [menuOpen, toggleMenuOpen] = useToggle(false);\n const isSupported = isFolderNode(type) || isTableNode(type);\n const showActions = isSupported && name !== '...';\n\n const handleClick = () => {\n if (!isSupported) return;\n onClick(path, type);\n };\n\n const handleStop = (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n };\n\n const handleFavoriteClick = (e: MouseEvent<HTMLButtonElement>) => {\n handleStop(e);\n onFavoriteToggle(path);\n };\n\n const handlePastePathClick = (e: MouseEvent<HTMLButtonElement>) => {\n handleStop(e);\n onEditorInsert(path, 'path');\n };\n\n return (\n <div\n className={b({unsupported: !isSupported, active: menuOpen || tableMenuOpen})}\n onClick={handleClick}\n >\n <div className={b('icon-wrap')}>\n <MapNodeIcon node={{$attributes: node}} />\n {isFavorite && (\n <Icon data={StarFillIcon} className={b('favorite-icon')} size={10} />\n )}\n </div>\n <NodeName type={type} name={name} targetPath={targetPath} />\n {showActions && (\n <div className={b('actions')}>\n <Button view=\"flat\" onClick={handleFavoriteClick}>\n <Icon data={isFavorite ? StarFillIcon : StarIcon} size={16} />\n </Button>\n {isTableNode(type) ? (\n <DropdownMenu\n open={tableMenuOpen}\n onOpenToggle={toggleTapleMenuOpen}\n renderSwitcher={(props) => (\n <Button view=\"flat\" {...props}>\n <Icon data={TextIndentIcon} size={16} />\n </Button>\n )}\n items={[\n {\n text: i18n('action_copy-to-clipboard'),\n items: [\n {\n text: i18n('value_path'),\n action: (e) => {\n e.stopPropagation();\n onClipboardCopy(path, 'path');\n },\n },\n ],\n },\n {\n text: i18n('action_insert-into-editor'),\n items: [\n {\n text: i18n('value_path'),\n action: (e) => {\n e.stopPropagation();\n onEditorInsert(path, 'path');\n },\n },\n ...(dynamic || queryEngine !== QueryEngine.YT_QL\n ? [\n {\n text: i18n('value_select'),\n action: (\n e:\n | React.MouseEvent<HTMLElement>\n | KeyboardEvent,\n ) => {\n e.stopPropagation();\n onEditorInsert(path, 'select');\n },\n },\n ]\n : []),\n ],\n },\n {\n text: i18n('action_create-new-query'),\n items: [\n ...(dynamic\n ? [\n {\n text: i18n('value_select-yt-ql'),\n action: (\n e:\n | React.MouseEvent<HTMLElement>\n | KeyboardEvent,\n ) => {\n e.stopPropagation();\n onNewQuery(path, QueryEngine.YT_QL);\n },\n },\n ]\n : []),\n {\n text: i18n('value_select-yql'),\n action: (e) => {\n e.stopPropagation();\n onNewQuery(path, QueryEngine.YQL);\n },\n },\n {\n text: i18n('value_select-chyt'),\n action: (e) => {\n e.stopPropagation();\n onNewQuery(path, QueryEngine.CHYT);\n },\n },\n {\n text: i18n('value_select-spyt'),\n action: (e) => {\n e.stopPropagation();\n onNewQuery(path, QueryEngine.SPYT);\n },\n },\n ],\n },\n ]}\n onSwitcherClick={handleStop}\n />\n ) : (\n <Button view=\"flat\" onClick={handlePastePathClick}>\n <Icon data={TextIndentIcon} size={16} />\n </Button>\n )}\n <DropdownMenu\n open={menuOpen}\n onOpenToggle={toggleMenuOpen}\n items={[\n {\n action: (e) => {\n e.stopPropagation();\n onClipboardCopy(path, 'url');\n },\n text: i18n('action_copy-link'),\n },\n {\n action: () => {\n onNewWindowOpen(path);\n },\n text: i18n('action_open-in-cluster'),\n iconEnd: <Icon data={ArrowUpRightFromSquareIcon} />,\n },\n ]}\n onSwitcherClick={handleStop}\n />\n </div>\n )}\n </div>\n );\n};\n","import React, {FC, useCallback, useRef, useState} from 'react';\nimport {useDispatch, useSelector} from '../../../../store/redux-hooks';\nimport {\n selectLoading,\n selectNavigationClusterConfig,\n selectNodeListByFilter,\n} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport {NodeListRow} from './NodeListRow';\nimport {\n copyPathToClipboard,\n loadNodeByPath,\n loadTableAttributesByPath,\n makeNewQueryWithTableSelect,\n toggleFavoritePath,\n} from '../../../../store/actions/query-tracker/queryNavigation';\nimport './NodeList.scss';\nimport cn from 'bem-cn-lite';\nimport {isFolderNode} from '../../../../utils/navigation/isFolderNode';\nimport {isTableNode} from '../../../../utils/navigation/isTableNode';\nimport {useMonaco} from '../../hooks/useMonaco';\nimport {insertTextWhereCursor} from '../helpers/insertTextWhereCursor';\nimport {getQueryEngine, isQueryDraftEditted} from '../../../../store/selectors/query-tracker/query';\nimport {makePathByQueryEngine} from '../helpers/makePathByQueryEngine';\nimport {QueryEngine} from '../../../../../shared/constants/engines';\nimport {getNavigationUrl} from '../helpers/getNavigationUrl';\nimport {createTableSelect} from '../helpers/createTableSelect';\nimport {getQueryResultGlobalSettings} from '../../../../store/selectors/query-tracker/queryResult';\nimport {NewQueryPromt} from '../../NewQueryButton/NewQueryButton';\nimport {ItemsList} from '../ItemsList';\n\nconst b = cn('navigation-node-list');\n\nexport const NodeList: FC = () => {\n const dispatch = useDispatch();\n const [showPrompt, setShowPrompt] = useState(false);\n const newQueryParams = useRef<{path: string; engine: QueryEngine} | null>(null);\n const clusterConfig = useSelector(selectNavigationClusterConfig);\n const nodes = useSelector(selectNodeListByFilter);\n const engine = useSelector(getQueryEngine);\n const {pageSize} = getQueryResultGlobalSettings();\n const dirtyQuery = useSelector(isQueryDraftEditted);\n const loading = useSelector(selectLoading);\n const {getEditor} = useMonaco();\n\n const handleNodeClick = (path: string, type: string | undefined) => {\n if (isFolderNode(type)) {\n dispatch(loadNodeByPath(path));\n return;\n }\n if (isTableNode(type)) {\n dispatch(loadTableAttributesByPath(path));\n return;\n }\n };\n\n const handleFavoriteToggle = useCallback(\n (favoritePath: string) => {\n dispatch(toggleFavoritePath(favoritePath));\n },\n [dispatch],\n );\n\n const handleEditorInsert = useCallback(\n async (path: string, type: 'path' | 'select') => {\n if (!clusterConfig || !clusterConfig.id) return;\n const editor = getEditor('queryEditor');\n let text = '';\n if (type === 'path') {\n text = makePathByQueryEngine({\n cluster: clusterConfig.id,\n path,\n engine,\n });\n } else {\n text = await createTableSelect({clusterConfig, path, engine, limit: pageSize});\n }\n insertTextWhereCursor(text, editor);\n },\n [clusterConfig, engine, getEditor, pageSize],\n );\n\n const onClipboardCopy = useCallback(\n (path: string, type: 'path' | 'url') => {\n if (!clusterConfig || !clusterConfig.id) return;\n const pathString =\n type === 'path'\n ? makePathByQueryEngine({\n cluster: clusterConfig.id,\n path,\n engine,\n })\n : getNavigationUrl(clusterConfig.id, path);\n dispatch(copyPathToClipboard(pathString));\n },\n [clusterConfig, dispatch, engine],\n );\n\n const handleNewWindowOpen = useCallback(\n (path: string) => {\n if (!clusterConfig || !clusterConfig.id) return;\n const url = new URL(location.origin + `/${clusterConfig.id}/navigation`);\n url.searchParams.append('path', path);\n window.open(url);\n },\n [clusterConfig],\n );\n\n const handlePromptConfirm = useCallback(() => {\n const parameters = newQueryParams.current;\n if (!parameters) return;\n\n dispatch(makeNewQueryWithTableSelect(parameters.path, parameters.engine));\n setShowPrompt(false);\n }, [dispatch, setShowPrompt]);\n\n const handlePromptCancel = useCallback(() => {\n newQueryParams.current = null;\n setShowPrompt(false);\n }, [setShowPrompt]);\n\n const handleNewQuery = useCallback(\n async (path: string, newEngine: QueryEngine) => {\n if (dirtyQuery) {\n setShowPrompt(true);\n newQueryParams.current = {path, engine: newEngine};\n return;\n }\n\n newQueryParams.current = {path, engine: newEngine};\n handlePromptConfirm();\n },\n [dirtyQuery, handlePromptConfirm, setShowPrompt],\n );\n\n return (\n <div className={b()}>\n <ItemsList\n loading={loading}\n data={nodes}\n render={(node) => {\n return (\n <NodeListRow\n key={node.path}\n node={node}\n queryEngine={engine}\n onClick={handleNodeClick}\n onFavoriteToggle={handleFavoriteToggle}\n onEditorInsert={handleEditorInsert}\n onClipboardCopy={onClipboardCopy}\n onNewWindowOpen={handleNewWindowOpen}\n onNewQuery={handleNewQuery}\n />\n );\n }}\n />\n <NewQueryPromt\n confirm={handlePromptConfirm}\n cancel={handlePromptCancel}\n visible={showPrompt}\n />\n </div>\n );\n};\n\nexport default NodeList;\n","export const getNavigationUrl = (cluster: string, path: string) => {\n const url = new URL(location.origin + location.pathname);\n url.searchParams.append('listMode', 'navigation');\n url.searchParams.append('navCluster', cluster);\n if (path && path !== '/') {\n url.searchParams.append('navPath', path);\n }\n\n return url.toString();\n};\n","import React, {FC} from 'react';\nimport {\n NavigationTableSchema,\n setFilter,\n} from '../../../../store/reducers/query-tracker/queryNavigationSlice';\nimport DataTableYT from '../../../../components/DataTableYT/DataTableYT';\nimport {Column} from '@gravity-ui/react-data-table';\nimport {Text, TextInput} from '@gravity-ui/uikit';\nimport Icon from '../../../../components/Icon/Icon';\nimport {useDispatch, useSelector} from '../../../../store/redux-hooks';\nimport {selectNavigationFilter} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport unipika from '../../../../common/thor/unipika';\n\ntype Props = {\n schema: NavigationTableSchema[];\n};\n\nconst columns: Column<NavigationTableSchema>[] = [\n {\n name: 'name',\n header: 'Name',\n render: ({row}) => {\n return (\n <>\n {Boolean(row.sort_order) && (\n <Icon\n awesome={\n row.sort_order === 'descending'\n ? 'sort-amount-up'\n : 'sort-amount-down-alt'\n }\n size={16}\n />\n )}{' '}\n {unipika.prettyprint(row.name, {asHTML: false})}\n </>\n );\n },\n },\n {\n name: 'type',\n header: 'Type v3',\n render: ({row}) => {\n return (\n <>\n {row.type} {!row.required && <Text variant=\"caption-1\">optional</Text>}\n </>\n );\n },\n },\n];\n\nexport const SchemaTab: FC<Props> = ({schema}) => {\n const dispatch = useDispatch();\n const filter = useSelector(selectNavigationFilter);\n\n const handleFilterChange = (value: string) => {\n dispatch(setFilter(value));\n };\n\n return (\n <>\n <TextInput\n value={filter}\n placeholder=\"Filter by name\"\n onUpdate={handleFilterChange}\n hasClear\n />\n <DataTableYT data={schema} columns={columns} useThemeYT />\n </>\n );\n};\n","import {addI18Keysets} from '../../../../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:query-tracker.navigation-table', {en, ru});\n","import React, {FC, useMemo} from 'react';\nimport {useDispatch} from '../../../../../store/redux-hooks';\nimport {\n NavigationTable,\n NavigationTableSchema,\n} from '../../../../../store/reducers/query-tracker/queryNavigationSlice';\nimport DataTableYT from '../../../../../components/DataTableYT/DataTableYT';\nimport './PreviewTab.scss';\nimport cn from 'bem-cn-lite';\nimport {Button, Icon} from '@gravity-ui/uikit';\nimport ArrowUpRightFromSquareIcon from '@gravity-ui/icons/svgs/arrow-up-right-from-square.svg';\nimport {prepareColumns} from '../../../../../utils/navigation/prepareColumns';\nimport {TypeArray} from '../../../../../components/SchemaDataType/dataTypes';\nimport {YsonSettings} from '../../../../../store/selectors/thor/unipika';\nimport {onCellPreview} from '../../../../../store/actions/navigation/modals/cell-preview';\nimport i18n from './i18n';\n\nconst b = cn('navigation-preview-tab');\n\ntype Props = {\n table: NavigationTable;\n ysonSettings: YsonSettings;\n onEditorInsert: () => void;\n};\n\nexport const PreviewTab: FC<Props> = ({table, ysonSettings, onEditorInsert}) => {\n const dispatch = useDispatch();\n const onShowPreview = React.useCallback(\n (columnName: string, rowIndex: number) => {\n dispatch(onCellPreview({columnName, rowIndex}));\n },\n [dispatch],\n );\n const columns = useMemo(() => {\n return prepareColumns({\n columns: table.columns.map((i) => ({name: i})),\n keyColumns: [],\n yqlTypes: table.yqlTypes as TypeArray[] | null,\n ysonSettings,\n useRawStrings: undefined,\n schemaByName: table.schema.reduce<Record<string, NavigationTableSchema>>(\n (acc, item) => {\n acc[item.name] = item;\n return acc;\n },\n {},\n ),\n onShowPreview,\n });\n }, [table, ysonSettings]);\n\n return (\n <div>\n <Button onClick={onEditorInsert}>\n <Icon data={ArrowUpRightFromSquareIcon} size={16} />\n {i18n('action_insert-select')}\n </Button>\n <DataTableYT className={b()} columns={columns} data={table.rows} useThemeYT />\n </div>\n );\n};\n","import {addI18Keysets} from '../../../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:query-tracker.navigation-table', {en, ru});\n","import React, {FC, useState} from 'react';\nimport {SegmentedRadioGroup} from '@gravity-ui/uikit';\nimport cn from 'bem-cn-lite';\nimport './NavigationTable.scss';\nimport {SchemaTab} from './SchemaTab';\nimport {useSelector} from '../../../../store/redux-hooks';\nimport {\n selectNavigationClusterConfig,\n selectNavigationPath,\n selectTableWithFilter,\n} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport {PreviewTab} from './PreviewTab/PreviewTab';\nimport {insertTextWhereCursor} from '../helpers/insertTextWhereCursor';\nimport {createTableSelect} from '../helpers/createTableSelect';\nimport {useMonaco} from '../../hooks/useMonaco';\nimport {getQueryEngine} from '../../../../store/selectors/query-tracker/query';\nimport {getPageSize} from '../../../../store/selectors/navigation/content/table-ts';\nimport {getYsonSettingsDisableDecode} from '../../../../store/selectors/thor/unipika';\nimport i18n from './i18n';\n\nconst enum TableTab {\n Schema = 'schema',\n Preview = 'preview',\n Meta = 'meta',\n}\n\nconst b = cn('qt-navigation-table');\n\nexport const NavigationTable: FC = () => {\n const [activeTab, setActiveTab] = useState(TableTab.Schema);\n const clusterConfig = useSelector(selectNavigationClusterConfig);\n const table = useSelector(selectTableWithFilter);\n const engine = useSelector(getQueryEngine);\n const limit = useSelector(getPageSize);\n const path = useSelector(selectNavigationPath);\n const ysonSettings = useSelector(getYsonSettingsDisableDecode);\n const {getEditor} = useMonaco();\n\n const handleChangeTab = (id: string) => {\n setActiveTab(id as TableTab);\n };\n\n const handleInsertTableSelect = async () => {\n if (!clusterConfig) return;\n const editor = getEditor('queryEditor');\n const text = await createTableSelect({clusterConfig, path, engine, limit});\n insertTextWhereCursor(text, editor);\n };\n\n if (!table) return <div>{i18n('context_empty-data')}</div>;\n\n return (\n <div className={b()}>\n <SegmentedRadioGroup\n defaultValue={activeTab}\n onUpdate={handleChangeTab}\n options={[\n {value: TableTab.Schema, content: i18n('title_schema')},\n {value: TableTab.Preview, content: i18n('title_preview')},\n {value: TableTab.Meta, content: i18n('title_meta')},\n ]}\n />\n <div className={b('content')}>\n {activeTab === TableTab.Schema && <SchemaTab schema={table.schema} />}\n {activeTab === TableTab.Preview && (\n <PreviewTab\n table={table}\n onEditorInsert={handleInsertTableSelect}\n ysonSettings={ysonSettings}\n />\n )}\n {activeTab === TableTab.Meta && <MetaTable items={table.meta} />}\n </div>\n </div>\n );\n};\n","import React, {FC} from 'react';\nimport {Flex, Loader} from '@gravity-ui/uikit';\n\nexport const LoadingPlaceholder: FC = () => {\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n <Loader />\n </Flex>\n );\n};\n","import React, {FC} from 'react';\nimport {useSelector} from '../../../../store/redux-hooks';\nimport {\n selectNavigationCluster,\n selectNavigationError,\n selectNavigationPath,\n} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport {NavigationError as PrettyError} from '../../../navigation/Navigation/NavigationError/NavigationError';\nimport './NavigationError.scss';\nimport cn from 'bem-cn-lite';\n\nconst b = cn('yt-qt-navigation-error');\n\nexport const NavigationError: FC = () => {\n const error = useSelector(selectNavigationError);\n const cluster = useSelector(selectNavigationCluster);\n const path = useSelector(selectNavigationPath);\n\n if (!cluster || !error) return null;\n\n return (\n <div className={b()}>\n <PrettyError\n message={error?.message}\n details={error}\n cluster={cluster}\n path={path}\n vertical\n />\n </div>\n );\n};\n","import React, {FC} from 'react';\nimport {NavigationEmpty} from './NavigationEmpty';\nimport {useSelector} from '../../../../store/redux-hooks';\nimport {selectNavigationNodeType} from '../../../../store/selectors/query-tracker/queryNavigation';\nimport {BodyType} from '../../../../store/reducers/query-tracker/queryNavigationSlice';\nimport {ClusterList} from '../ClusterList';\nimport {NodeList} from '../NodeList';\nimport {NavigationTable} from '../NavigationTable';\nimport {LoadingPlaceholder} from './LoadingPlaceholder';\nimport {NavigationError} from './NavigationError';\n\nexport const NavigationBody: FC = () => {\n const nodeType = useSelector(selectNavigationNodeType);\n\n switch (nodeType) {\n case BodyType.Tree:\n return <NodeList />;\n case BodyType.Table:\n return <NavigationTable />;\n case BodyType.Cluster:\n return <ClusterList />;\n case BodyType.Loading:\n return <LoadingPlaceholder />;\n case BodyType.Error:\n return <NavigationError />;\n default:\n return <NavigationEmpty />;\n }\n};\n","import React, {FC, useEffect} from 'react';\nimport './Navigation.scss';\nimport {NavigationHeader} from './NavigationHeader';\nimport {NavigationBody} from './NavigationBody';\nimport cn from 'bem-cn-lite';\nimport {useDispatch} from '../../../store/redux-hooks';\nimport {initNavigation} from '../../../store/actions/query-tracker/queryNavigation';\n\nconst b = cn('query-navigation');\n\nexport const Navigation: FC = () => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(initNavigation());\n }, [dispatch]);\n\n return (\n <div className={b()}>\n <NavigationHeader />\n <NavigationBody />\n </div>\n );\n};\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nconst block = cn('yt-page-counter');\n\nexport interface PageCounterProps {\n className?: string;\n pageIndex?: number;\n pageCount?: number;\n}\n\nfunction PageCounter({pageIndex, pageCount, className}: PageCounterProps) {\n if (pageIndex === undefined || pageCount === undefined) {\n return null;\n }\n\n return pageCount! > 1 ? (\n <span className={block(null, className)}>\n Page: {(pageIndex || 0) + 1} / {pageCount}\n </span>\n ) : null;\n}\n\nexport default React.memo(PageCounter);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport barsDescendingSvg from '@gravity-ui/icons/svgs/bars-descending-align-left.svg';\nimport {Button, DropdownMenu, Icon, Text} from '@gravity-ui/uikit';\n\nimport format from '../../common/hammer/format';\n\nimport SortIcon from '../../components/SortIcon/SortIcon';\n\nimport {OrderType, calculateNextOrderValue, nextSortOrderValue} from '../../utils/sort-helpers';\nimport PageCounter, {PageCounterProps} from '../../components/PageCounter/PageCounter';\nimport Loader from '../../components/Loader/Loader';\nimport {rumLogError} from '../../rum/rum-counter';\n\nimport './ColumnHeader.scss';\n\nconst block = cn('column-header');\n\nexport type ColumnInfo<T> = {\n column: T;\n title?: string;\n shortTitle?: string;\n /**\n * Ignored when allowedOrderTypes is defined\n */\n allowUnordered?: boolean;\n /**\n * Ignored when allowedOrderTypes is defined\n */\n withUndefined?: boolean;\n allowedOrderTypes?: Array<OrderType>;\n};\n\nexport type HasSortColumn<T> =\n | (ColumnInfo<T> & {options?: undefined})\n | ({\n title: string;\n shortTitle?: string;\n column: T;\n options: Array<ColumnInfo<T>>;\n } & Partial<Record<keyof Omit<ColumnInfo<T>, 'column' | 'title' | 'shortTitle'>, undefined>>);\n\nexport type ColumnHeaderProps<T extends string = string> = PageCounterProps &\n HasSortColumn<T> & {\n className?: string;\n order?: OrderType;\n multisortIndex?: number;\n sortIconSize?: number;\n onSort?: (\n column: T,\n nextOrder: OrderType,\n options: {currentOrder?: OrderType; multisort?: boolean},\n ) => void;\n\n loading?: boolean;\n\n align?: 'center' | 'left' | 'right';\n };\n\ntype NameTitleContent = {\n nameContent: string;\n titleContent: string;\n};\n\nfunction getNameTitle<T extends string>({\n column,\n title,\n shortTitle,\n}: Pick<ColumnInfo<T>, 'column' | 'title' | 'shortTitle'>): NameTitleContent {\n const t = title ?? format.ReadableField(column);\n const nameContent = !shortTitle ? t : shortTitle;\n return {nameContent, titleContent: t};\n}\n\nfunction useColumnInfo<T extends string = string>(\n props: ColumnHeaderProps<T>,\n): ColumnInfo<T> & NameTitleContent & {subColumn?: NameTitleContent} {\n if (props.options === undefined) {\n const {column, allowUnordered, withUndefined, title, shortTitle, allowedOrderTypes} = props;\n return {\n column,\n allowUnordered,\n withUndefined,\n allowedOrderTypes,\n ...getNameTitle({column, title, shortTitle}),\n };\n }\n\n const {column: value, options, title, shortTitle} = props;\n const columnData = options.find(({column}) => value === column)!;\n if (!columnData) {\n rumLogError({\n message: 'Unexpected behavior: missing value in ColumnHeader.props.options',\n additional: props,\n });\n }\n return {\n subColumn: getNameTitle({...columnData}),\n ...columnData,\n ...getNameTitle({column: '', title, shortTitle}),\n };\n}\n\nexport default function ColumnHeader<T extends string = string>(props: ColumnHeaderProps<T>) {\n const {\n className,\n align,\n order,\n onSort,\n multisortIndex,\n loading,\n pageIndex,\n pageCount,\n sortIconSize,\n } = props;\n const {\n column,\n allowUnordered,\n withUndefined,\n nameContent,\n titleContent,\n allowedOrderTypes,\n subColumn,\n } = useColumnInfo(props);\n\n const changeHandler = React.useCallback(\n (e: React.MouseEvent) => {\n const nextOrder = allowedOrderTypes\n ? calculateNextOrderValue(order, allowedOrderTypes)\n : nextSortOrderValue(order, allowUnordered, withUndefined);\n onSort?.(column, nextOrder, {\n currentOrder: order,\n multisort: e.ctrlKey || e.metaKey,\n });\n },\n [column, order, onSort, allowUnordered, allowedOrderTypes, withUndefined],\n );\n\n const sortable = Boolean(onSort);\n\n return (\n <div className={block(null, className)}>\n <div\n className={block('label-icon', {sortable, align})}\n onClick={sortable ? changeHandler : undefined}\n >\n <span className={block('label')} title={titleContent}>\n {nameContent}\n </span>\n {sortable && (\n <span className={block('icon')}>\n <SortIcon order={order} size={sortIconSize} />\n </span>\n )}\n {multisortIndex !== undefined && (\n <span className={block('multisort')}>\n <sup>{multisortIndex}</sup>\n </span>\n )}\n {Boolean(order) && Boolean(subColumn) && (\n <Text\n className={block('label', {'sub-column': true})}\n variant=\"caption-2\"\n title={subColumn?.titleContent}\n color=\"dark-secondary\"\n >\n {subColumn?.nameContent}\n </Text>\n )}\n </div>\n <SubColumnSelector options={props.options} order={order} onSort={onSort} />\n {loading !== undefined && (\n <div className={block('loader')}>\n <Loader visible={loading} />\n </div>\n )}\n {Boolean(pageCount) && (\n <PageCounter\n className={block('page-counter')}\n pageIndex={pageIndex}\n pageCount={pageCount}\n />\n )}\n </div>\n );\n}\n\nfunction SubColumnSelector<T extends string>({\n order,\n options,\n onSort,\n}: Pick<ColumnHeaderProps<T>, 'onSort'> & {\n order?: ColumnHeaderProps<T>['order'];\n options?: Array<ColumnInfo<T>>;\n}) {\n return !options ? null : (\n <DropdownMenu\n items={options.map((x) => {\n const {titleContent} = getNameTitle(x);\n return {\n text: titleContent,\n action() {\n if (!onSort) {\n return;\n }\n const {column, allowUnordered, withUndefined, allowedOrderTypes} = x;\n const nextOrder = allowedOrderTypes\n ? calculateNextOrderValue(order, allowedOrderTypes)\n : nextSortOrderValue(order, allowUnordered, withUndefined);\n onSort(column, nextOrder, {\n currentOrder: order,\n });\n },\n };\n })}\n renderSwitcher={({onClick}) => (\n <Button onClick={onClick} view=\"flat\" size=\"xs\">\n <Icon size={12} data={barsDescendingSvg} />\n </Button>\n )}\n />\n );\n}\n","const SvgFolderTree = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M7.5 13.5v-3A.5.5 0 0 1 8 10h.672a.5.5 0 0 1 .353.146l.414.415.44.439H13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5H8a.5.5 0 0 1-.5-.5M6 13H4.5a3 3 0 0 1-3-3V1.25a.75.75 0 0 1 1.5 0V2a1.5 1.5 0 0 0 1.5 1.5H6v-1a2 2 0 0 1 2-2h.672a2 2 0 0 1 1.414.586l.414.414H13a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2V5H4.5A3 3 0 0 1 3 4.599V10a1.5 1.5 0 0 0 1.5 1.5H6v-1a2 2 0 0 1 2-2h.672a2 2 0 0 1 1.414.586l.414.414H13a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2zm1.5-8.75V5.5A.5.5 0 0 0 8 6h5a.5.5 0 0 0 .5-.5v-2A.5.5 0 0 0 13 3H9.879l-.44-.44-.414-.414A.5.5 0 0 0 8.672 2H8a.5.5 0 0 0-.5.5z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgFolderTree;","import {TRASH_PATH} from '../../constants/navigation';\n\nexport function isTrashNode(path?: string) {\n return path === TRASH_PATH;\n}\n","import {addComponentKeysets} from '../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nconst COMPONENT = 'lab/Breadcrumbs';\n\nexport default addComponentKeysets({en, ru}, COMPONENT);\n","import {block} from '../utils/cn';\n\nexport const b = block('breadcrumbs');\n","'use client';\n\nimport * as React from 'react';\n\nimport {\n useClick,\n useDismiss,\n useFloatingRootContext,\n useInteractions,\n useListNavigation,\n useRole,\n} from '@floating-ui/react';\nimport type {UseInteractionsReturn} from '@floating-ui/react';\n\nimport {Button} from '../Button';\nimport {Popup} from '../Popup';\nimport type {PopupPlacement} from '../Popup';\n\nimport i18n from './i18n';\nimport {b} from './utils';\n\ninterface DropdownMenuProps {\n children: React.ReactNode;\n disabled?: boolean;\n popupPlacement?: PopupPlacement;\n popupStyle?: 'staircase';\n}\n\ninterface MenuContext {\n isMenu: boolean;\n activeIndex: null | number;\n getItemProps: UseInteractionsReturn['getItemProps'];\n listItemsRef: {current: Array<HTMLElement | null>};\n popupStyle: undefined | 'staircase';\n}\n\nconst menuContext = React.createContext<MenuContext>({\n isMenu: false,\n activeIndex: null as null | number,\n getItemProps: (props = {}) => props,\n listItemsRef: {current: []},\n popupStyle: undefined,\n});\n\nexport function BreadcrumbsDropdownMenu({\n children,\n disabled,\n popupPlacement,\n popupStyle,\n}: DropdownMenuProps) {\n const [reference, setReference] = React.useState<HTMLButtonElement | null>(null);\n const [floating, setFloating] = React.useState<HTMLDivElement | null>(null);\n const [activeIndex, setActiveIndex] = React.useState<number | null>(null);\n const [open, setOpen] = React.useState(false);\n\n const context = useFloatingRootContext({\n open,\n onOpenChange: setOpen,\n elements: {reference, floating},\n });\n\n const listItemsRef = React.useRef<Array<HTMLElement | null>>([]);\n\n const listNavigation = useListNavigation(context, {\n enabled: !disabled,\n listRef: listItemsRef,\n activeIndex,\n onNavigate: setActiveIndex,\n loop: true,\n });\n\n const dismiss = useDismiss(context, {enabled: !disabled});\n const click = useClick(context, {enabled: !disabled});\n const role = useRole(context, {role: 'menu'});\n\n const interactions = [click, dismiss, listNavigation, role];\n const {getReferenceProps, getItemProps} = useInteractions(interactions);\n\n const {t} = i18n.useTranslation();\n\n return (\n <div className={b('menu')}>\n <Button\n ref={setReference}\n {...getReferenceProps()}\n title={t('label_more')}\n aria-label={t('label_more')}\n size=\"s\"\n view=\"flat\"\n disabled={disabled}\n >\n <Button.Icon>...</Button.Icon>\n </Button>\n <Popup\n floatingContext={context}\n floatingRef={setFloating}\n floatingInteractions={interactions}\n placement={popupPlacement}\n className={b('menu-popup')}\n >\n <menuContext.Provider\n value={{isMenu: true, getItemProps, listItemsRef, activeIndex, popupStyle}}\n >\n {children}\n </menuContext.Provider>\n </Popup>\n </div>\n );\n}\n\nexport function useMenuContext() {\n return React.useContext(menuContext);\n}\n","import * as React from 'react';\n\nimport {Check} from '@gravity-ui/icons';\nimport {focusable} from 'tabbable';\n\nimport {useForkRef} from '../../../hooks';\nimport {ArrowToggle} from '../../ArrowToggle';\nimport {Button} from '../../Button';\nimport {Icon} from '../../Icon';\nimport type {DOMProps} from '../../types';\nimport {block} from '../../utils/cn';\nimport {filterDOMProps} from '../../utils/filterDOMProps';\n\nimport './ListItemView.scss';\n\nconst b = block('lab-list-item-view');\n\nexport interface ListItemViewProps<T extends React.ElementType = 'div'> extends DOMProps {\n id?: string;\n children: React.ReactNode;\n size?: 's' | 'm' | 'l' | 'xl';\n selected?: boolean;\n active?: boolean;\n hovered?: boolean;\n onClick?: (e: React.MouseEvent) => void;\n disabled?: boolean;\n selectionStyle?: 'check' | 'highlight' | 'none';\n collapsible?: boolean;\n collapsed?: boolean;\n onCollapseChange?: (collapsed: boolean) => void;\n draggable?: boolean;\n nestedLevel?: number;\n startContent?: React.ReactNode;\n description?: React.ReactNode;\n endContent?: React.ReactNode;\n isContainer?: boolean;\n component?: T;\n componentProps?: React.ComponentProps<T>;\n}\n\nexport const ListItemView = React.forwardRef(ListItemViewComponent) as <\n T extends React.ElementType = 'div',\n>(\n props: ListItemViewProps<T> & Omit<React.ComponentPropsWithRef<T>, keyof ListItemViewProps<T>>,\n) => React.ReactElement;\n\nexport function ListItemViewComponent(\n props: ListItemViewProps & Omit<React.ComponentPropsWithoutRef<'div'>, keyof ListItemViewProps>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n size,\n active,\n selected,\n hovered,\n disabled,\n onClick,\n selectionStyle,\n className,\n style,\n collapsed,\n onCollapseChange,\n children,\n isContainer = false,\n component: Component = 'div',\n componentProps,\n collapsible: _collapsible,\n description,\n draggable: _draggable,\n startContent: _startContent,\n endContent: _endContent,\n nestedLevel: _nestedLevel,\n } = props;\n const containerRef = React.useRef(null);\n const componentRef = useForkRef(containerRef, ref);\n return (\n <Component\n ref={componentRef}\n {...componentProps}\n {...filterDOMProps(props)}\n className={b(\n {\n size,\n selected: selected && selectionStyle === 'highlight',\n disabled,\n active,\n hovered: typeof hovered === 'boolean' && (hovered ? 'yes' : 'no'),\n 'is-container': isContainer,\n 'has-description': Boolean(description),\n },\n componentProps?.className ?? className,\n )}\n style={componentProps?.style ?? style}\n onClick={(e) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n const target = e.target;\n if (\n target instanceof Element &&\n containerRef.current &&\n focusable(containerRef.current).some((el) => el.contains(target))\n ) {\n return;\n }\n\n if (\n typeof onClick === 'function' ||\n typeof componentProps?.onClick === 'function'\n ) {\n onClick?.(e);\n componentProps?.onClick?.(e);\n } else if (typeof onCollapseChange === 'function') {\n onCollapseChange(!collapsed);\n }\n }}\n >\n {isContainer ? (\n children\n ) : (\n <ListItemViewContent {...props}>{children}</ListItemViewContent>\n )}\n </Component>\n );\n}\n\nfunction ListItemViewContent({\n selected,\n disabled,\n selectionStyle,\n draggable,\n nestedLevel,\n collapsible,\n collapsed,\n onCollapseChange,\n startContent,\n children,\n description,\n endContent,\n}: ListItemViewProps) {\n return (\n <React.Fragment>\n {draggable ? <Slot name=\"drag-handle\" /> : null}\n {nestedLevel ? <Slot name=\"spacer\" style={{'--_--nested-level': nestedLevel}} /> : null}\n {collapsible ? (\n <Slot name=\"collapsed-toggle\">\n <Button\n className={b('collapsible')}\n view=\"flat\"\n tabIndex={-1}\n disabled={disabled}\n onClick={() => {\n onCollapseChange?.(!collapsed);\n }}\n aria-hidden=\"true\"\n >\n <Button.Icon>\n <ArrowToggle\n className={b('arrow', {direction: collapsed ? 'bottom' : 'top'})}\n />\n </Button.Icon>\n </Button>\n </Slot>\n ) : null}\n {selectionStyle === 'check' && (\n <Slot name=\"checked\">\n <div className={b('checked')}>\n {selected ? <Icon data={Check} className={b('icon')} /> : null}\n </div>\n </Slot>\n )}\n {startContent ? <Slot name=\"start-content\">{startContent}</Slot> : null}\n <Slot name=\"content\">{children}</Slot>\n {description ? <Slot name=\"description\">{description}</Slot> : null}\n {endContent ? <Slot name=\"end-content\">{endContent}</Slot> : null}\n </React.Fragment>\n );\n}\n\nfunction Slot({\n name,\n children,\n className,\n style,\n}: {\n name:\n | 'drag-handle'\n | 'spacer'\n | 'collapsed-toggle'\n | 'checked'\n | 'start-content'\n | 'content'\n | 'description'\n | 'end-content'\n | 'container';\n children?: React.ReactNode;\n} & DOMProps) {\n return (\n <div className={b('slot', {name}, className)} style={style}>\n {children}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\n\nimport {KeyCode} from '../../constants';\nimport {ListItemView} from '../lab/ListItemView/ListItemView';\nimport {filterDOMProps} from '../utils/filterDOMProps';\n\nimport {useMenuContext} from './BreadcrumbsDropdownMenu';\nimport {b} from './utils';\n\nexport interface BreadcrumbsItemInnerProps {\n __disabled?: boolean;\n __onAction?: () => void;\n __current?: boolean;\n __index?: number;\n}\n\nexport interface BreadcrumbsItemProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\nfunction BreadcrumbsItem(props: BreadcrumbsItemProps, ref: React.ForwardedRef<HTMLAnchorElement>) {\n const domProps = filterDOMProps(props, {labelable: true});\n\n const {\n href,\n hrefLang,\n target,\n rel,\n download,\n ping,\n referrerPolicy,\n children,\n __disabled: disabled,\n __current: current,\n __onAction: onAction,\n __index: index,\n ...restProps\n } = props as BreadcrumbsItemProps & BreadcrumbsItemInnerProps;\n\n const handleAction = (event: React.MouseEvent<HTMLAnchorElement>) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n if (typeof restProps.onClick === 'function') {\n restProps.onClick(event);\n }\n\n if (typeof onAction === 'function') {\n onAction();\n }\n };\n\n const linkProps: React.AnchorHTMLAttributes<HTMLAnchorElement> = {\n onClick: handleAction,\n 'aria-disabled': disabled ? true : undefined,\n };\n\n if (href) {\n linkProps.href = href;\n linkProps.hrefLang = hrefLang;\n linkProps.target = target;\n linkProps.rel = target === '_blank' && !rel ? 'noopener noreferrer' : rel;\n linkProps.download = download;\n linkProps.ping = ping;\n linkProps.referrerPolicy = referrerPolicy;\n linkProps.tabIndex = disabled ? -1 : undefined;\n } else {\n linkProps.role = 'link';\n linkProps.tabIndex = disabled ? undefined : 0;\n linkProps.onKeyDown = (event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n if (typeof restProps.onKeyDown === 'function') {\n restProps.onKeyDown(event);\n }\n\n if (event.key === KeyCode.ENTER) {\n if (typeof onAction === 'function') {\n onAction();\n }\n }\n };\n }\n\n if (current) {\n linkProps['aria-current'] = props['aria-current'] ?? 'page';\n }\n\n const Element = href ? 'a' : 'span';\n\n const {isMenu, getItemProps, listItemsRef, activeIndex, popupStyle} = useMenuContext();\n if (isMenu) {\n const active = !disabled && activeIndex === index;\n return (\n <ListItemView\n ref={(node: HTMLElement | null) => {\n listItemsRef.current[index ?? 0] = node;\n }}\n nestedLevel={popupStyle === 'staircase' ? index : undefined}\n active={active}\n size=\"m\"\n className={b('menu-link', props.className)}\n component={Element}\n componentProps={getItemProps({\n ...restProps,\n ...domProps,\n ...linkProps,\n role: 'menuitem',\n tabIndex: active ? 0 : -1,\n })}\n disabled={disabled}\n >\n {children}\n </ListItemView>\n );\n }\n\n return (\n <Element\n {...restProps}\n {...domProps}\n {...linkProps}\n ref={ref}\n className={b(\n 'link',\n {\n 'is-current': current,\n 'is-disabled': disabled && !current,\n },\n props.className,\n )}\n >\n {children}\n </Element>\n );\n}\n\nBreadcrumbsItem.displayName = 'Breadcrumbs.Item';\n\nconst _BreadcrumbsItem = React.forwardRef(BreadcrumbsItem);\nexport {_BreadcrumbsItem as BreadcrumbsItem};\n","import type {BreadcrumbsProps} from './Breadcrumbs';\nimport {b} from './utils';\n\ntype Props = Pick<BreadcrumbsProps, 'separator'>;\n\nexport function BreadcrumbsSeparator({separator}: Props) {\n return (\n <div aria-hidden={true} className={b('divider')}>\n {separator ?? '/'}\n </div>\n );\n}\n\nBreadcrumbsSeparator.displayName = 'Breadcrumbs.Separator';\n","'use client';\n\nimport * as React from 'react';\n\nimport {useForkRef, useResizeObserver} from '../../hooks';\nimport type {PopupPlacement} from '../Popup';\nimport type {AriaLabelingProps, DOMProps, Key, QAProps} from '../types';\nimport {filterDOMProps} from '../utils/filterDOMProps';\n\nimport {BreadcrumbsDropdownMenu} from './BreadcrumbsDropdownMenu';\nimport {BreadcrumbsItem} from './BreadcrumbsItem';\nimport type {BreadcrumbsItemInnerProps} from './BreadcrumbsItem';\nimport {BreadcrumbsSeparator} from './BreadcrumbsSeparator';\nimport {b} from './utils';\n\nimport './Breadcrumbs.scss';\n\nexport interface BreadcrumbsProps extends DOMProps, AriaLabelingProps, QAProps {\n id?: string;\n showRoot?: boolean;\n separator?: React.ReactNode;\n maxItems?: number;\n popupStyle?: 'staircase';\n popupPlacement?: PopupPlacement;\n itemComponent?: React.ElementType;\n children: React.ReactNode;\n disabled?: boolean;\n onAction?: (key: Key) => void;\n endContent?: React.ReactNode;\n}\n\nexport const Breadcrumbs = React.forwardRef(function Breadcrumbs(\n props: BreadcrumbsProps,\n ref: React.Ref<HTMLOListElement>,\n) {\n const listRef = React.useRef<HTMLOListElement>(null);\n const containerRef = useForkRef(ref, listRef);\n const endContentRef = React.useRef<HTMLLIElement>(null);\n\n const items: React.ReactElement<any>[] = [];\n React.Children.forEach(props.children, (child, index) => {\n if (React.isValidElement(child)) {\n if (child.key === undefined || child.key === null) {\n child = React.cloneElement(child, {key: index});\n }\n items.push(child);\n }\n });\n\n const [visibleItemsCount, setVisibleItemsCount] = React.useState(items.length);\n const [calculated, setCalculated] = React.useState(false);\n const recalculate = (visibleItems: number) => {\n const list = listRef.current;\n if (!list) {\n return;\n }\n const listItems = Array.from(list.children) as HTMLElement[];\n const endElement = endContentRef.current;\n if (endElement) {\n listItems.pop();\n }\n if (listItems.length === 0) {\n setCalculated(true);\n return;\n }\n const containerWidth = list.offsetWidth - (endElement?.offsetWidth ?? 0);\n let newVisibleItemsCount = 0;\n let calculatedWidth = 0;\n let maxItems = props.maxItems || Infinity;\n\n let rootWidth = 0;\n if (props.showRoot) {\n const item = listItems.shift();\n if (item) {\n rootWidth = item.offsetWidth;\n calculatedWidth += rootWidth;\n }\n newVisibleItemsCount++;\n }\n\n const hasMenu = items.length > visibleItems;\n if (hasMenu) {\n const item = listItems.shift();\n if (item) {\n calculatedWidth += item.offsetWidth;\n }\n maxItems--;\n }\n\n if (props.showRoot && calculatedWidth >= containerWidth) {\n calculatedWidth -= rootWidth;\n newVisibleItemsCount--;\n }\n\n const lastItem = listItems.pop();\n if (lastItem) {\n calculatedWidth += Math.min(lastItem.offsetWidth, 200);\n if (calculatedWidth < containerWidth) {\n newVisibleItemsCount++;\n }\n }\n\n for (let i = listItems.length - 1; i >= 0; i--) {\n const item = listItems[i];\n calculatedWidth += item.offsetWidth;\n if (calculatedWidth >= containerWidth) {\n break;\n }\n newVisibleItemsCount++;\n }\n\n newVisibleItemsCount = Math.max(Math.min(maxItems, newVisibleItemsCount), 1);\n if (newVisibleItemsCount === visibleItemsCount) {\n setCalculated(true);\n } else {\n setVisibleItemsCount(newVisibleItemsCount);\n }\n };\n\n const handleResize = React.useCallback(() => {\n setVisibleItemsCount(items.length);\n setCalculated(false);\n }, [items.length]);\n useResizeObserver({\n ref: listRef,\n onResize: handleResize,\n });\n useResizeObserver({\n ref: props.endContent ? endContentRef : undefined,\n onResize: handleResize,\n });\n\n const lastChildren = React.useRef<typeof props.children | null>(null);\n React.useLayoutEffect(() => {\n if (calculated && props.children !== lastChildren.current) {\n lastChildren.current = props.children;\n setVisibleItemsCount(items.length);\n setCalculated(false);\n }\n }, [calculated, items.length, props.children]);\n\n React.useLayoutEffect(() => {\n if (!calculated) {\n recalculate(visibleItemsCount);\n }\n });\n\n let contents = items;\n if (items.length > visibleItemsCount) {\n contents = [];\n const breadcrumbs = [...items];\n let endItems = visibleItemsCount;\n if (props.showRoot && visibleItemsCount > 1) {\n const rootItem = breadcrumbs.shift();\n if (rootItem) {\n contents.push(rootItem);\n }\n endItems--;\n }\n const hiddenItems = breadcrumbs.slice(0, -endItems);\n const menuItem = (\n <BreadcrumbsDropdownMenu\n disabled={props.disabled}\n popupPlacement={props.popupPlacement}\n popupStyle={props.popupStyle}\n data-breadcrumbs-menu-item={true}\n >\n {hiddenItems.map((child, index) => {\n const Component = props.itemComponent ?? BreadcrumbsItem;\n const key = child.key ?? index;\n const handleAction = () => {\n if (typeof props.onAction === 'function') {\n props.onAction(key);\n }\n };\n const innerProps: BreadcrumbsItemInnerProps = {\n __index: index,\n __disabled: props.disabled || child.props.disabled,\n __onAction: handleAction,\n };\n return (\n <Component {...child.props} key={key} {...innerProps}>\n {child.props.children}\n </Component>\n );\n })}\n </BreadcrumbsDropdownMenu>\n );\n\n contents.push(menuItem);\n contents.push(...breadcrumbs.slice(-endItems));\n }\n\n const lastIndex = contents.length - 1;\n const breadcrumbsItems = contents.map((child, index) => {\n const isCurrent = index === lastIndex;\n const key = child.key ?? index;\n\n const {'data-breadcrumbs-menu-item': isMenu, ...childProps} = child.props;\n let item: React.ReactNode;\n if (isMenu) {\n item = child;\n } else {\n const Component = props.itemComponent ?? BreadcrumbsItem;\n const handleAction = () => {\n if (typeof props.onAction === 'function') {\n props.onAction(key);\n }\n };\n const innerProps: BreadcrumbsItemInnerProps = {\n __current: isCurrent,\n __disabled: props.disabled || childProps.disabled,\n __onAction: handleAction,\n };\n item = (\n <Component {...childProps} key={key} {...innerProps}>\n {childProps.children}\n </Component>\n );\n }\n return (\n <li\n key={isMenu ? 'menu' : `item-${key}`}\n className={b('item', {calculating: isCurrent && !calculated, current: isCurrent})}\n >\n {item}\n {isCurrent ? null : <BreadcrumbsSeparator separator={props.separator} />}\n </li>\n );\n });\n if (props.endContent) {\n breadcrumbsItems.push(\n <li key=\"end-content\" ref={endContentRef} className={b('item')}>\n {props.endContent}\n </li>,\n );\n }\n return (\n <ol\n ref={containerRef}\n {...filterDOMProps(props, {labelable: true})}\n data-qa={props.qa}\n className={b(null, props.className)}\n style={props.style}\n >\n {breadcrumbsItems}\n </ol>\n );\n}) as unknown as BreadcrumbsComponent;\n\ntype BreadcrumbsComponent = React.FunctionComponent<\n BreadcrumbsProps & {ref?: React.Ref<HTMLElement>}\n> & {\n Item: typeof BreadcrumbsItem;\n};\n\nBreadcrumbs.Item = BreadcrumbsItem;\nBreadcrumbs.displayName = 'Breadcrumbs';\n","const SvgTextIndent = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M13.25 2H2.75a.75.75 0 0 0 0 1.5h10.5a.75.75 0 0 0 0-1.5m0 3.5h-5.5a.75.75 0 0 0 0 1.5h5.5a.75.75 0 0 0 0-1.5m0 3.5h-5.5a.75.75 0 0 0 0 1.5h5.5a.75.75 0 0 0 0-1.5m-10.5 3.5h10.5a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5m.49-7a.74.74 0 0 1 .463.162l1.906 1.526a1.04 1.04 0 0 1 0 1.624l-1.906 1.526A.74.74 0 0 1 2.5 9.76V6.24a.74.74 0 0 1 .74-.74\" clipRule=\"evenodd\" /></svg>;\nexport default SvgTextIndent;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\nimport unipika from '../../common/thor/unipika';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\nimport Yson from '../../components/Yson/Yson';\nimport {UnipikaSettings} from '../../components/Yson/StructuredYson/StructuredYsonTypes';\n\n/**\n * See unipika for more details\n */\nexport type UnipikaValueType = Array<string | UnipikaValueType>;\n\nexport type YqlValueProps = {\n value?: unknown;\n type: UnipikaValueType;\n settings: UnipikaSettings;\n inline?: boolean;\n};\n\nexport default class YqlValue extends React.Component<YqlValueProps> {\n static propTypes = {\n settings: PropTypes.object,\n value: PropTypes.any,\n type: PropTypes.array,\n inline: PropTypes.bool,\n };\n\n static defaultProps = {\n inline: false,\n folding: false,\n settings: Yson.defaultUnipikaSettings,\n };\n\n static getFormattedValue(value: unknown, type: UnipikaValueType, settings: UnipikaSettings) {\n const yqlValue = [value, type];\n\n return settings.format === 'raw-json'\n ? unipika.formatRaw(yqlValue, settings)\n : unipika.formatFromYQL(yqlValue, settings);\n }\n\n render() {\n const {value, type, inline, settings} = this.props;\n\n const formattedValue = YqlValue.getFormattedValue(value, type, settings);\n\n let title;\n\n if (inline) {\n const titleSettings = Object.assign({}, settings, {\n asHTML: false,\n });\n\n title =\n settings.format === 'raw-json'\n ? unipika.formatRaw(value, titleSettings)\n : unipika.formatFromYQL(value, titleSettings);\n }\n\n const classes = block('unipika-wrapper')({\n inline: inline && 'yes',\n });\n\n return (\n <ErrorBoundary>\n {settings.asHTML ? (\n <div className={classes} title={title} dir=\"auto\">\n <pre\n className=\"unipika\"\n dangerouslySetInnerHTML={{__html: formattedValue}}\n />\n </div>\n ) : (\n <div\n className={classes}\n title={title}\n dir=\"auto\"\n dangerouslySetInnerHTML={{__html: formattedValue}}\n />\n )}\n </ErrorBoundary>\n );\n }\n}\n","import {addI18Keysets} from '../../../i18n/index';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:column-cell', {en, ru});\n","import React, {useState} from 'react';\nimport cn from 'bem-cn-lite';\nimport copyToClipboard from 'copy-to-clipboard';\n\nimport {Button, Flex, Icon as UIKitIcon} from '@gravity-ui/uikit';\nimport {Eye} from '@gravity-ui/icons';\n\nimport unipika from '../../common/thor/unipika';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport YqlValue from '../../components/YqlValue/YqlValue';\nimport Yson from '../../components/Yson/Yson';\nimport Label from '../../components/Label/Label';\nimport {TypeArray} from '../../components/SchemaDataType/dataTypes';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {UnipikaSettings} from '../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {rumLogError} from '../../rum/rum-counter';\n\nimport i18n from './i18n';\n\nimport './ColumnCell.scss';\n\nconst block = cn('yt-column-cell');\n\nfunction unquote(v: string) {\n const match = /^\"(.*)\"$/.exec(v);\n return match ? match[1] : v;\n}\n\ntype CellValueType =\n | null\n | (CellValueData & {\n $incomplete?: boolean;\n [k: number]: {inc?: boolean};\n });\n\ntype CellValueData = {$type: string; $value: string} | {$type?: undefined; $value: unknown};\n\ntype ColumnCellProps = {\n className?: string;\n\n value?: CellValueType | null;\n yqlTypes: Array<TypeArray> | null;\n ysonSettings: UnipikaSettings;\n allowRawStrings?: boolean | null;\n rowIndex: number;\n columnName: string;\n onShowPreview: (columnName: string, rowIndex: number, tag?: string) => void | Promise<void>;\n useYqlTypes?: boolean;\n};\n\nexport function ColumnCell({\n value = null,\n yqlTypes,\n ysonSettings,\n allowRawStrings,\n className,\n rowIndex,\n columnName,\n onShowPreview,\n useYqlTypes,\n}: ColumnCellProps) {\n const [hovered, setHovered] = useState(false);\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n const formatType = yqlTypes && value ? yqlTypes[Number(value[1])] : undefined;\n\n const escapedValue =\n formatType && value\n ? YqlValue.getFormattedValue(value[0], formatType, {\n ...ysonSettings,\n asHTML: false,\n })\n : unipika.prettyprint(value, {...ysonSettings, asHTML: false});\n const formattedValue =\n formatType && value ? (\n <YqlValue value={value[0]} type={formatType} settings={ysonSettings} />\n ) : (\n <Yson value={value} settings={ysonSettings} />\n );\n\n const {tag, isIncompleteTagged, isIncompleteValue} = React.useMemo(() => {\n let isIncompleteTagged = false;\n let isIncompleteValue = false;\n let tag: string | undefined;\n\n if (value && formatType) {\n const flags: {incomplete: boolean} = {incomplete: false};\n\n const {$tag} = unipika.converters.yql([value[0], formatType], ysonSettings, flags);\n\n isIncompleteValue = flags.incomplete;\n isIncompleteTagged = flags.incomplete && $tag;\n tag = $tag;\n } else if (value) {\n isIncompleteValue = Boolean(value.$incomplete);\n }\n\n return {tag, isIncompleteTagged, isIncompleteValue};\n }, [value, formatType, ysonSettings]);\n\n const valueType = useYqlTypes ? formatType : value?.$type;\n const rawValue = useYqlTypes ? value?.[0] : value?.$value;\n\n const allowRawCopy = typeof rawValue === 'string' && isStringType(valueType);\n const useRawString = allowRawCopy && allowRawStrings;\n let copyTooltip = i18n('hold-shift-raw');\n if (useRawString) {\n copyTooltip = i18n('hold-shift-escaped');\n }\n\n const visibleValue = !useRawString ? (\n formattedValue\n ) : (\n <div className={'unipika-wrapper'}>\n <pre className={'unipika'}>\n <span className={'string'}>{rawValue}</span>\n </pre>\n </div>\n );\n\n const [isPreviewInProgress, setPreviewInProgress] = React.useState(false);\n\n return (\n <div\n className={block(null, className) /*dataTableBlock('value')*/}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {isIncompleteTagged ? (\n <Label theme=\"warning\" text={i18n('incomplete-type', {tag})} />\n ) : (\n visibleValue\n )}\n {(hovered || isIncompleteTagged) && (\n <div className={block('control-button-wrapper')}>\n <Flex alignItems=\"center\">\n {value && !isIncompleteValue && (\n <Tooltip\n content={\n !allowRawCopy ? undefined : (\n <span className={block('copy-value-tooltip')}>\n {copyTooltip}\n </span>\n )\n }\n >\n <ClipboardButton\n view=\"flat-secondary\"\n size=\"m\"\n text={useRawString ? rawValue : unquote(escapedValue)}\n onCopy={(event: React.MouseEvent) => {\n if (event?.shiftKey && allowRawCopy) {\n copyToClipboard(\n useRawString ? unquote(escapedValue) : rawValue,\n );\n }\n }}\n />\n </Tooltip>\n )}\n {isIncompleteValue && (\n <Button\n view=\"flat-secondary\"\n size=\"m\"\n qa=\"truncated-preview-button\"\n onClick={async () => {\n setPreviewInProgress(true);\n try {\n if (!isPreviewInProgress) {\n await onShowPreview(columnName, rowIndex, tag);\n }\n } finally {\n setPreviewInProgress(false);\n }\n }}\n loading={isPreviewInProgress}\n >\n <UIKitIcon data={Eye} size=\"12\" />\n </Button>\n )}\n </Flex>\n </div>\n )}\n </div>\n );\n}\n\nfunction isStringType(type?: string | TypeArray) {\n if (!type) {\n return false;\n }\n if (typeof type === 'string') {\n return type === 'string';\n }\n\n try {\n if (type[0] !== 'DataType') {\n return false;\n }\n const lower = type[1].toLowerCase();\n return lower === 'string' || lower === 'json' || lower === 'utf8';\n } catch (error: any) {\n rumLogError({message: `ColumnCell: unexpected type: '${JSON.stringify(type)}'`}, error);\n return false;\n }\n}\n","import React from 'react';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport SchemaDataType from '../../components/SchemaDataType/SchemaDataType';\nimport Yson from '../../components/Yson/Yson';\nimport unipika from '../../common/thor/unipika';\nimport Icon from '../../components/Icon/Icon';\nimport {ColumnCell} from '../../components/ColumnCell/ColumnCell';\n\nimport map_ from 'lodash/map';\n\nimport {TypeArray} from '../../components/SchemaDataType/dataTypes';\nimport type {YsonSettings} from '../../store/selectors/thor/unipika';\n\nexport type NameWithSortOrder = {name: string; sortOrder?: string};\n\nexport function prepareColumns({\n columns,\n keyColumns,\n yqlTypes,\n ysonSettings,\n useRawStrings,\n schemaByName,\n onShowPreview,\n useYqlTypes,\n}: {\n columns: NameWithSortOrder[];\n keyColumns: string[];\n yqlTypes?: TypeArray[] | null;\n ysonSettings: YsonSettings;\n useRawStrings: boolean | null | undefined;\n schemaByName: Record<string, any>;\n onShowPreview: (columnName: string, rowIndex: number, tag?: string) => void;\n useYqlTypes?: boolean;\n}) {\n return map_(columns, (column) => {\n const render = ({value, index}: {value?: any; index: number; row: any}) => (\n <ColumnCell\n allowRawStrings={useRawStrings}\n value={value}\n yqlTypes={yqlTypes || []}\n ysonSettings={ysonSettings}\n rowIndex={index}\n columnName={column.name}\n onShowPreview={onShowPreview}\n useYqlTypes={useYqlTypes}\n />\n );\n const {sortOrder} = column;\n const isKeyColumn = keyColumns.indexOf(column.name) > -1;\n const {type_v3} = schemaByName[column.name] || {};\n const header = (\n <Tooltip content={Boolean(type_v3) && <SchemaDataType type_v3={type_v3} />}>\n <Yson value={unipika.unescapeKeyValue(column.name)} settings={ysonSettings} inline>\n {isKeyColumn && (\n <Icon\n awesome={\n sortOrder === 'descending'\n ? 'sort-amount-up'\n : 'sort-amount-down-alt'\n }\n />\n )}\n </Yson>\n </Tooltip>\n );\n return Object.assign({}, column, {render, header});\n });\n}\n"],"names":["props","_jsxs","_objectSpread","xmlns","fill","viewBox","children","clipPath","_jsx","d","stroke","strokeLinecap","strokeLinejoin","strokeWidth","id","MapNodeIcon","_ref","_UIFactory$getNavigat","node","item","ypath","getAttributes","iconType","type","dynamic","icon","UIFactory","getNavigationMapNodeSettings","renderNodeIcon","isTrashNode","path","isLinkToTrashNode","targetPath","Icon","awesome","getIconNameForType","targetPathBroken","title","hammer","format","sorted","treat_as_queue_consumer","GravityIcon","data","QueueConsumerIcon","treat_as_queue_producer","QueueProducerIcon","isPipelineNode","$attributes","NodePipelineIcon","className","SchemaDataType","type_v3","primitiveTypes","useSelector","getPrimitiveTypesMap","dataTypeProps","React","getType","parseV3Type","_unused","DataType","_Fragment","pathEditorRequests","CancelHelper","preparePath","currentPath","YPath","create","toSubpath","stringify","loadSuggestions","customFilter","cluster","parentPath","apiSetup","parameters","attributes","cancellation","saveCancelToken","clusterConfig","getClusterConfigByName","setup","proxy","getClusterProxy","ytApiV3Id","list","YTApiId","pathEditorLoadSuggestions","then","getValue","nodes","initialPath","suggestions","map_","child","prepared","childPath","unipika","decode","sortBy_","prepareSuggestions","filterByCurrentPath","toLowerCase","filter_","hasPartOfPath","startsWith","isShowCurrentChild","getNextSelectedIndex","suggestion","selectedIndex","length","getPrevSelectedIndex","getCompletedPath","icons","document","string_node","int64_node","uint64_node","double_node","boolean_node","map_node","scheduler_pool_tree_map","scheduler_pool","tablet_cell","journal","table","table_dynamic","replicated_table","chaos_replicated_table","replication_log_table","file","topmost_transaction_map","transaction_map","transaction","nested_transaction","link","getBoolean","rootstock","portal_entrance","cell_node","cell_node_map","sys_node","access_control_object_namespace_map","access_control_object_namespace","access_control_object","getCliCommandResultFormat","tag","columnName","isMediaTag","_tag$split","split","_tag$split2","_slicedToArray","extension","concat","getImageResultFormat","getDynamicTableCellPath","rowIndex","_","getState","yqlTypes","getYqlTypes","key","getCurrentRowKey","keyColumns","getKeyColumns","offset","Query","prepareKey","prepareQuery","offsetColumns","columns","limit","getDynamicTableCliCommand","_ref2","cellPath","getStaticTableCellPath","index","getOffsetValue","prettyPrint","YSON_AS_TEXT","getStaticTableCliCommand","getCellPath","dispatch","getPath","getIsDynamic","getCliCommand","_dispatch","loadCellPreview","_ref3","useYqlTypes","isDynamic","output_format","getDefaultRequestOutputFormat","stringLimit","PREVIEW_LIMIT","readDynamicTable","query","cellPreviewCancelHelper","removeAllAndSave","readStaticTable","onCellPreview","_ref4","dataHandler","_ref5","_asyncToGenerator","_regeneratorRuntime","mark","_callee","ytCliDownloadCommand","isIncomplete","loadedData","rows","column","value","typeIndex","flags","_unipika$converters$y","$type","$value","$tag","_rows","_column","hasType","noticeText","wrap","_context","prev","next","isYqlTypesEnabled","onStartLoading","batch","CELL_PREVIEW","REQUEST","openCellPreview","saveCancellation","sent","incomplete","converters","yql","maxStringSize","undefined","maxListSize","treatValAsData","$incomplete","onSuccess","SUCCESS","t0","isCancelled","onError","error","FAILURE","stop","_x","_x2","apply","arguments","TRASH_PATH","attrs","pipeline_format_version","BreadcrumbsItem","isCurrent","onClick","text","e","preventDefault","href","NavigationBreadcrumbs","useDispatch","selectNavigationPath","selectNavigationCluster","handleClusterChangeClick","useCallback","setNodeType","BodyType","Cluster","setCluster","setPath","handleBreadcrumbsClick","newPath","loadNodeByPath","items","useMemo","result","forEach","push","map","Breadcrumbs","Item","BreadcrumbsItemComponent","Button","size","view","FolderTreeIcon","showRoot","fillRule","clipRule","insertTextWhereCursor","mEditor","position","getPosition","edit","range","Range","lineNumber","executeEdits","b","cn","HeaderActions","favorites","selectFavouritePaths","engine","getQueryEngine","getEditor","useMonaco","isFavorite","includes","navigationUrl","makeNavigationLink","handleFavoriteToggle","toggleFavoritePath","handlePathCopy","copyPathToClipboard","handlePastePath","editor","pathString","makePathByQueryEngine","target","ArrowUpRightFromSquareIcon","StarFillIcon","StarIcon","TextIndentIcon","CopyIcon","addI18Keysets","en","ru","NavigationHeader","filter","selectNavigationFilter","showFilter","selectNavigationNodeType","Table","TextInput","placeholder","i18n","onUpdate","setFilter","hasClear","NavigationEmpty","Text","variant","ItemsList","loading","render","DataTableYT","rowClassName","settings","stickyHead","displayIndices","sortable","highlightRows","name","header","ColumnHeader","row","useThemeYT","onRowClick","ClusterList","selectLoading","clusters","selectClustersByFilter","environment","QueryClusterItem","setNavigationCluster","NodeName","ellipsis","role","style","margin","NodeListRow","queryEngine","onFavoriteToggle","onClipboardCopy","onEditorInsert","onNewQuery","onNewWindowOpen","_useToggle","useToggle","_useToggle2","tableMenuOpen","toggleTapleMenuOpen","_useToggle3","_useToggle4","menuOpen","toggleMenuOpen","isSupported","isFolderNode","isTableNode","showActions","handleStop","stopPropagation","unsupported","active","DropdownMenu","open","onOpenToggle","renderSwitcher","action","_toConsumableArray","QueryEngine","YT_QL","YQL","CHYT","SPYT","onSwitcherClick","iconEnd","NodeList","_useState","useState","_useState2","showPrompt","setShowPrompt","newQueryParams","useRef","selectNavigationClusterConfig","selectNodeListByFilter","pageSize","getQueryResultGlobalSettings","dirtyQuery","isQueryDraftEditted","handleNodeClick","loadTableAttributesByPath","favoritePath","handleEditorInsert","abrupt","createTableSelect","url","URL","location","origin","pathname","searchParams","append","toString","getNavigationUrl","handleNewWindowOpen","window","handlePromptConfirm","current","makeNewQueryWithTableSelect","handlePromptCancel","handleNewQuery","_callee2","newEngine","_context2","_x3","_x4","NewQueryPromt","confirm","cancel","visible","Boolean","sort_order","prettyprint","asHTML","required","SchemaTab","schema","PreviewTab","ysonSettings","onShowPreview","prepareColumns","i","useRawStrings","schemaByName","reduce","acc","NavigationTable","activeTab","setActiveTab","selectTableWithFilter","getPageSize","getYsonSettingsDisableDecode","handleInsertTableSelect","SegmentedRadioGroup","defaultValue","options","content","MetaTable","meta","LoadingPlaceholder","Flex","alignItems","justifyContent","Loader","NavigationError","selectNavigationError","PrettyError","message","details","vertical","NavigationBody","Tree","Loading","Error","Navigation","useEffect","initNavigation","block","PageCounter","pageIndex","pageCount","getNameTitle","shortTitle","t","ReadableField","nameContent","titleContent","align","order","onSort","multisortIndex","sortIconSize","_useColumnInfo","allowUnordered","withUndefined","allowedOrderTypes","columnData","find","rumLogError","additional","subColumn","useColumnInfo","changeHandler","nextOrder","calculateNextOrderValue","nextSortOrderValue","currentOrder","multisort","ctrlKey","metaKey","SortIcon","color","SubColumnSelector","x","barsDescendingSvg","addComponentKeysets","menuContext","isMenu","activeIndex","getItemProps","listItemsRef","popupStyle","BreadcrumbsDropdownMenu","disabled","popupPlacement","reference","setReference","floating","setFloating","setActiveIndex","setOpen","context","onOpenChange","elements","listNavigation","enabled","listRef","onNavigate","loop","dismiss","interactions","getReferenceProps","useTranslation","ref","Popup","floatingContext","floatingRef","floatingInteractions","placement","Provider","ListItemView","selected","hovered","selectionStyle","collapsed","onCollapseChange","isContainer","component","Component","componentProps","collapsible","_collapsible","description","draggable","_draggable","startContent","_startContent","endContent","_endContent","nestedLevel","_nestedLevel","containerRef","componentRef","useForkRef","filterDOMProps","Element","some","el","contains","ListItemViewContent","Slot","tabIndex","ArrowToggle","direction","I","Check","domProps","labelable","hrefLang","rel","download","ping","referrerPolicy","__disabled","__current","__onAction","onAction","__index","restProps","linkProps","event","onKeyDown","ENTER","displayName","_BreadcrumbsItem","BreadcrumbsSeparator","separator","endContentRef","visibleItemsCount","setVisibleItemsCount","calculated","setCalculated","handleResize","useResizeObserver","onResize","lastChildren","visibleItems","listItems","Array","from","endElement","pop","containerWidth","offsetWidth","newVisibleItemsCount","calculatedWidth","maxItems","Infinity","rootWidth","shift","lastItem","Math","min","max","recalculate","contents","breadcrumbs","endItems","rootItem","hiddenItems","slice","menuItem","itemComponent","innerProps","lastIndex","breadcrumbsItems","childProps","handleAction","calculating","qa","YqlValue","_React$Component","_classCallCheck","_callSuper","_inherits","_createClass","_this$props","this","inline","formattedValue","getFormattedValue","titleSettings","Object","assign","formatRaw","formatFromYQL","classes","ErrorBoundary","dir","dangerouslySetInnerHTML","__html","yqlValue","defaultProps","folding","Yson","defaultUnipikaSettings","unquote","v","match","exec","ColumnCell","_ref$value","allowRawStrings","setHovered","formatType","Number","escapedValue","_React$useMemo","isIncompleteTagged","isIncompleteValue","valueType","rawValue","allowRawCopy","lower","JSON","isStringType","useRawString","copyTooltip","visibleValue","_React$useState","_React$useState2","isPreviewInProgress","setPreviewInProgress","onMouseEnter","onMouseLeave","Label","theme","Tooltip","ClipboardButton","onCopy","shiftKey","copyToClipboard","finish","UIKitIcon","Eye","sortOrder","isKeyColumn","indexOf","unescapeKeyValue"],"sourceRoot":""}
|