@ytsaurus/ui 1.96.0 → 1.97.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/public/build/assets-manifest.json +25 -25
- package/dist/public/build/css/{3716.f1b13197.chunk.css → 3716.932479b0.chunk.css} +2 -2
- package/dist/public/build/css/3716.932479b0.chunk.css.map +1 -0
- package/dist/public/build/js/4776.b922a445.chunk.js.map +1 -1
- package/dist/public/build/js/{5082.b1a7f7b1.chunk.js → 5082.b475d219.chunk.js} +2 -2
- package/dist/public/build/js/5082.b475d219.chunk.js.map +1 -0
- package/dist/public/build/js/cluster-page-wrapper.b7cb91f7.chunk.js +2 -0
- package/dist/public/build/js/cluster-page-wrapper.b7cb91f7.chunk.js.map +1 -0
- package/dist/public/build/js/dashboard.8850118b.chunk.js +3 -0
- package/dist/public/build/js/dashboard.8850118b.chunk.js.map +1 -0
- package/dist/public/build/js/main.a609b753.js +3 -0
- package/dist/public/build/js/main.a609b753.js.map +1 -0
- package/dist/public/build/js/{navigation.e85f53e0.chunk.js → navigation.7e85a761.chunk.js} +2 -2
- package/dist/public/build/js/navigation.7e85a761.chunk.js.map +1 -0
- package/dist/public/build/js/{runtime.ed973fa5.js → runtime.78bd9bc8.js} +2 -2
- package/dist/public/build/js/{runtime.ed973fa5.js.map → runtime.78bd9bc8.js.map} +1 -1
- package/dist/public/build/js/scheduling.680c5ca7.chunk.js +2 -0
- package/dist/public/build/js/scheduling.680c5ca7.chunk.js.map +1 -0
- package/dist/public/build/js/tablet-errors-by-bundle.95473558.chunk.js +2 -0
- package/dist/public/build/js/tablet-errors-by-bundle.95473558.chunk.js.map +1 -0
- package/dist/public/build/js/{yt-df-dialog.e8489fd1.chunk.js → yt-df-dialog.5aa0b817.chunk.js} +3 -3
- package/dist/public/build/js/yt-df-dialog.5aa0b817.chunk.js.map +1 -0
- package/dist/public/build/manifest.json +20 -20
- package/dist/server/components/requestsSetup.d.ts +1 -1
- package/dist/server/components/requestsSetup.js +5 -2
- package/dist/server/controllers/yt-tablet-errors-api.js +7 -3
- package/dist/shared/tablet-errors-manager.d.ts +1 -0
- package/package.json +2 -2
- package/dist/public/build/css/3716.f1b13197.chunk.css.map +0 -1
- package/dist/public/build/js/5082.b1a7f7b1.chunk.js.map +0 -1
- package/dist/public/build/js/cluster-page-wrapper.605a5ad5.chunk.js +0 -2
- package/dist/public/build/js/cluster-page-wrapper.605a5ad5.chunk.js.map +0 -1
- package/dist/public/build/js/dashboard.2150185c.chunk.js +0 -3
- package/dist/public/build/js/dashboard.2150185c.chunk.js.map +0 -1
- package/dist/public/build/js/main.56182cbb.js +0 -3
- package/dist/public/build/js/main.56182cbb.js.map +0 -1
- package/dist/public/build/js/navigation.e85f53e0.chunk.js.map +0 -1
- package/dist/public/build/js/scheduling.83bb157a.chunk.js +0 -2
- package/dist/public/build/js/scheduling.83bb157a.chunk.js.map +0 -1
- package/dist/public/build/js/tablet-errors-by-bundle.2dba0b10.chunk.js +0 -2
- package/dist/public/build/js/tablet-errors-by-bundle.2dba0b10.chunk.js.map +0 -1
- package/dist/public/build/js/yt-df-dialog.e8489fd1.chunk.js.map +0 -1
- /package/dist/public/build/js/{dashboard.2150185c.chunk.js.LICENSE.txt → dashboard.8850118b.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.56182cbb.js.LICENSE.txt → main.a609b753.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{yt-df-dialog.e8489fd1.chunk.js.LICENSE.txt → yt-df-dialog.5aa0b817.chunk.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"js/4776.b922a445.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/table-mount-config.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/create-table.js","webpack://@ytsaurus/ui/./src/ui/pages/components/OperationShortInfo/OperationShortInfo.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/table-merge-sort-modal.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/replicated-table.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/hooks/useEvent.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/hooks/useLayoutEffect.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/Dom/canUseDom.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/hooks/useState.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/hooks/useMergedState.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/warning.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/util.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/KeyCode.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/context.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Handles/Handle.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Handles/index.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Marks/Mark.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Marks/index.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Steps/Dot.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Steps/index.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Tracks/Track.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Tracks/index.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/hooks/useDrag.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/utils/set.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Slider.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/hooks/useOffset.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/isEqual.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/index.js","webpack://@ytsaurus/ui/./src/ui/components/common/RangeInputPicker/utils.ts","webpack://@ytsaurus/ui/./src/ui/components/common/RangeInputPicker/constants.ts","webpack://@ytsaurus/ui/./src/ui/components/common/RangeInputPicker/RangeInputPicker.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/CreateTableModal/CreateTableTabField/CreateTableTabField.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/table-merge-sort-modal.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/create-table.js","webpack://@ytsaurus/ui/./src/ui/components/ErrorMessage/ErrorMessage.js","webpack://@ytsaurus/ui/./src/ui/containers/PathEditor/PathEditor.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/path-editor/path-editor.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/tablet-errors/tablet-errors-background.ts","webpack://@ytsaurus/ui/./node_modules/rc-util/node_modules/react-is/cjs/react-is.production.min.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/navigation.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/tablet-errors-background.ts","webpack://@ytsaurus/ui/./src/ui/hooks/global-pool-trees.ts","webpack://@ytsaurus/ui/./node_modules/classnames/index.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/index.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/table-mount-config.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/queue/exports.ts","webpack://@ytsaurus/ui/./node_modules/rc-util/node_modules/react-is/index.js"],"sourcesContent":["import isEmpty_ from 'lodash/isEmpty';\n\nimport {createSelector} from 'reselect';\nimport {RootState} from '../../../../store/reducers';\n\nexport const getNavigationTableMountConfig = (state: RootState) =>\n state.navigation.content.tableMountConfig;\n\nconst getTableMountConfigData = (state: RootState) =>\n state.navigation.content.tableMountConfig.data || {};\n\nconst getTableMountConfigError = (state: RootState) =>\n state.navigation.content.tableMountConfig.error;\n\nexport const getTableMountConfigHasData = createSelector(\n [getTableMountConfigData, getTableMountConfigError],\n (data, error) => {\n return !isEmpty_(data) || !isEmpty_(error);\n },\n);\n","import React from 'react';\nimport axios from 'axios';\n\nimport uniq_ from 'lodash/uniq';\n\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {updateView} from '../../../../store/actions/navigation';\n\nimport {CREATE_TABLE_MODAL_DATA_FIELDS} from '../../../../constants/navigation/modals/create-table';\nimport {initialState} from '../../../../store/reducers/navigation/modals/create-table';\nimport {showErrorPopup} from '../../../../utils/utils';\nimport Link from '../../../../components/Link/Link';\nimport {genNavigationUrl} from '../../../../utils/navigation/navigation';\nimport {getCluster} from '../../../selectors/global';\n\nexport function openCreateTableModal(parentDirectory) {\n return (dispatch) => {\n dispatch({\n type: CREATE_TABLE_MODAL_DATA_FIELDS,\n data: {...initialState, showModal: true, parentDirectory},\n });\n };\n}\n\nexport function closeCreateTableModal() {\n return (dispatch) => {\n dispatch({\n type: CREATE_TABLE_MODAL_DATA_FIELDS,\n data: {showModal: false},\n });\n };\n}\n\nconst toaster = new Toaster();\n\nexport function createTable(path, attributes) {\n return (dispatch, getState) => {\n const params = {\n path,\n type: 'table',\n attributes,\n };\n\n const what = attributes.dynamic ? 'Dynamic table' : 'Static table';\n const cluster = getCluster(getState());\n\n return yt.v3\n .create(params)\n .then(() => {\n dispatch(updateView());\n toaster.add({\n name: path,\n timeout: 10000,\n theme: 'success',\n title: 'Table created',\n content: (\n <React.Fragment>\n {what} <Link url={genNavigationUrl({cluster, path})}>{path}</Link>{' '}\n successfully created\n </React.Fragment>\n ),\n });\n })\n .catch((error) => {\n if (!axios.isCancel(error)) {\n dispatch({\n type: CREATE_TABLE_MODAL_DATA_FIELDS,\n data: {error},\n });\n const data = error?.response?.data || error?.response || error;\n const {code, message} = data;\n\n toaster.add({\n name: path,\n timeout: 10000,\n theme: 'danger',\n content: `[code ${code}] ${message}`,\n title: 'Table creation failure',\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(data),\n },\n ],\n });\n return Promise.reject(error);\n }\n });\n };\n}\n\nexport function setCreateTableKeyColumns(keyColumns) {\n return (dispatch) => {\n dispatch({\n type: CREATE_TABLE_MODAL_DATA_FIELDS,\n data: {keyColumns},\n });\n };\n}\n\nexport function setCreateTableColumnsOrder(columnsOrder) {\n return (dispatch) => {\n dispatch({\n type: CREATE_TABLE_MODAL_DATA_FIELDS,\n data: {columnsOrder},\n });\n };\n}\n\nexport function setCreateTableLockSuggestions(allColumnLockValues = []) {\n return {\n type: CREATE_TABLE_MODAL_DATA_FIELDS,\n data: {columnLockSuggestions: uniq_(allColumnLockValues.sort())},\n };\n}\n\nexport function setCreateTableGroupSuggestions(allColumnGroups = []) {\n return {\n type: CREATE_TABLE_MODAL_DATA_FIELDS,\n data: {columnGroupSuggestions: uniq_(allColumnGroups.sort())},\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport moment from 'moment';\nimport {useSelector} from 'react-redux';\n\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {getCluster} from '../../../store/selectors/global';\n\nimport MetaTable from '../../../components/MetaTable/MetaTable';\nimport {showErrorPopup} from '../../../utils/utils';\nimport format from '../../../common/hammer/format';\n\nimport ypath from '../../../common/thor/ypath';\nimport {TYPED_OUTPUT_FORMAT} from '../../../constants';\nimport {ClickableText} from '../../../components/ClickableText/ClickableText';\nimport Link from '../../../components/Link/Link';\n\nimport './OperationShortInfo.scss';\n\nconst block = cn('operation-short-info');\n\ninterface Props {\n id: string;\n type?: string;\n output_attribute_name?: string; // example: '/@spec/output_table_path'\n}\n\nexport function OperationShortInfo(props: Props) {\n const {id, type, output_attribute_name} = props;\n\n const [operation, setOperation] = React.useState();\n\n const finishTimeRaw = ypath.getValue(operation, '/finish_time');\n React.useEffect(() => {\n if (finishTimeRaw) {\n return;\n }\n const timerId = setInterval(() => {\n yt.v3\n .getOperation({\n output_format: TYPED_OUTPUT_FORMAT,\n operation_id: id,\n })\n .then((operation: any) => {\n setOperation(operation);\n });\n }, 3000);\n return () => {\n clearInterval(timerId);\n };\n }, [finishTimeRaw, setOperation]);\n\n const cluster = useSelector(getCluster);\n const output = output_attribute_name\n ? ypath.getValue(operation, output_attribute_name) || '...'\n : '...';\n const error = ypath.getValue(operation, '/result/error');\n const code = ypath.getValue(error, '/code');\n\n const startTime = moment(ypath.getValue(operation, '/start_time'));\n const finishTime = moment(finishTimeRaw);\n const diff = finishTime.diff(startTime);\n\n return (\n <div className={block()}>\n <MetaTable\n items={[\n {\n key: 'Id',\n value: <Link url={`/${cluster}/operations/${id}`}>{id}</Link>,\n },\n {\n key: 'Type',\n value: (\n <span className={block('value')}>\n {ypath.getValue(operation, '/type') || type || '...'}\n </span>\n ),\n },\n ...(!output_attribute_name\n ? []\n : [\n {\n key: 'Output',\n value: <span title={output}>{output}</span>,\n },\n ]),\n {\n key: 'Duration',\n value: format.TimeDuration(diff),\n },\n {\n key: 'Status',\n value: (\n <OperationState state={ypath.getValue(operation, '/state') || '...'} />\n ),\n },\n ...(!code || code === '0'\n ? []\n : [\n {\n key: 'Error',\n value: (\n <ClickableText onClick={() => showErrorPopup(error)}>\n {ypath.getValue(error, '/message')}\n </ClickableText>\n ),\n },\n ]),\n ]}\n />\n </div>\n );\n}\n\nfunction OperationState({state}: {state: string}) {\n return <span className={block('state', {state})}>{state}</span>;\n}\n","import {RootState} from '../../../reducers';\nimport {createSelector} from 'reselect';\nimport {PathAttribute} from '../../../reducers/navigation/modals/tableMergeSortModalSlice';\nexport const getNavigationTableSortPaths = (state: RootState) =>\n state.navigation.modals.tableMergeSortModal.paths;\nexport const getNavigationTableOutputPathAttributes = (state: RootState) =>\n state.navigation.modals.tableMergeSortModal.outputPathAttributes;\nexport const getNavigationTableAttributesValues = createSelector(\n [getNavigationTableOutputPathAttributes],\n (outputPathAttributes) => {\n const result: Record<string, string> = {};\n for (const key in outputPathAttributes) {\n if (Object.prototype.hasOwnProperty.call(outputPathAttributes, key)) {\n result[key] = outputPathAttributes[key as PathAttribute].value;\n }\n }\n return result;\n },\n);\nexport const getNavigationTableSortError = (state: RootState) =>\n state.navigation.modals.tableMergeSortModal.error;\nexport const getNavigationTableSortVisible = (state: RootState) =>\n state.navigation.modals.tableMergeSortModal.sortVisible;\nexport const getNavigationTableMergeVisible = (state: RootState) =>\n state.navigation.modals.tableMergeSortModal.mergeVisible;\nexport const getNavigationTableSortSuggestColumns = (state: RootState) =>\n state.navigation.modals.tableMergeSortModal.suggestColumns;\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {getMetrics} from '../../../../common/utils/metrics';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../../../common/hammer';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {TYPED_OUTPUT_FORMAT} from '../../../../constants/index';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {YTApiId, ytApiV3, ytApiV3Id} from '../../../../rum/rum-wrap-api';\n\nimport {\n LOAD_REPLICAS_CANCELLED,\n LOAD_REPLICAS_FAILURE,\n LOAD_REPLICAS_REQUEST,\n LOAD_REPLICAS_SUCCESS,\n} from '../../../../constants/navigation/content/replicated-table';\nimport {updateView} from '..';\n\nimport sortBy_ from 'lodash/sortBy';\n\nconst requests = new CancelHelper();\n\nexport function loadReplicas() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: LOAD_REPLICAS_REQUEST});\n requests.removeAllRequests();\n\n return ytApiV3Id\n .get(YTApiId.navigationRTReplicas, {\n parameters: prepareRequest('/@replicas', {\n path,\n transaction,\n output_format: TYPED_OUTPUT_FORMAT,\n }),\n cancellation: requests.saveCancelToken,\n })\n .then((data) => {\n const replicas = hammer.utils.mapToYSONList(data);\n dispatch({\n type: LOAD_REPLICAS_SUCCESS,\n data: {\n replicas: sortBy_(replicas, '$value'),\n },\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: LOAD_REPLICAS_CANCELLED});\n } else {\n dispatch({\n type: LOAD_REPLICAS_FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function performReplicaAction({mode, state, auto_replica_tracker, replica}) {\n return (dispatch) => {\n const prevMode = ypath.getValue(replica, '/@mode');\n const prevState = ypath.getValue(replica, '/@state');\n\n const prevAutoReplicaTracker = ypath.getValue(replica, '/@enable_replicated_table_tracker');\n\n const actionName = [\n mode !== prevMode && 'mode',\n state !== prevState && 'state',\n prevAutoReplicaTracker !== auto_replica_tracker && 'enable_replicated_table_tracker',\n ]\n .filter(Boolean)\n .join('_');\n if (!actionName) {\n return Promise.resolve();\n }\n\n getMetrics().countEvent('navigation_replicated_table_replica_action', actionName);\n\n const replicaId = ypath.getValue(replica, '');\n const parameters = {\n replica_id: replicaId,\n mode,\n enabled: state === 'enabled',\n enable_replicated_table_tracker: auto_replica_tracker === 'enabled',\n };\n\n return ytApiV3.alterTableReplica(parameters).then(() => dispatch(loadReplicas()));\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: LOAD_REPLICAS_CANCELLED});\n };\n}\n\nexport function updateEnableReplicatedTableTracker(path, value) {\n return (dispatch) => {\n return yt.v3\n .set({path: path + '/@replicated_table_options/enable_replicated_table_tracker'}, value)\n .then(() => {\n dispatch(updateView());\n });\n };\n}\n","import * as React from 'react';\nexport default function useEvent(callback) {\n var fnRef = React.useRef();\n fnRef.current = callback;\n var memoFn = React.useCallback(function () {\n var _fnRef$current;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));\n }, []);\n return memoFn;\n}","import * as React from 'react';\nimport canUseDom from \"../Dom/canUseDom\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nvar useInternalLayoutEffect = process.env.NODE_ENV !== 'test' && canUseDom() ? React.useLayoutEffect : React.useEffect;\nvar useLayoutEffect = function useLayoutEffect(callback, deps) {\n var firstMountRef = React.useRef(true);\n useInternalLayoutEffect(function () {\n return callback(firstMountRef.current);\n }, deps);\n\n // We tell react that first mount has passed\n useInternalLayoutEffect(function () {\n firstMountRef.current = false;\n return function () {\n firstMountRef.current = true;\n };\n }, []);\n};\nexport var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {\n useLayoutEffect(function (firstMount) {\n if (!firstMount) {\n return callback();\n }\n }, deps);\n};\nexport default useLayoutEffect;","export default function canUseDom() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n/**\n * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.\n * We do not make this auto is to avoid real memory leak.\n * Developer should confirm it's safe to ignore themselves.\n */\nexport default function useSafeState(defaultValue) {\n var destroyRef = React.useRef(false);\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n value = _React$useState2[0],\n setValue = _React$useState2[1];\n React.useEffect(function () {\n destroyRef.current = false;\n return function () {\n destroyRef.current = true;\n };\n }, []);\n function safeSetState(updater, ignoreDestroy) {\n if (ignoreDestroy && destroyRef.current) {\n return;\n }\n setValue(updater);\n }\n return [value, safeSetState];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"./useEvent\";\nimport { useLayoutUpdateEffect } from \"./useLayoutEffect\";\nimport useState from \"./useState\";\n/** We only think `undefined` is empty */\nfunction hasValue(value) {\n return value !== undefined;\n}\n\n/**\n * Similar to `useState` but will use props value if provided.\n * Note that internal use rc-util `useState` hook.\n */\nexport default function useMergedState(defaultStateValue, option) {\n var _ref = option || {},\n defaultValue = _ref.defaultValue,\n value = _ref.value,\n onChange = _ref.onChange,\n postState = _ref.postState;\n\n // ======================= Init =======================\n var _useState = useState(function () {\n if (hasValue(value)) {\n return value;\n } else if (hasValue(defaultValue)) {\n return typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n } else {\n return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;\n }\n }),\n _useState2 = _slicedToArray(_useState, 2),\n innerValue = _useState2[0],\n setInnerValue = _useState2[1];\n var mergedValue = value !== undefined ? value : innerValue;\n var postMergedValue = postState ? postState(mergedValue) : mergedValue;\n\n // ====================== Change ======================\n var onChangeFn = useEvent(onChange);\n var _useState3 = useState([mergedValue]),\n _useState4 = _slicedToArray(_useState3, 2),\n prevValue = _useState4[0],\n setPrevValue = _useState4[1];\n useLayoutUpdateEffect(function () {\n var prev = prevValue[0];\n if (innerValue !== prev) {\n onChangeFn(innerValue, prev);\n }\n }, [prevValue]);\n\n // Sync value back to `undefined` when it from control to un-control\n useLayoutUpdateEffect(function () {\n if (!hasValue(value)) {\n setInnerValue(value);\n }\n }, [value]);\n\n // ====================== Update ======================\n var triggerChange = useEvent(function (updater, ignoreDestroy) {\n setInnerValue(updater, ignoreDestroy);\n setPrevValue([mergedValue], ignoreDestroy);\n });\n return [postMergedValue, triggerChange];\n}","/* eslint-disable no-console */\nvar warned = {};\nvar preWarningFns = [];\n\n/**\n * Pre warning enable you to parse content before console.error.\n * Modify to null will prevent warning.\n */\nexport var preMessage = function preMessage(fn) {\n preWarningFns.push(fn);\n};\nexport function warning(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'warning');\n }, message);\n if (finalMessage) {\n console.error(\"Warning: \".concat(finalMessage));\n }\n }\n}\nexport function note(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'note');\n }, message);\n if (finalMessage) {\n console.warn(\"Note: \".concat(finalMessage));\n }\n }\n}\nexport function resetWarned() {\n warned = {};\n}\nexport function call(method, valid, message) {\n if (!valid && !warned[message]) {\n method(false, message);\n warned[message] = true;\n }\n}\nexport function warningOnce(valid, message) {\n call(warning, valid, message);\n}\nexport function noteOnce(valid, message) {\n call(note, valid, message);\n}\nwarningOnce.preMessage = preMessage;\nwarningOnce.resetWarned = resetWarned;\nwarningOnce.noteOnce = noteOnce;\nexport default warningOnce;\n/* eslint-enable */","export function getOffset(value, min, max) {\n return (value - min) / (max - min);\n}\nexport function getDirectionStyle(direction, value, min, max) {\n var offset = getOffset(value, min, max);\n var positionStyle = {};\n switch (direction) {\n case 'rtl':\n positionStyle.right = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateX(50%)';\n break;\n case 'btt':\n positionStyle.bottom = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateY(50%)';\n break;\n case 'ttb':\n positionStyle.top = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateY(-50%)';\n break;\n default:\n positionStyle.left = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateX(-50%)';\n break;\n }\n return positionStyle;\n}\n\n/** Return index value if is list or return value directly */\nexport function getIndex(value, index) {\n return Array.isArray(value) ? value[index] : value;\n}","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nvar KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n /**\n * TAB\n */\n TAB: 9,\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12,\n // NUMLOCK on FF/Safari Mac\n /**\n * ENTER\n */\n ENTER: 13,\n /**\n * SHIFT\n */\n SHIFT: 16,\n /**\n * CTRL\n */\n CTRL: 17,\n /**\n * ALT\n */\n ALT: 18,\n /**\n * PAUSE\n */\n PAUSE: 19,\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n /**\n * ESC\n */\n ESC: 27,\n /**\n * SPACE\n */\n SPACE: 32,\n /**\n * PAGE_UP\n */\n PAGE_UP: 33,\n // also NUM_NORTH_EAST\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n // also NUM_SOUTH_EAST\n /**\n * END\n */\n END: 35,\n // also NUM_SOUTH_WEST\n /**\n * HOME\n */\n HOME: 36,\n // also NUM_NORTH_WEST\n /**\n * LEFT\n */\n LEFT: 37,\n // also NUM_WEST\n /**\n * UP\n */\n UP: 38,\n // also NUM_NORTH\n /**\n * RIGHT\n */\n RIGHT: 39,\n // also NUM_EAST\n /**\n * DOWN\n */\n DOWN: 40,\n // also NUM_SOUTH\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n /**\n * INSERT\n */\n INSERT: 45,\n // also NUM_INSERT\n /**\n * DELETE\n */\n DELETE: 46,\n // also NUM_DELETE\n /**\n * ZERO\n */\n ZERO: 48,\n /**\n * ONE\n */\n ONE: 49,\n /**\n * TWO\n */\n TWO: 50,\n /**\n * THREE\n */\n THREE: 51,\n /**\n * FOUR\n */\n FOUR: 52,\n /**\n * FIVE\n */\n FIVE: 53,\n /**\n * SIX\n */\n SIX: 54,\n /**\n * SEVEN\n */\n SEVEN: 55,\n /**\n * EIGHT\n */\n EIGHT: 56,\n /**\n * NINE\n */\n NINE: 57,\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63,\n // needs localization\n /**\n * A\n */\n A: 65,\n /**\n * B\n */\n B: 66,\n /**\n * C\n */\n C: 67,\n /**\n * D\n */\n D: 68,\n /**\n * E\n */\n E: 69,\n /**\n * F\n */\n F: 70,\n /**\n * G\n */\n G: 71,\n /**\n * H\n */\n H: 72,\n /**\n * I\n */\n I: 73,\n /**\n * J\n */\n J: 74,\n /**\n * K\n */\n K: 75,\n /**\n * L\n */\n L: 76,\n /**\n * M\n */\n M: 77,\n /**\n * N\n */\n N: 78,\n /**\n * O\n */\n O: 79,\n /**\n * P\n */\n P: 80,\n /**\n * Q\n */\n Q: 81,\n /**\n * R\n */\n R: 82,\n /**\n * S\n */\n S: 83,\n /**\n * T\n */\n T: 84,\n /**\n * U\n */\n U: 85,\n /**\n * V\n */\n V: 86,\n /**\n * W\n */\n W: 87,\n /**\n * X\n */\n X: 88,\n /**\n * Y\n */\n Y: 89,\n /**\n * Z\n */\n Z: 90,\n /**\n * META\n */\n META: 91,\n // WIN_KEY_LEFT\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n /**\n * F1\n */\n F1: 112,\n /**\n * F2\n */\n F2: 113,\n /**\n * F3\n */\n F3: 114,\n /**\n * F4\n */\n F4: 115,\n /**\n * F5\n */\n F5: 116,\n /**\n * F6\n */\n F6: 117,\n /**\n * F7\n */\n F7: 118,\n /**\n * F8\n */\n F8: 119,\n /**\n * F9\n */\n F9: 120,\n /**\n * F10\n */\n F10: 121,\n /**\n * F11\n */\n F11: 122,\n /**\n * F12\n */\n F12: 123,\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n /**\n * SEMICOLON\n */\n SEMICOLON: 186,\n // needs localization\n /**\n * DASH\n */\n DASH: 189,\n // needs localization\n /**\n * EQUALS\n */\n EQUALS: 187,\n // needs localization\n /**\n * COMMA\n */\n COMMA: 188,\n // needs localization\n /**\n * PERIOD\n */\n PERIOD: 190,\n // needs localization\n /**\n * SLASH\n */\n SLASH: 191,\n // needs localization\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n // needs localization\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n // needs localization\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n // needs localization\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n // needs localization\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n // needs localization\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n // Firefox (Gecko) fires this for the meta key instead of 91\n /**\n * WIN_IME\n */\n WIN_IME: 229,\n // ======================== Function ========================\n /**\n * whether text and modified key is entered at the same time.\n */\n isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n var keyCode = e.keyCode;\n if (e.altKey && !e.ctrlKey || e.metaKey ||\n // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n }\n\n // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n default:\n return true;\n }\n },\n /**\n * whether character is entered.\n */\n isCharacterKey: function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n }\n\n // Safari sends zero key code for non-latin characters.\n if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n default:\n return false;\n }\n }\n};\nexport default KeyCode;","import * as React from 'react';\nvar SliderContext = /*#__PURE__*/React.createContext({\n min: 0,\n max: 0,\n direction: 'ltr',\n step: 1,\n includedStart: 0,\n includedEnd: 0,\n tabIndex: 0,\n keyboard: true,\n styles: {},\n classNames: {}\n});\nexport default SliderContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"value\", \"valueIndex\", \"onStartMove\", \"style\", \"render\", \"dragging\", \"onOffsetChange\", \"onChangeComplete\", \"onFocus\", \"onMouseEnter\"];\nimport cls from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getDirectionStyle, getIndex } from \"../util\";\nvar Handle = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n value = props.value,\n valueIndex = props.valueIndex,\n onStartMove = props.onStartMove,\n style = props.style,\n render = props.render,\n dragging = props.dragging,\n onOffsetChange = props.onOffsetChange,\n onChangeComplete = props.onChangeComplete,\n onFocus = props.onFocus,\n onMouseEnter = props.onMouseEnter,\n restProps = _objectWithoutProperties(props, _excluded);\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n disabled = _React$useContext.disabled,\n keyboard = _React$useContext.keyboard,\n range = _React$useContext.range,\n tabIndex = _React$useContext.tabIndex,\n ariaLabelForHandle = _React$useContext.ariaLabelForHandle,\n ariaLabelledByForHandle = _React$useContext.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = _React$useContext.ariaValueTextFormatterForHandle,\n styles = _React$useContext.styles,\n classNames = _React$useContext.classNames;\n var handlePrefixCls = \"\".concat(prefixCls, \"-handle\");\n\n // ============================ Events ============================\n var onInternalStartMove = function onInternalStartMove(e) {\n if (!disabled) {\n onStartMove(e, valueIndex);\n }\n };\n var onInternalFocus = function onInternalFocus(e) {\n onFocus === null || onFocus === void 0 || onFocus(e, valueIndex);\n };\n var onInternalMouseEnter = function onInternalMouseEnter(e) {\n onMouseEnter(e, valueIndex);\n };\n\n // =========================== Keyboard ===========================\n var onKeyDown = function onKeyDown(e) {\n if (!disabled && keyboard) {\n var offset = null;\n\n // Change the value\n switch (e.which || e.keyCode) {\n case KeyCode.LEFT:\n offset = direction === 'ltr' || direction === 'btt' ? -1 : 1;\n break;\n case KeyCode.RIGHT:\n offset = direction === 'ltr' || direction === 'btt' ? 1 : -1;\n break;\n\n // Up is plus\n case KeyCode.UP:\n offset = direction !== 'ttb' ? 1 : -1;\n break;\n\n // Down is minus\n case KeyCode.DOWN:\n offset = direction !== 'ttb' ? -1 : 1;\n break;\n case KeyCode.HOME:\n offset = 'min';\n break;\n case KeyCode.END:\n offset = 'max';\n break;\n case KeyCode.PAGE_UP:\n offset = 2;\n break;\n case KeyCode.PAGE_DOWN:\n offset = -2;\n break;\n }\n if (offset !== null) {\n e.preventDefault();\n onOffsetChange(offset, valueIndex);\n }\n }\n };\n var handleKeyUp = function handleKeyUp(e) {\n switch (e.which || e.keyCode) {\n case KeyCode.LEFT:\n case KeyCode.RIGHT:\n case KeyCode.UP:\n case KeyCode.DOWN:\n case KeyCode.HOME:\n case KeyCode.END:\n case KeyCode.PAGE_UP:\n case KeyCode.PAGE_DOWN:\n onChangeComplete === null || onChangeComplete === void 0 || onChangeComplete();\n break;\n }\n };\n\n // ============================ Offset ============================\n var positionStyle = getDirectionStyle(direction, value, min, max);\n\n // ============================ Render ============================\n var divProps = {};\n if (valueIndex !== null) {\n var _getIndex;\n divProps = {\n tabIndex: disabled ? null : getIndex(tabIndex, valueIndex),\n role: 'slider',\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': value,\n 'aria-disabled': disabled,\n 'aria-label': getIndex(ariaLabelForHandle, valueIndex),\n 'aria-labelledby': getIndex(ariaLabelledByForHandle, valueIndex),\n 'aria-valuetext': (_getIndex = getIndex(ariaValueTextFormatterForHandle, valueIndex)) === null || _getIndex === void 0 ? void 0 : _getIndex(value),\n 'aria-orientation': direction === 'ltr' || direction === 'rtl' ? 'horizontal' : 'vertical',\n onMouseDown: onInternalStartMove,\n onTouchStart: onInternalStartMove,\n onFocus: onInternalFocus,\n onMouseEnter: onInternalMouseEnter,\n onKeyDown: onKeyDown,\n onKeyUp: handleKeyUp\n };\n }\n var handleNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n className: cls(handlePrefixCls, _defineProperty(_defineProperty({}, \"\".concat(handlePrefixCls, \"-\").concat(valueIndex + 1), valueIndex !== null && range), \"\".concat(handlePrefixCls, \"-dragging\"), dragging), classNames.handle),\n style: _objectSpread(_objectSpread(_objectSpread({}, positionStyle), style), styles.handle)\n }, divProps, restProps));\n\n // Customize\n if (render) {\n handleNode = render(handleNode, {\n index: valueIndex,\n prefixCls: prefixCls,\n value: value,\n dragging: dragging\n });\n }\n return handleNode;\n});\nif (process.env.NODE_ENV !== 'production') {\n Handle.displayName = 'Handle';\n}\nexport default Handle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"style\", \"onStartMove\", \"onOffsetChange\", \"values\", \"handleRender\", \"activeHandleRender\", \"draggingIndex\", \"onFocus\"];\nimport * as React from 'react';\nimport { getIndex } from \"../util\";\nimport Handle from \"./Handle\";\nvar Handles = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n style = props.style,\n onStartMove = props.onStartMove,\n onOffsetChange = props.onOffsetChange,\n values = props.values,\n handleRender = props.handleRender,\n activeHandleRender = props.activeHandleRender,\n draggingIndex = props.draggingIndex,\n onFocus = props.onFocus,\n restProps = _objectWithoutProperties(props, _excluded);\n var handlesRef = React.useRef({});\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus(index) {\n var _handlesRef$current$i;\n (_handlesRef$current$i = handlesRef.current[index]) === null || _handlesRef$current$i === void 0 || _handlesRef$current$i.focus();\n }\n };\n });\n\n // =========================== Active ===========================\n var _React$useState = React.useState(-1),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activeIndex = _React$useState2[0],\n setActiveIndex = _React$useState2[1];\n var onHandleFocus = function onHandleFocus(e, index) {\n setActiveIndex(index);\n onFocus === null || onFocus === void 0 || onFocus(e);\n };\n var onHandleMouseEnter = function onHandleMouseEnter(e, index) {\n setActiveIndex(index);\n };\n\n // =========================== Render ===========================\n // Handle Props\n var handleProps = _objectSpread({\n prefixCls: prefixCls,\n onStartMove: onStartMove,\n onOffsetChange: onOffsetChange,\n render: handleRender,\n onFocus: onHandleFocus,\n onMouseEnter: onHandleMouseEnter\n }, restProps);\n return /*#__PURE__*/React.createElement(React.Fragment, null, values.map(function (value, index) {\n return /*#__PURE__*/React.createElement(Handle, _extends({\n ref: function ref(node) {\n if (!node) {\n delete handlesRef.current[index];\n } else {\n handlesRef.current[index] = node;\n }\n },\n dragging: draggingIndex === index,\n style: getIndex(style, index),\n key: index,\n value: value,\n valueIndex: index\n }, handleProps));\n }), activeHandleRender && /*#__PURE__*/React.createElement(Handle, _extends({\n key: \"a11y\"\n }, handleProps, {\n value: values[activeIndex],\n valueIndex: null,\n dragging: draggingIndex !== -1,\n render: activeHandleRender,\n style: {\n pointerEvents: 'none'\n },\n tabIndex: null,\n \"aria-hidden\": true\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Handles.displayName = 'Handles';\n}\nexport default Handles;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getDirectionStyle } from \"../util\";\nvar Mark = function Mark(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n children = props.children,\n value = props.value,\n _onClick = props.onClick;\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n includedStart = _React$useContext.includedStart,\n includedEnd = _React$useContext.includedEnd,\n included = _React$useContext.included;\n var textCls = \"\".concat(prefixCls, \"-text\");\n\n // ============================ Offset ============================\n var positionStyle = getDirectionStyle(direction, value, min, max);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(textCls, _defineProperty({}, \"\".concat(textCls, \"-active\"), included && includedStart <= value && value <= includedEnd)),\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: function onMouseDown(e) {\n e.stopPropagation();\n },\n onClick: function onClick() {\n _onClick(value);\n }\n }, children);\n};\nexport default Mark;","import * as React from 'react';\nimport Mark from \"./Mark\";\nvar Marks = function Marks(props) {\n var prefixCls = props.prefixCls,\n marks = props.marks,\n onClick = props.onClick;\n var markPrefixCls = \"\".concat(prefixCls, \"-mark\");\n\n // Not render mark if empty\n if (!marks.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: markPrefixCls\n }, marks.map(function (_ref) {\n var value = _ref.value,\n style = _ref.style,\n label = _ref.label;\n return /*#__PURE__*/React.createElement(Mark, {\n key: value,\n prefixCls: markPrefixCls,\n style: style,\n value: value,\n onClick: onClick\n }, label);\n }));\n};\nexport default Marks;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getDirectionStyle } from \"../util\";\nvar Dot = function Dot(props) {\n var prefixCls = props.prefixCls,\n value = props.value,\n style = props.style,\n activeStyle = props.activeStyle;\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n included = _React$useContext.included,\n includedStart = _React$useContext.includedStart,\n includedEnd = _React$useContext.includedEnd;\n var dotClassName = \"\".concat(prefixCls, \"-dot\");\n var active = included && includedStart <= value && value <= includedEnd;\n\n // ============================ Offset ============================\n var mergedStyle = _objectSpread(_objectSpread({}, getDirectionStyle(direction, value, min, max)), typeof style === 'function' ? style(value) : style);\n if (active) {\n mergedStyle = _objectSpread(_objectSpread({}, mergedStyle), typeof activeStyle === 'function' ? activeStyle(value) : activeStyle);\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(dotClassName, _defineProperty({}, \"\".concat(dotClassName, \"-active\"), active)),\n style: mergedStyle\n });\n};\nexport default Dot;","import * as React from 'react';\nimport SliderContext from \"../context\";\nimport Dot from \"./Dot\";\nvar Steps = function Steps(props) {\n var prefixCls = props.prefixCls,\n marks = props.marks,\n dots = props.dots,\n style = props.style,\n activeStyle = props.activeStyle;\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n step = _React$useContext.step;\n var stepDots = React.useMemo(function () {\n var dotSet = new Set();\n\n // Add marks\n marks.forEach(function (mark) {\n dotSet.add(mark.value);\n });\n\n // Fill dots\n if (dots && step !== null) {\n var current = min;\n while (current <= max) {\n dotSet.add(current);\n current += step;\n }\n }\n return Array.from(dotSet);\n }, [min, max, step, dots, marks]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-step\")\n }, stepDots.map(function (dotValue) {\n return /*#__PURE__*/React.createElement(Dot, {\n prefixCls: prefixCls,\n key: dotValue,\n value: dotValue,\n style: style,\n activeStyle: activeStyle\n });\n }));\n};\nexport default Steps;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport cls from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getOffset } from \"../util\";\nvar Track = function Track(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n start = props.start,\n end = props.end,\n index = props.index,\n onStartMove = props.onStartMove,\n replaceCls = props.replaceCls;\n var _React$useContext = React.useContext(SliderContext),\n direction = _React$useContext.direction,\n min = _React$useContext.min,\n max = _React$useContext.max,\n disabled = _React$useContext.disabled,\n range = _React$useContext.range,\n classNames = _React$useContext.classNames;\n var trackPrefixCls = \"\".concat(prefixCls, \"-track\");\n var offsetStart = getOffset(start, min, max);\n var offsetEnd = getOffset(end, min, max);\n\n // ============================ Events ============================\n var onInternalStartMove = function onInternalStartMove(e) {\n if (!disabled && onStartMove) {\n onStartMove(e, -1);\n }\n };\n\n // ============================ Render ============================\n var positionStyle = {};\n switch (direction) {\n case 'rtl':\n positionStyle.right = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n case 'btt':\n positionStyle.bottom = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n case 'ttb':\n positionStyle.top = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n default:\n positionStyle.left = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n }\n var className = replaceCls || cls(trackPrefixCls, _defineProperty(_defineProperty({}, \"\".concat(trackPrefixCls, \"-\").concat(index + 1), index !== null && range), \"\".concat(prefixCls, \"-track-draggable\"), onStartMove), classNames.track);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: onInternalStartMove,\n onTouchStart: onInternalStartMove\n });\n};\nexport default Track;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport cls from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getIndex } from \"../util\";\nimport Track from \"./Track\";\nvar Tracks = function Tracks(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n values = props.values,\n startPoint = props.startPoint,\n onStartMove = props.onStartMove;\n var _React$useContext = React.useContext(SliderContext),\n included = _React$useContext.included,\n range = _React$useContext.range,\n min = _React$useContext.min,\n styles = _React$useContext.styles,\n classNames = _React$useContext.classNames;\n\n // =========================== List ===========================\n var trackList = React.useMemo(function () {\n if (!range) {\n // null value do not have track\n if (values.length === 0) {\n return [];\n }\n var startValue = startPoint !== null && startPoint !== void 0 ? startPoint : min;\n var endValue = values[0];\n return [{\n start: Math.min(startValue, endValue),\n end: Math.max(startValue, endValue)\n }];\n }\n\n // Multiple\n var list = [];\n for (var i = 0; i < values.length - 1; i += 1) {\n list.push({\n start: values[i],\n end: values[i + 1]\n });\n }\n return list;\n }, [values, range, startPoint, min]);\n if (!included) {\n return null;\n }\n\n // ========================== Render ==========================\n var tracksNode = classNames.tracks || styles.tracks ? /*#__PURE__*/React.createElement(Track, {\n index: null,\n prefixCls: prefixCls,\n start: trackList[0].start,\n end: trackList[trackList.length - 1].end,\n replaceCls: cls(classNames.tracks, \"\".concat(prefixCls, \"-tracks\")),\n style: styles.tracks\n }) : null;\n return /*#__PURE__*/React.createElement(React.Fragment, null, tracksNode, trackList.map(function (_ref, index) {\n var start = _ref.start,\n end = _ref.end;\n return /*#__PURE__*/React.createElement(Track, {\n index: index,\n prefixCls: prefixCls,\n style: _objectSpread(_objectSpread({}, getIndex(style, index)), styles.track),\n start: start,\n end: end,\n key: index,\n onStartMove: onStartMove\n });\n }));\n};\nexport default Tracks;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEvent } from 'rc-util';\nimport * as React from 'react';\nfunction getPosition(e) {\n var obj = 'touches' in e ? e.touches[0] : e;\n return {\n pageX: obj.pageX,\n pageY: obj.pageY\n };\n}\nfunction useDrag(containerRef, direction, rawValues, min, max, formatValue, triggerChange, finishChange, offsetValues) {\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n draggingValue = _React$useState2[0],\n setDraggingValue = _React$useState2[1];\n var _React$useState3 = React.useState(-1),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n draggingIndex = _React$useState4[0],\n setDraggingIndex = _React$useState4[1];\n var _React$useState5 = React.useState(rawValues),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n cacheValues = _React$useState6[0],\n setCacheValues = _React$useState6[1];\n var _React$useState7 = React.useState(rawValues),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n originValues = _React$useState8[0],\n setOriginValues = _React$useState8[1];\n var mouseMoveEventRef = React.useRef(null);\n var mouseUpEventRef = React.useRef(null);\n React.useLayoutEffect(function () {\n if (draggingIndex === -1) {\n setCacheValues(rawValues);\n }\n }, [rawValues, draggingIndex]);\n\n // Clean up event\n React.useEffect(function () {\n return function () {\n document.removeEventListener('mousemove', mouseMoveEventRef.current);\n document.removeEventListener('mouseup', mouseUpEventRef.current);\n document.removeEventListener('touchmove', mouseMoveEventRef.current);\n document.removeEventListener('touchend', mouseUpEventRef.current);\n };\n }, []);\n var flushValues = function flushValues(nextValues, nextValue) {\n // Perf: Only update state when value changed\n if (cacheValues.some(function (val, i) {\n return val !== nextValues[i];\n })) {\n if (nextValue !== undefined) {\n setDraggingValue(nextValue);\n }\n setCacheValues(nextValues);\n triggerChange(nextValues);\n }\n };\n var updateCacheValue = useEvent(function (valueIndex, offsetPercent) {\n // Basic point offset\n\n if (valueIndex === -1) {\n // >>>> Dragging on the track\n var startValue = originValues[0];\n var endValue = originValues[originValues.length - 1];\n var maxStartOffset = min - startValue;\n var maxEndOffset = max - endValue;\n\n // Get valid offset\n var offset = offsetPercent * (max - min);\n offset = Math.max(offset, maxStartOffset);\n offset = Math.min(offset, maxEndOffset);\n\n // Use first value to revert back of valid offset (like steps marks)\n var formatStartValue = formatValue(startValue + offset);\n offset = formatStartValue - startValue;\n var cloneCacheValues = originValues.map(function (val) {\n return val + offset;\n });\n flushValues(cloneCacheValues);\n } else {\n // >>>> Dragging on the handle\n var offsetDist = (max - min) * offsetPercent;\n\n // Always start with the valueIndex origin value\n var cloneValues = _toConsumableArray(cacheValues);\n cloneValues[valueIndex] = originValues[valueIndex];\n var next = offsetValues(cloneValues, offsetDist, valueIndex, 'dist');\n flushValues(next.values, next.value);\n }\n });\n var onStartMove = function onStartMove(e, valueIndex, startValues) {\n e.stopPropagation();\n\n // 如果是点击 track 触发的,需要传入变化后的初始值,而不能直接用 rawValues\n var initialValues = startValues || rawValues;\n var originValue = initialValues[valueIndex];\n setDraggingIndex(valueIndex);\n setDraggingValue(originValue);\n setOriginValues(initialValues);\n var _getPosition = getPosition(e),\n startX = _getPosition.pageX,\n startY = _getPosition.pageY;\n\n // Moving\n var onMouseMove = function onMouseMove(event) {\n event.preventDefault();\n var _getPosition2 = getPosition(event),\n moveX = _getPosition2.pageX,\n moveY = _getPosition2.pageY;\n var offsetX = moveX - startX;\n var offsetY = moveY - startY;\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n width = _containerRef$current.width,\n height = _containerRef$current.height;\n var offSetPercent;\n switch (direction) {\n case 'btt':\n offSetPercent = -offsetY / height;\n break;\n case 'ttb':\n offSetPercent = offsetY / height;\n break;\n case 'rtl':\n offSetPercent = -offsetX / width;\n break;\n default:\n offSetPercent = offsetX / width;\n }\n updateCacheValue(valueIndex, offSetPercent);\n };\n\n // End\n var onMouseUp = function onMouseUp(event) {\n event.preventDefault();\n document.removeEventListener('mouseup', onMouseUp);\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('touchend', onMouseUp);\n document.removeEventListener('touchmove', onMouseMove);\n mouseMoveEventRef.current = null;\n mouseUpEventRef.current = null;\n setDraggingIndex(-1);\n finishChange();\n };\n document.addEventListener('mouseup', onMouseUp);\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('touchend', onMouseUp);\n document.addEventListener('touchmove', onMouseMove);\n mouseMoveEventRef.current = onMouseMove;\n mouseUpEventRef.current = onMouseUp;\n };\n\n // Only return cache value when it mapping with rawValues\n var returnValues = React.useMemo(function () {\n var sourceValues = _toConsumableArray(rawValues).sort(function (a, b) {\n return a - b;\n });\n var targetValues = _toConsumableArray(cacheValues).sort(function (a, b) {\n return a - b;\n });\n return sourceValues.every(function (val, index) {\n return val === targetValues[index];\n }) ? cacheValues : rawValues;\n }, [rawValues, cacheValues]);\n return [draggingIndex, draggingValue, returnValues, onStartMove];\n}\nexport default useDrag;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport get from \"./get\";\nfunction internalSet(entity, paths, value, removeIfUndefined) {\n if (!paths.length) {\n return value;\n }\n var _paths = _toArray(paths),\n path = _paths[0],\n restPath = _paths.slice(1);\n var clone;\n if (!entity && typeof path === 'number') {\n clone = [];\n } else if (Array.isArray(entity)) {\n clone = _toConsumableArray(entity);\n } else {\n clone = _objectSpread({}, entity);\n }\n\n // Delete prop if `removeIfUndefined` and value is undefined\n if (removeIfUndefined && value === undefined && restPath.length === 1) {\n delete clone[path][restPath[0]];\n } else {\n clone[path] = internalSet(clone[path], restPath, value, removeIfUndefined);\n }\n return clone;\n}\nexport default function set(entity, paths, value) {\n var removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n // Do nothing if `removeIfUndefined` and parent object not exist\n if (paths.length && removeIfUndefined && value === undefined && !get(entity, paths.slice(0, -1))) {\n return entity;\n }\n return internalSet(entity, paths, value, removeIfUndefined);\n}\nfunction isObject(obj) {\n return _typeof(obj) === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;\n}\nfunction createEmpty(source) {\n return Array.isArray(source) ? [] : {};\n}\nvar keys = typeof Reflect === 'undefined' ? Object.keys : Reflect.ownKeys;\n\n/**\n * Merge objects which will create\n */\nexport function merge() {\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n var clone = createEmpty(sources[0]);\n sources.forEach(function (src) {\n function internalMerge(path, parentLoopSet) {\n var loopSet = new Set(parentLoopSet);\n var value = get(src, path);\n var isArr = Array.isArray(value);\n if (isArr || isObject(value)) {\n // Only add not loop obj\n if (!loopSet.has(value)) {\n loopSet.add(value);\n var originValue = get(clone, path);\n if (isArr) {\n // Array will always be override\n clone = set(clone, path, []);\n } else if (!originValue || _typeof(originValue) !== 'object') {\n // Init container if not exist\n clone = set(clone, path, createEmpty(value));\n }\n keys(value).forEach(function (key) {\n internalMerge([].concat(_toConsumableArray(path), [key]), loopSet);\n });\n }\n } else {\n clone = set(clone, path, value);\n }\n }\n internalMerge([]);\n });\n return clone;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport cls from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport Handles from \"./Handles\";\nimport Marks from \"./Marks\";\nimport Steps from \"./Steps\";\nimport Tracks from \"./Tracks\";\nimport SliderContext from \"./context\";\nimport useDrag from \"./hooks/useDrag\";\nimport useOffset from \"./hooks/useOffset\";\n\n/**\n * New:\n * - click mark to update range value\n * - handleRender\n * - Fix handle with count not correct\n * - Fix pushable not work in some case\n * - No more FindDOMNode\n * - Move all position related style into inline style\n * - Key: up is plus, down is minus\n * - fix Key with step = null not align with marks\n * - Change range should not trigger onChange\n * - keyboard support pushable\n */\n\nvar Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-slider' : _props$prefixCls,\n className = props.className,\n style = props.style,\n classNames = props.classNames,\n styles = props.styles,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$keyboard = props.keyboard,\n keyboard = _props$keyboard === void 0 ? true : _props$keyboard,\n autoFocus = props.autoFocus,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n _props$min = props.min,\n min = _props$min === void 0 ? 0 : _props$min,\n _props$max = props.max,\n max = _props$max === void 0 ? 100 : _props$max,\n _props$step = props.step,\n step = _props$step === void 0 ? 1 : _props$step,\n value = props.value,\n defaultValue = props.defaultValue,\n range = props.range,\n count = props.count,\n onChange = props.onChange,\n onBeforeChange = props.onBeforeChange,\n onAfterChange = props.onAfterChange,\n onChangeComplete = props.onChangeComplete,\n _props$allowCross = props.allowCross,\n allowCross = _props$allowCross === void 0 ? true : _props$allowCross,\n _props$pushable = props.pushable,\n pushable = _props$pushable === void 0 ? false : _props$pushable,\n draggableTrack = props.draggableTrack,\n reverse = props.reverse,\n vertical = props.vertical,\n _props$included = props.included,\n included = _props$included === void 0 ? true : _props$included,\n startPoint = props.startPoint,\n trackStyle = props.trackStyle,\n handleStyle = props.handleStyle,\n railStyle = props.railStyle,\n dotStyle = props.dotStyle,\n activeDotStyle = props.activeDotStyle,\n marks = props.marks,\n dots = props.dots,\n handleRender = props.handleRender,\n activeHandleRender = props.activeHandleRender,\n _props$tabIndex = props.tabIndex,\n tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n ariaLabelForHandle = props.ariaLabelForHandle,\n ariaLabelledByForHandle = props.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = props.ariaValueTextFormatterForHandle;\n var handlesRef = React.useRef(null);\n var containerRef = React.useRef(null);\n var direction = React.useMemo(function () {\n if (vertical) {\n return reverse ? 'ttb' : 'btt';\n }\n return reverse ? 'rtl' : 'ltr';\n }, [reverse, vertical]);\n\n // ============================ Range =============================\n var mergedMin = React.useMemo(function () {\n return isFinite(min) ? min : 0;\n }, [min]);\n var mergedMax = React.useMemo(function () {\n return isFinite(max) ? max : 100;\n }, [max]);\n\n // ============================= Step =============================\n var mergedStep = React.useMemo(function () {\n return step !== null && step <= 0 ? 1 : step;\n }, [step]);\n\n // ============================= Push =============================\n var mergedPush = React.useMemo(function () {\n if (typeof pushable === 'boolean') {\n return pushable ? mergedStep : false;\n }\n return pushable >= 0 ? pushable : false;\n }, [pushable, mergedStep]);\n\n // ============================ Marks =============================\n var markList = React.useMemo(function () {\n return Object.keys(marks || {}).map(function (key) {\n var mark = marks[key];\n var markObj = {\n value: Number(key)\n };\n if (mark && _typeof(mark) === 'object' && ! /*#__PURE__*/React.isValidElement(mark) && ('label' in mark || 'style' in mark)) {\n markObj.style = mark.style;\n markObj.label = mark.label;\n } else {\n markObj.label = mark;\n }\n return markObj;\n }).filter(function (_ref) {\n var label = _ref.label;\n return label || typeof label === 'number';\n }).sort(function (a, b) {\n return a.value - b.value;\n });\n }, [marks]);\n\n // ============================ Format ============================\n var _useOffset = useOffset(mergedMin, mergedMax, mergedStep, markList, allowCross, mergedPush),\n _useOffset2 = _slicedToArray(_useOffset, 2),\n formatValue = _useOffset2[0],\n offsetValues = _useOffset2[1];\n\n // ============================ Values ============================\n var _useMergedState = useMergedState(defaultValue, {\n value: value\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedValue = _useMergedState2[0],\n setValue = _useMergedState2[1];\n var rawValues = React.useMemo(function () {\n var valueList = mergedValue === null || mergedValue === undefined ? [] : Array.isArray(mergedValue) ? mergedValue : [mergedValue];\n var _valueList = _slicedToArray(valueList, 1),\n _valueList$ = _valueList[0],\n val0 = _valueList$ === void 0 ? mergedMin : _valueList$;\n var returnValues = mergedValue === null ? [] : [val0];\n\n // Format as range\n if (range) {\n returnValues = _toConsumableArray(valueList);\n\n // When count provided or value is `undefined`, we fill values\n if (count || mergedValue === undefined) {\n var pointCount = count >= 0 ? count + 1 : 2;\n returnValues = returnValues.slice(0, pointCount);\n\n // Fill with count\n while (returnValues.length < pointCount) {\n var _returnValues;\n returnValues.push((_returnValues = returnValues[returnValues.length - 1]) !== null && _returnValues !== void 0 ? _returnValues : mergedMin);\n }\n }\n returnValues.sort(function (a, b) {\n return a - b;\n });\n }\n\n // Align in range\n returnValues.forEach(function (val, index) {\n returnValues[index] = formatValue(val);\n });\n return returnValues;\n }, [mergedValue, range, mergedMin, count, formatValue]);\n\n // =========================== onChange ===========================\n var rawValuesRef = React.useRef(rawValues);\n rawValuesRef.current = rawValues;\n var getTriggerValue = function getTriggerValue(triggerValues) {\n return range ? triggerValues : triggerValues[0];\n };\n var triggerChange = function triggerChange(nextValues) {\n // Order first\n var cloneNextValues = _toConsumableArray(nextValues).sort(function (a, b) {\n return a - b;\n });\n\n // Trigger event if needed\n if (onChange && !isEqual(cloneNextValues, rawValuesRef.current, true)) {\n onChange(getTriggerValue(cloneNextValues));\n }\n\n // We set this later since it will re-render component immediately\n setValue(cloneNextValues);\n };\n var finishChange = function finishChange() {\n var finishValue = getTriggerValue(rawValuesRef.current);\n onAfterChange === null || onAfterChange === void 0 || onAfterChange(finishValue);\n warning(!onAfterChange, '[rc-slider] `onAfterChange` is deprecated. Please use `onChangeComplete` instead.');\n onChangeComplete === null || onChangeComplete === void 0 || onChangeComplete(finishValue);\n };\n var _useDrag = useDrag(containerRef, direction, rawValues, mergedMin, mergedMax, formatValue, triggerChange, finishChange, offsetValues),\n _useDrag2 = _slicedToArray(_useDrag, 4),\n draggingIndex = _useDrag2[0],\n draggingValue = _useDrag2[1],\n cacheValues = _useDrag2[2],\n onStartDrag = _useDrag2[3];\n var changeToCloseValue = function changeToCloseValue(newValue, e) {\n if (!disabled) {\n var valueIndex = 0;\n var valueDist = mergedMax - mergedMin;\n rawValues.forEach(function (val, index) {\n var dist = Math.abs(newValue - val);\n if (dist <= valueDist) {\n valueDist = dist;\n valueIndex = index;\n }\n });\n\n // Create new values\n var cloneNextValues = _toConsumableArray(rawValues);\n cloneNextValues[valueIndex] = newValue;\n\n // Fill value to match default 2\n if (range && !rawValues.length && count === undefined) {\n cloneNextValues.push(newValue);\n }\n onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(getTriggerValue(cloneNextValues));\n triggerChange(cloneNextValues);\n if (e) {\n var _document$activeEleme, _document$activeEleme2;\n (_document$activeEleme = document.activeElement) === null || _document$activeEleme === void 0 || (_document$activeEleme2 = _document$activeEleme.blur) === null || _document$activeEleme2 === void 0 || _document$activeEleme2.call(_document$activeEleme);\n handlesRef.current.focus(valueIndex);\n onStartDrag(e, valueIndex, cloneNextValues);\n }\n }\n };\n\n // ============================ Click =============================\n var onSliderMouseDown = function onSliderMouseDown(e) {\n e.preventDefault();\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n width = _containerRef$current.width,\n height = _containerRef$current.height,\n left = _containerRef$current.left,\n top = _containerRef$current.top,\n bottom = _containerRef$current.bottom,\n right = _containerRef$current.right;\n var clientX = e.clientX,\n clientY = e.clientY;\n var percent;\n switch (direction) {\n case 'btt':\n percent = (bottom - clientY) / height;\n break;\n case 'ttb':\n percent = (clientY - top) / height;\n break;\n case 'rtl':\n percent = (right - clientX) / width;\n break;\n default:\n percent = (clientX - left) / width;\n }\n var nextValue = mergedMin + percent * (mergedMax - mergedMin);\n changeToCloseValue(formatValue(nextValue), e);\n };\n\n // =========================== Keyboard ===========================\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n keyboardValue = _React$useState2[0],\n setKeyboardValue = _React$useState2[1];\n var onHandleOffsetChange = function onHandleOffsetChange(offset, valueIndex) {\n if (!disabled) {\n var next = offsetValues(rawValues, offset, valueIndex);\n onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(getTriggerValue(rawValues));\n triggerChange(next.values);\n setKeyboardValue(next.value);\n }\n };\n React.useEffect(function () {\n if (keyboardValue !== null) {\n var valueIndex = rawValues.indexOf(keyboardValue);\n if (valueIndex >= 0) {\n handlesRef.current.focus(valueIndex);\n }\n }\n setKeyboardValue(null);\n }, [keyboardValue]);\n\n // ============================= Drag =============================\n var mergedDraggableTrack = React.useMemo(function () {\n if (draggableTrack && mergedStep === null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`draggableTrack` is not supported when `step` is `null`.');\n }\n return false;\n }\n return draggableTrack;\n }, [draggableTrack, mergedStep]);\n var onStartMove = function onStartMove(e, valueIndex) {\n onStartDrag(e, valueIndex);\n onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(getTriggerValue(rawValuesRef.current));\n };\n\n // Auto focus for updated handle\n var dragging = draggingIndex !== -1;\n React.useEffect(function () {\n if (!dragging) {\n var valueIndex = rawValues.lastIndexOf(draggingValue);\n handlesRef.current.focus(valueIndex);\n }\n }, [dragging]);\n\n // =========================== Included ===========================\n var sortedCacheValues = React.useMemo(function () {\n return _toConsumableArray(cacheValues).sort(function (a, b) {\n return a - b;\n });\n }, [cacheValues]);\n\n // Provide a range values with included [min, max]\n // Used for Track, Mark & Dot\n var _React$useMemo = React.useMemo(function () {\n if (!range) {\n return [mergedMin, sortedCacheValues[0]];\n }\n return [sortedCacheValues[0], sortedCacheValues[sortedCacheValues.length - 1]];\n }, [sortedCacheValues, range, mergedMin]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n includedStart = _React$useMemo2[0],\n includedEnd = _React$useMemo2[1];\n\n // ============================= Refs =============================\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n handlesRef.current.focus(0);\n },\n blur: function blur() {\n var _containerRef$current2;\n var _document = document,\n activeElement = _document.activeElement;\n if ((_containerRef$current2 = containerRef.current) !== null && _containerRef$current2 !== void 0 && _containerRef$current2.contains(activeElement)) {\n activeElement === null || activeElement === void 0 || activeElement.blur();\n }\n }\n };\n });\n\n // ========================== Auto Focus ==========================\n React.useEffect(function () {\n if (autoFocus) {\n handlesRef.current.focus(0);\n }\n }, []);\n\n // =========================== Context ============================\n var context = React.useMemo(function () {\n return {\n min: mergedMin,\n max: mergedMax,\n direction: direction,\n disabled: disabled,\n keyboard: keyboard,\n step: mergedStep,\n included: included,\n includedStart: includedStart,\n includedEnd: includedEnd,\n range: range,\n tabIndex: tabIndex,\n ariaLabelForHandle: ariaLabelForHandle,\n ariaLabelledByForHandle: ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle: ariaValueTextFormatterForHandle,\n styles: styles || {},\n classNames: classNames || {}\n };\n }, [mergedMin, mergedMax, direction, disabled, keyboard, mergedStep, included, includedStart, includedEnd, range, tabIndex, ariaLabelForHandle, ariaLabelledByForHandle, ariaValueTextFormatterForHandle, styles, classNames]);\n\n // ============================ Render ============================\n return /*#__PURE__*/React.createElement(SliderContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: containerRef,\n className: cls(prefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), \"\".concat(prefixCls, \"-vertical\"), vertical), \"\".concat(prefixCls, \"-horizontal\"), !vertical), \"\".concat(prefixCls, \"-with-marks\"), markList.length)),\n style: style,\n onMouseDown: onSliderMouseDown\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: cls(\"\".concat(prefixCls, \"-rail\"), classNames === null || classNames === void 0 ? void 0 : classNames.rail),\n style: _objectSpread(_objectSpread({}, railStyle), styles === null || styles === void 0 ? void 0 : styles.rail)\n }), /*#__PURE__*/React.createElement(Tracks, {\n prefixCls: prefixCls,\n style: trackStyle,\n values: sortedCacheValues,\n startPoint: startPoint,\n onStartMove: mergedDraggableTrack ? onStartMove : undefined\n }), /*#__PURE__*/React.createElement(Steps, {\n prefixCls: prefixCls,\n marks: markList,\n dots: dots,\n style: dotStyle,\n activeStyle: activeDotStyle\n }), /*#__PURE__*/React.createElement(Handles, {\n ref: handlesRef,\n prefixCls: prefixCls,\n style: handleStyle,\n values: cacheValues,\n draggingIndex: draggingIndex,\n onStartMove: onStartMove,\n onOffsetChange: onHandleOffsetChange,\n onFocus: onFocus,\n onBlur: onBlur,\n handleRender: handleRender,\n activeHandleRender: activeHandleRender,\n onChangeComplete: finishChange\n }), /*#__PURE__*/React.createElement(Marks, {\n prefixCls: prefixCls,\n marks: markList,\n onClick: changeToCloseValue\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Slider.displayName = 'Slider';\n}\nexport default Slider;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\n\n/** Format the value in the range of [min, max] */\n\n/** Format value align with step */\n\n/** Format value align with step & marks */\n\nexport default function useOffset(min, max, step, markList, allowCross, pushable) {\n var formatRangeValue = React.useCallback(function (val) {\n return Math.max(min, Math.min(max, val));\n }, [min, max]);\n var formatStepValue = React.useCallback(function (val) {\n if (step !== null) {\n var stepValue = min + Math.round((formatRangeValue(val) - min) / step) * step;\n\n // Cut number in case to be like 0.30000000000000004\n var getDecimal = function getDecimal(num) {\n return (String(num).split('.')[1] || '').length;\n };\n var maxDecimal = Math.max(getDecimal(step), getDecimal(max), getDecimal(min));\n var fixedValue = Number(stepValue.toFixed(maxDecimal));\n return min <= fixedValue && fixedValue <= max ? fixedValue : null;\n }\n return null;\n }, [step, min, max, formatRangeValue]);\n var formatValue = React.useCallback(function (val) {\n var formatNextValue = formatRangeValue(val);\n\n // List align values\n var alignValues = markList.map(function (mark) {\n return mark.value;\n });\n if (step !== null) {\n alignValues.push(formatStepValue(val));\n }\n\n // min & max\n alignValues.push(min, max);\n\n // Align with marks\n var closeValue = alignValues[0];\n var closeDist = max - min;\n alignValues.forEach(function (alignValue) {\n var dist = Math.abs(formatNextValue - alignValue);\n if (dist <= closeDist) {\n closeValue = alignValue;\n closeDist = dist;\n }\n });\n return closeValue;\n }, [min, max, markList, step, formatRangeValue, formatStepValue]);\n\n // ========================== Offset ==========================\n // Single Value\n var offsetValue = function offsetValue(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n if (typeof offset === 'number') {\n var nextValue;\n var originValue = values[valueIndex];\n\n // Only used for `dist` mode\n var targetDistValue = originValue + offset;\n\n // Compare next step value & mark value which is best match\n var potentialValues = [];\n markList.forEach(function (mark) {\n potentialValues.push(mark.value);\n });\n\n // Min & Max\n potentialValues.push(min, max);\n\n // In case origin value is align with mark but not with step\n potentialValues.push(formatStepValue(originValue));\n\n // Put offset step value also\n var sign = offset > 0 ? 1 : -1;\n if (mode === 'unit') {\n potentialValues.push(formatStepValue(originValue + sign * step));\n } else {\n potentialValues.push(formatStepValue(targetDistValue));\n }\n\n // Find close one\n potentialValues = potentialValues.filter(function (val) {\n return val !== null;\n })\n // Remove reverse value\n .filter(function (val) {\n return offset < 0 ? val <= originValue : val >= originValue;\n });\n if (mode === 'unit') {\n // `unit` mode can not contain itself\n potentialValues = potentialValues.filter(function (val) {\n return val !== originValue;\n });\n }\n var compareValue = mode === 'unit' ? originValue : targetDistValue;\n nextValue = potentialValues[0];\n var valueDist = Math.abs(nextValue - compareValue);\n potentialValues.forEach(function (potentialValue) {\n var dist = Math.abs(potentialValue - compareValue);\n if (dist < valueDist) {\n nextValue = potentialValue;\n valueDist = dist;\n }\n });\n\n // Out of range will back to range\n if (nextValue === undefined) {\n return offset < 0 ? min : max;\n }\n\n // `dist` mode\n if (mode === 'dist') {\n return nextValue;\n }\n\n // `unit` mode may need another round\n if (Math.abs(offset) > 1) {\n var cloneValues = _toConsumableArray(values);\n cloneValues[valueIndex] = nextValue;\n return offsetValue(cloneValues, offset - sign, valueIndex, mode);\n }\n return nextValue;\n } else if (offset === 'min') {\n return min;\n } else if (offset === 'max') {\n return max;\n }\n };\n\n /** Same as `offsetValue` but return `changed` mark to tell value changed */\n var offsetChangedValue = function offsetChangedValue(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n var originValue = values[valueIndex];\n var nextValue = offsetValue(values, offset, valueIndex, mode);\n return {\n value: nextValue,\n changed: nextValue !== originValue\n };\n };\n var needPush = function needPush(dist) {\n return pushable === null && dist === 0 || typeof pushable === 'number' && dist < pushable;\n };\n\n // Values\n var offsetValues = function offsetValues(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n var nextValues = values.map(formatValue);\n var originValue = nextValues[valueIndex];\n var nextValue = offsetValue(nextValues, offset, valueIndex, mode);\n nextValues[valueIndex] = nextValue;\n if (allowCross === false) {\n // >>>>> Allow Cross\n var pushNum = pushable || 0;\n\n // ============ AllowCross ===============\n if (valueIndex > 0 && nextValues[valueIndex - 1] !== originValue) {\n nextValues[valueIndex] = Math.max(nextValues[valueIndex], nextValues[valueIndex - 1] + pushNum);\n }\n if (valueIndex < nextValues.length - 1 && nextValues[valueIndex + 1] !== originValue) {\n nextValues[valueIndex] = Math.min(nextValues[valueIndex], nextValues[valueIndex + 1] - pushNum);\n }\n } else if (typeof pushable === 'number' || pushable === null) {\n // >>>>> Pushable\n // =============== Push ==================\n\n // >>>>>> Basic push\n // End values\n for (var i = valueIndex + 1; i < nextValues.length; i += 1) {\n var changed = true;\n while (needPush(nextValues[i] - nextValues[i - 1]) && changed) {\n var _offsetChangedValue = offsetChangedValue(nextValues, 1, i);\n nextValues[i] = _offsetChangedValue.value;\n changed = _offsetChangedValue.changed;\n }\n }\n\n // Start values\n for (var _i = valueIndex; _i > 0; _i -= 1) {\n var _changed = true;\n while (needPush(nextValues[_i] - nextValues[_i - 1]) && _changed) {\n var _offsetChangedValue2 = offsetChangedValue(nextValues, -1, _i - 1);\n nextValues[_i - 1] = _offsetChangedValue2.value;\n _changed = _offsetChangedValue2.changed;\n }\n }\n\n // >>>>> Revert back to safe push range\n // End to Start\n for (var _i2 = nextValues.length - 1; _i2 > 0; _i2 -= 1) {\n var _changed2 = true;\n while (needPush(nextValues[_i2] - nextValues[_i2 - 1]) && _changed2) {\n var _offsetChangedValue3 = offsetChangedValue(nextValues, -1, _i2 - 1);\n nextValues[_i2 - 1] = _offsetChangedValue3.value;\n _changed2 = _offsetChangedValue3.changed;\n }\n }\n\n // Start to End\n for (var _i3 = 0; _i3 < nextValues.length - 1; _i3 += 1) {\n var _changed3 = true;\n while (needPush(nextValues[_i3 + 1] - nextValues[_i3]) && _changed3) {\n var _offsetChangedValue4 = offsetChangedValue(nextValues, 1, _i3 + 1);\n nextValues[_i3 + 1] = _offsetChangedValue4.value;\n _changed3 = _offsetChangedValue4.changed;\n }\n }\n }\n return {\n value: nextValues[valueIndex],\n values: nextValues\n };\n };\n return [formatValue, offsetValues];\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport warning from \"./warning\";\n\n/**\n * Deeply compares two object literals.\n * @param obj1 object 1\n * @param obj2 object 2\n * @param shallow shallow compare\n * @returns\n */\nfunction isEqual(obj1, obj2) {\n var shallow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // https://github.com/mapbox/mapbox-gl-js/pull/5979/files#diff-fde7145050c47cc3a306856efd5f9c3016e86e859de9afbd02c879be5067e58f\n var refSet = new Set();\n function deepEqual(a, b) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var circular = refSet.has(a);\n warning(!circular, 'Warning: There may be circular references');\n if (circular) {\n return false;\n }\n if (a === b) {\n return true;\n }\n if (shallow && level > 1) {\n return false;\n }\n refSet.add(a);\n var newLevel = level + 1;\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i], newLevel)) {\n return false;\n }\n }\n return true;\n }\n if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {\n var keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) {\n return false;\n }\n return keys.every(function (key) {\n return deepEqual(a[key], b[key], newLevel);\n });\n }\n // other\n return false;\n }\n return deepEqual(obj1, obj2);\n}\nexport default isEqual;","import Slider from \"./Slider\";\nexport default Slider;","import range_ from 'lodash/range';\n\nexport const prepareAvailableValues = (availableValues?: number[]): number[] | undefined => {\n if (!availableValues || !availableValues.length) {\n return undefined;\n }\n\n return [...availableValues].sort((v1, v2) => v1 - v2);\n};\n\nexport const prepareValue = ({\n value = 0,\n min = 0,\n max = 100,\n}: {\n value?: number;\n min?: number;\n max?: number;\n}) => {\n if (value > max) {\n return max;\n }\n if (value < min) {\n return min;\n }\n\n return value;\n};\n\nexport const getInfoPoints = ({\n infoPointsCount,\n min,\n max,\n values,\n}: {\n infoPointsCount: number;\n min: number;\n max: number;\n values?: number[];\n}) => {\n let mapInfoPoints;\n\n if (values && infoPointsCount >= values.length) {\n return values;\n }\n\n if (infoPointsCount < 1) {\n return [];\n }\n\n if (infoPointsCount === 1) {\n return [min];\n }\n\n if (!values || !values.length) {\n const step = Math.abs(max - min) / (infoPointsCount - 1);\n mapInfoPoints = (el: number): number => Math.round((min + step * el) * 100) / 100;\n } else {\n const step = values.length / infoPointsCount;\n mapInfoPoints = (el: number, i: number, arr: number[]) => {\n let index = Math.ceil(el * step);\n if (i === arr.length - 1) {\n // to make sure if the last point is equal to the last available value\n index = values.length - 1;\n }\n return values[index];\n };\n }\n\n return range_(0, infoPointsCount).map(mapInfoPoints);\n};\n\nexport const getParsedValue = (textValue: string, parse?: (value: string) => number): number => {\n return parse ? parse(textValue) : parseFloat(textValue);\n};\n\nexport const getTextValue = (value: number, format?: (value: number) => string): string => {\n return format ? format(value) : value.toString();\n};\n\nexport const getClosestValue = (value: number, values?: number[]): number => {\n if (!values || !values.length) {\n return value;\n }\n\n let low = 0;\n let hi = values.length - 1;\n\n while (hi - low > 1) {\n const mid = Math.floor((low + hi) / 2);\n if (values[mid] < value) {\n low = mid;\n } else {\n hi = mid;\n }\n }\n\n const left = values[low];\n const right = values[hi];\n return value - left <= right - value ? left : right;\n};\n","export const LEFT_INFO_POINT_STYLE = {\n position: 'static',\n marginLeft: 0,\n display: 'flex',\n verticalAlign: 'none',\n textAlign: 'none',\n};\n\nexport const RIGHT_INFO_POINT_STYLE = {\n position: 'static',\n marginLeft: 0,\n display: 'flex',\n verticalAlign: 'none',\n textAlign: 'none',\n flexDirection: 'row-reverse',\n};\n","import React, {Component, ReactElement} from 'react';\nimport block from 'bem-cn-lite';\n\nimport Slider, {type SliderProps, type SliderRef} from 'rc-slider';\nimport {IconProps, TextInput, TextInputSize} from '@gravity-ui/uikit';\nimport debounce_ from 'lodash/debounce';\n// eslint-disable-next-line lodash/import-scope\nimport type {DebouncedFunc} from 'lodash';\n\nimport {\n getClosestValue,\n getInfoPoints,\n getParsedValue,\n getTextValue,\n prepareAvailableValues,\n prepareValue,\n} from './utils';\nimport {LEFT_INFO_POINT_STYLE, RIGHT_INFO_POINT_STYLE} from './constants';\n\nimport './RangeInputPicker.scss';\n\nconst b = block('yc-range-input-picker');\n\ninterface RangeInputPickerDefaultProps {\n value?: number;\n minValue?: number;\n maxValue?: number;\n size?: TextInputSize;\n placeholder?: string;\n debounceDelay?: number;\n infoPointsCount?: number;\n step?: number;\n disabled?: boolean;\n readOnly?: boolean;\n autoFocus?: boolean;\n}\n\nexport interface RangeInputPickerGeneralProps {\n onUpdate?: (value: number) => void;\n onAfterUpdate?: (value: number) => void;\n onOutsideClick?: (value: number) => void;\n displayFormat?: (value?: number) => string;\n format?: (value?: number) => string;\n parse?: (value: string) => number;\n onSubmit?: (value: number) => void;\n onBlur?: (value: number) => void;\n onFocus?: (value: number) => void;\n pattern?: string;\n iconLeft?: ReactElement<IconProps>;\n iconRight?: ReactElement<IconProps>;\n availableValues?: number[];\n className?: string;\n controlProps?: React.InputHTMLAttributes<HTMLInputElement>;\n}\n\nexport type RangeInputPickerProps = RangeInputPickerDefaultProps & RangeInputPickerGeneralProps;\n\ninterface RangeInputPickerState {\n prevProps: RangeInputPickerProps;\n textValue: string;\n currentValue: number;\n min: number;\n max: number;\n values?: number[];\n focused: boolean;\n}\n\nexport class RangeInputPicker extends Component<RangeInputPickerProps, RangeInputPickerState> {\n static defaultProps: RangeInputPickerDefaultProps = {\n size: 'm',\n placeholder: '',\n value: 0,\n minValue: 0,\n maxValue: 100,\n debounceDelay: 200,\n disabled: false,\n readOnly: false,\n autoFocus: false,\n infoPointsCount: 2,\n step: 1,\n };\n\n static getDisplayTextValue(props: RangeInputPickerProps, value?: number): string {\n const {displayFormat, format} = props;\n const formatFunc = displayFormat || format || String;\n\n return formatFunc(value);\n }\n\n static getPreparedState(props: RangeInputPickerProps, currentState?: RangeInputPickerState) {\n const {availableValues, value, minValue = 0, maxValue = 100} = props;\n const {focused = false, textValue = ''} = currentState || {};\n const values = prepareAvailableValues(availableValues);\n const min = values ? values[0] : minValue;\n const max = values ? values[values.length - 1] : maxValue;\n const actualValue = prepareValue({value, min, max});\n\n return {\n prevProps: props,\n textValue: focused ? textValue : RangeInputPicker.getDisplayTextValue(props, value),\n currentValue: actualValue,\n min,\n max,\n values,\n focused,\n };\n }\n\n static getDerivedStateFromProps(\n nextProps: RangeInputPickerProps,\n state: RangeInputPickerState,\n ) {\n if (nextProps === state.prevProps) {\n return null;\n }\n\n return RangeInputPicker.getPreparedState(nextProps, state);\n }\n\n private wrapperRef = React.createRef<HTMLDivElement>();\n private sliderRef = React.createRef<SliderRef>();\n private textInputInnerRef = React.createRef<HTMLInputElement>();\n private debouncedCallOnUpdate: DebouncedFunc<() => void>;\n private debouncedHandleOnAfterUpdate: DebouncedFunc<() => void>;\n\n constructor(props: RangeInputPickerProps) {\n super(props);\n\n this.debouncedCallOnUpdate = debounce_(this.callOnUpdate, props.debounceDelay);\n this.debouncedHandleOnAfterUpdate = debounce_(\n this.handleOnAfterUpdate,\n props.debounceDelay,\n );\n this.state = RangeInputPicker.getPreparedState(props);\n }\n\n componentDidMount() {\n const {onOutsideClick} = this.props;\n\n if (onOutsideClick) {\n document.addEventListener('touchstart', this.handleOutsideClick);\n document.addEventListener('mousedown', this.handleOutsideClick);\n }\n }\n\n componentWillUnmount() {\n this.debouncedCallOnUpdate.cancel();\n this.debouncedHandleOnAfterUpdate.cancel();\n\n document.removeEventListener('touchstart', this.handleOutsideClick);\n document.removeEventListener('mousedown', this.handleOutsideClick);\n }\n\n render() {\n const {\n placeholder,\n autoFocus,\n disabled,\n readOnly,\n // iconRight,\n // iconLeft,\n size,\n pattern,\n className,\n controlProps,\n } = this.props;\n const {currentValue, textValue, min, max, values} = this.state;\n\n let rangeInfoItems;\n let rcSliderInfoItems;\n\n // use our own info items implementation unless available values are not empty\n if (!values || !values.length) {\n rangeInfoItems = this.renderRangeInfoItems();\n } else {\n rcSliderInfoItems = this.renderInfoItems();\n }\n\n return (\n <div\n ref={this.wrapperRef}\n className={b({size}, className)}\n tabIndex={0}\n onKeyDown={this.handleKeyDown}\n onMouseDown={this.handleWrapperClick}\n >\n <TextInput\n controlRef={this.textInputInnerRef}\n placeholder={placeholder}\n size={size}\n disabled={disabled}\n onUpdate={this.handleInputUpdate}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n value={textValue}\n autoFocus={autoFocus}\n // iconRight={iconRight}\n // iconLeft={iconLeft}\n controlProps={{readOnly, pattern, ...controlProps}}\n />\n\n <Slider\n ref={this.sliderRef}\n tabIndex={0}\n min={min}\n max={max}\n value={currentValue}\n disabled={disabled}\n onChange={this.handleSliderChange}\n step={this.step}\n marks={rcSliderInfoItems}\n onChangeComplete={this.debouncedHandleOnAfterUpdate}\n />\n\n {rangeInfoItems && (\n <div className={b('range-info-items-list')}>{rangeInfoItems}</div>\n )}\n </div>\n );\n }\n\n private get patternRegex(): RegExp | null {\n const {pattern} = this.props;\n\n if (!pattern) {\n return null;\n }\n\n return new RegExp(`^(?:${pattern})$`);\n }\n\n private get step(): number | undefined {\n const {step} = this.props;\n const {values} = this.state;\n\n return !values || !values.length ? step : undefined;\n }\n\n private callOnUpdate = () => {\n const {onUpdate} = this.props;\n const {currentValue} = this.state;\n\n if (onUpdate) {\n onUpdate(currentValue);\n }\n };\n\n private prepareChange = (textValue: string): number => {\n const {parse} = this.props;\n const {values, min, max, currentValue} = this.state;\n let value = getParsedValue(textValue, parse);\n\n if (isNaN(value)) {\n value = currentValue;\n }\n\n let actualValue = prepareValue({value, min, max});\n\n if (values && values.length) {\n actualValue = getClosestValue(actualValue, values);\n }\n\n return actualValue;\n };\n\n private handleOnAfterUpdate = () => {\n const {onAfterUpdate} = this.props;\n const {currentValue} = this.state;\n\n if (onAfterUpdate) {\n onAfterUpdate(currentValue);\n }\n };\n\n private handleInputBlur = (event: React.FocusEvent<HTMLSpanElement>) => {\n event.preventDefault();\n\n const {onBlur} = this.props;\n const {textValue} = this.state;\n\n const actualValue = this.prepareChange(textValue);\n\n this.setState(\n {\n focused: false,\n currentValue: actualValue,\n textValue: RangeInputPicker.getDisplayTextValue(this.props, actualValue),\n },\n () => {\n if (onBlur) {\n onBlur(actualValue);\n }\n },\n );\n };\n\n private handleInputFocus = () => {\n const {format, onFocus} = this.props;\n const {currentValue} = this.state;\n\n this.setState(\n {\n textValue: getTextValue(currentValue, format),\n },\n () => {\n if (onFocus) {\n onFocus(currentValue);\n }\n },\n );\n };\n\n private handleInputUpdate = (newValue: string) => {\n if (this.patternRegex && !this.patternRegex.test(newValue)) {\n return;\n }\n\n const actualValue = this.prepareChange(newValue);\n\n this.setState(\n {\n currentValue: actualValue,\n textValue: newValue,\n },\n this.debouncedCallOnUpdate,\n );\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key !== 'Enter') {\n return;\n }\n\n const {format, onSubmit} = this.props;\n const {textValue} = this.state;\n const actualValue = this.prepareChange(textValue);\n\n this.setState(\n {\n currentValue: actualValue,\n textValue: getTextValue(actualValue, format),\n focused: false,\n },\n () => {\n if (this.textInputInnerRef.current) {\n this.textInputInnerRef.current.blur();\n }\n\n if (onSubmit) {\n onSubmit(actualValue);\n }\n },\n );\n };\n\n private handleSliderChange: SliderProps['onChange'] = (newValue) => {\n if (typeof newValue === 'number') {\n const {min, max, values} = this.state;\n\n const value = getClosestValue(prepareValue({min, max, value: newValue}), values);\n\n this.setState(\n {\n currentValue: value,\n textValue: RangeInputPicker.getDisplayTextValue(this.props, value),\n },\n this.debouncedCallOnUpdate,\n );\n }\n };\n\n private handleWrapperClick = (event: React.MouseEvent<HTMLDivElement>) => {\n // TODO: написать свои тайпинги для Slider, т.к. родные описаны некорректно\n // @ts-ignore\n const slider = this.sliderRef.current && this.sliderRef.current.sliderRef;\n const isSliderContainsTarget = slider && slider.contains(event.target as Node);\n\n if (!isSliderContainsTarget) {\n this.setState({focused: true});\n }\n };\n\n private handleInfoPointClick = (value: number) => {\n return (event: React.MouseEvent<HTMLAnchorElement>) => {\n const {format, parse} = this.props;\n\n event.preventDefault();\n\n const val = getParsedValue(getTextValue(value, format), parse);\n\n this.setState(\n {\n currentValue: val,\n textValue: RangeInputPicker.getDisplayTextValue(this.props, val),\n },\n () => {\n const {onUpdate, onAfterUpdate} = this.props;\n\n if (onUpdate) {\n onUpdate(val);\n }\n\n if (onAfterUpdate) {\n onAfterUpdate(val);\n }\n },\n );\n };\n };\n\n private handleOutsideClick = (event: Event) => {\n const {onOutsideClick} = this.props;\n const {currentValue, focused} = this.state;\n const wrapper = this.wrapperRef.current;\n\n if (!onOutsideClick || !wrapper) {\n return;\n }\n\n if (!wrapper.contains(event.target as Node) && focused) {\n this.setState(\n {\n focused: false,\n },\n () => {\n if (onOutsideClick) {\n onOutsideClick(currentValue);\n }\n },\n );\n }\n };\n\n private renderItem = (value: number): string =>\n RangeInputPicker.getDisplayTextValue(this.props, value);\n\n private renderRangeItem = (value: number): JSX.Element => (\n <span\n key={value}\n className={b('range-info-item')}\n onClick={this.handleInfoPointClick(value)}\n >\n {RangeInputPicker.getDisplayTextValue(this.props, value)}\n </span>\n );\n\n private renderRangeInfoItems = () => {\n const {infoPointsCount = 2, minValue = 0, maxValue = 100} = this.props;\n const {values} = this.state;\n\n if (infoPointsCount < 1) {\n return [];\n }\n\n let infoItems: number[] = [];\n\n if (infoPointsCount === 1) {\n infoItems.push(minValue);\n } else if (!values || !values.length) {\n const step = Math.abs(maxValue - minValue) / (infoPointsCount - 1);\n\n for (let i = 0; i < infoPointsCount; i++) {\n const point = Math.round((minValue + step * i) * 100) / 100;\n\n infoItems.push(point);\n }\n } else {\n infoItems = values;\n }\n\n const pointsCount = infoItems.length;\n const unit = 100 / (pointsCount - 1);\n const pointWidth = unit * 0.9;\n const pointsRange = maxValue - minValue;\n\n return infoItems.map((point, i) => {\n const style = {\n width: pointWidth + '%',\n marginLeft: -pointWidth / 2 + '%',\n left: ((point - minValue) / pointsRange) * 100 + '%',\n };\n\n if (i === 0) {\n Object.assign(style, LEFT_INFO_POINT_STYLE);\n } else if (i === infoItems.length - 1) {\n Object.assign(style, RIGHT_INFO_POINT_STYLE);\n }\n\n return (\n <span className={b('range-info-item-container')} style={style} key={point}>\n {this.renderRangeItem(point)}\n </span>\n );\n });\n };\n\n private renderInfoItems = () => {\n const {infoPointsCount = 2} = this.props;\n const {values, min, max} = this.state;\n\n const points = getInfoPoints({infoPointsCount, min, max, values});\n\n const infoItems = points.reduce<NonNullable<SliderProps['marks']>>((acc, point: number) => {\n acc[point] = {label: this.renderItem(point), style: {}};\n\n return acc;\n }, {});\n\n return infoItems;\n };\n}\n","import React from 'react';\nimport {connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport differenceBy_ from 'lodash/differenceBy';\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\nimport sortBy_ from 'lodash/sortBy';\n\nimport {DropdownMenu} from '@gravity-ui/uikit';\n\nimport {TabFieldVertical, TabFieldVerticalProps} from '../../../../../components/Dialog';\n\nimport Button from '../../../../../components/Button/Button';\nimport Icon, {IconName} from '../../../../../components/Icon/Icon';\n\nimport {\n setCreateTableColumnsOrder,\n setCreateTableKeyColumns,\n} from '../../../../../store/actions/navigation/modals/create-table';\nimport {ArrayElement} from '../../../../../types';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\n\nimport './CreateTableTabField.scss';\n\nconst block = cn('create-table-tab-field');\n\nexport const ASCENDING = 1;\nexport const DESCENDING = -1;\n\ninterface CWProps {\n onAddColumn: (active: boolean, opts: {duplicate: boolean}) => void;\n setKeyColumns: (v: CWState['keyColumns']) => void;\n setColumnsOrder: (v: CWState['orderedTabItems']) => void;\n}\n\ninterface CWState {\n tabItems: Props['tabItems'];\n orderedTabItems: Array<TabItem>;\n keyColumns: Record<string, typeof ASCENDING | typeof DESCENDING>;\n}\n\ntype TabItem = ArrayElement<Props['tabItems']>;\n\nclass ColumnsWrapper extends React.Component<Props & CWProps, CWState> {\n static getDerivedStateFromProps(props: Props, prevState: CWState) {\n const {tabItems} = props;\n const {tabItems: prevTabItems, orderedTabItems: prevOrderedTabItems} = prevState;\n\n const res: Partial<CWState> = {};\n\n if (tabItems !== prevTabItems) {\n const tabItemsMap: Record<string, TabItem> = {};\n forEach_(tabItems, (item) => {\n tabItemsMap[item.id] = item;\n });\n\n const itemsToAdd = differenceBy_(tabItems, prevTabItems, ({id}) => id);\n const idsToRemove = new Set<string>(\n differenceBy_(prevTabItems, tabItems, ({id}) => id).map((item) => item.id),\n );\n\n const filtered = filter_(prevOrderedTabItems, ({id}) => !idsToRemove.has(id));\n const orderedTabItems = map_(filtered, ({id}) => ({\n ...tabItemsMap[id],\n }));\n\n res.tabItems = tabItems;\n res.orderedTabItems = orderedTabItems.concat(itemsToAdd);\n }\n\n return isEmpty_(res) ? null : res;\n }\n\n state: CWState = {\n tabItems: [],\n orderedTabItems: [],\n keyColumns: {},\n };\n\n setKeyColumns(keyColumns: CWState['keyColumns']) {\n this.setState({keyColumns});\n this.props.setKeyColumns(keyColumns);\n }\n\n setOrderedTabItems(orderedTabItems: CWState['orderedTabItems']) {\n this.setState({orderedTabItems});\n this.props.setColumnsOrder(orderedTabItems);\n }\n\n onOrderChanged = (order: CWState['orderedTabItems'], newIndex: number, oldIndex: number) => {\n if (newIndex === oldIndex) {\n return;\n }\n\n let {keyColumns} = this.state;\n const moved = order[newIndex];\n\n if (newIndex < oldIndex) {\n const next = order[newIndex + 1];\n if (!keyColumns[moved.id] && keyColumns[next.id]) {\n keyColumns = {...keyColumns};\n keyColumns[moved.id] = 1;\n this.setKeyColumns(keyColumns);\n }\n } else {\n const prev = order[newIndex - 1];\n if (keyColumns[moved.id] && !keyColumns[prev.id]) {\n keyColumns = {...keyColumns};\n delete keyColumns[moved.id];\n this.setKeyColumns(keyColumns);\n }\n }\n this.setOrderedTabItems(order);\n };\n\n toggleKeyColumn = (item: TabItem, value?: CWState['keyColumns']['']) => {\n const keyColumns = {...this.state.keyColumns};\n if (!value) {\n delete keyColumns[item.id];\n } else {\n keyColumns[item.id] = value;\n }\n\n const orderedTabItems = sortBy_(this.state.orderedTabItems, ({id}) => !keyColumns[id]);\n this.setKeyColumns(keyColumns);\n this.setOrderedTabItems(orderedTabItems);\n };\n\n onCloneColumn = () => {\n // The timeout is required to select the tab by click\n setTimeout(() => {\n const {onAddColumn} = this.props;\n onAddColumn(false, {duplicate: true});\n }, 1);\n };\n\n renderKeyIcon = (node: React.ReactNode, item: TabItem) => {\n const {keyColumns} = this.state;\n const current = keyColumns[item.id];\n\n const {icon, title} = (\n !current\n ? {icon: 'sort-alt', title: 'Unordered'}\n : current === DESCENDING\n ? {icon: 'sort-amount-up', title: 'Descending'}\n : {icon: 'sort-amount-down-alt', title: 'Ascending'}\n ) as {icon: IconName; title: string};\n\n return (\n <React.Fragment>\n {node}\n <Tooltip content={'Clone'}>\n <Button view={'flat'} onClick={this.onCloneColumn}>\n <Icon awesome={'clone'} />\n </Button>\n </Tooltip>\n <DropdownMenu\n items={[\n {\n icon: <Icon awesome={'sort-alt'} />,\n active: !current,\n text: 'Unordered',\n action: () => this.toggleKeyColumn(item, undefined),\n },\n {\n icon: <Icon awesome={'sort-amount-up'} />,\n active: current === DESCENDING,\n text: 'Descending',\n action: () => this.toggleKeyColumn(item, DESCENDING),\n },\n {\n icon: <Icon awesome={'sort-amount-down-alt'} />,\n active: current === ASCENDING,\n text: 'Ascending',\n action: () => this.toggleKeyColumn(item, ASCENDING),\n },\n ]}\n switcher={\n <Tooltip content={title}>\n <Button view={'flat'}>\n <Icon awesome={icon} className={block('sort-icon')} />\n </Button>\n </Tooltip>\n }\n />\n </React.Fragment>\n );\n };\n\n onMoveTab = ({oldIndex, newIndex}: {oldIndex: number; newIndex: number}) => {\n const newTabItems = [...this.state.orderedTabItems];\n\n const itemToMove = newTabItems[oldIndex];\n newTabItems.splice(oldIndex, 1);\n newTabItems.splice(newIndex, 0, itemToMove);\n\n this.onOrderChanged(newTabItems, newIndex, oldIndex);\n };\n\n render() {\n const {activeTab, ...rest} = this.props;\n const {orderedTabItems} = this.state;\n\n return (\n <TabFieldVertical\n {...rest}\n activeTab={activeTab}\n tabItems={orderedTabItems}\n size={'m'}\n sortable={true}\n onOrderChanged={this.onMoveTab}\n wrapTo={this.renderKeyIcon}\n />\n );\n }\n}\n\nconst mapDispatchToProps = {\n setKeyColumns: setCreateTableKeyColumns,\n setColumnsOrder: setCreateTableColumnsOrder,\n};\n\nconst ColumnsWrapperConnected = connect(null, mapDispatchToProps)(ColumnsWrapper);\n\ntype Props = TabFieldVerticalProps;\n\nexport default class CreateTableTabField extends React.Component<Props> {\n static isTabControl = true as const;\n static isTabControlVertical = true;\n\n onAddColumn = (active = true, {duplicate}: {duplicate?: boolean} = {}) => {\n const {onCreateTab = () => {}} = this.props;\n onCreateTab('columns', active, {userOptions: {duplicate}});\n };\n\n renderAddColumnRow() {\n return (\n <div className={block('add-column')}>\n <span className={block('add-column-label')}>Columns</span>\n <Button onClick={() => this.onAddColumn()}>\n <Icon awesome={'plus'} />\n Add\n </Button>\n </div>\n );\n }\n\n render() {\n const {className, activeTab, tabItems, ...rest} = this.props;\n const [tableSettings, ...restItems] = tabItems;\n\n return (\n <div className={block(null, className)}>\n {this.renderAddColumnRow()}\n <ColumnsWrapperConnected\n className={block('columns')}\n {...rest}\n tabItems={restItems}\n activeTab={activeTab}\n onAddColumn={this.onAddColumn}\n />\n <TabFieldVertical\n className={block('table-settings')}\n activeTab={activeTab}\n tabItems={[tableSettings]}\n {...rest}\n virtualized={false}\n />\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport sortBy_ from 'lodash/sortBy';\nimport toLower_ from 'lodash/toLower';\n\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../../store/reducers';\nimport axios, {CancelTokenSource} from 'axios';\n\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport ypath from '../../../../common/thor/ypath';\nimport {\n USE_SKIP_ERROR_FN_NODE_DOES_NOT_EXIST,\n getBatchError,\n wrapApiPromiseByToaster,\n} from '../../../../utils/utils';\nimport {loadPoolTreesIfNotLoaded} from '../../../../store/actions/global';\nimport {OperationShortInfo} from '../../../../pages/components/OperationShortInfo/OperationShortInfo';\nimport {AppStoreProvider} from '../../../../containers/App/AppStoreProvider';\nimport {CypressNodeTypes, makeUiMarker} from '../../../../utils/cypress-attributes';\nimport {Page} from '../../../../constants';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {\n PathAttribute,\n changeAttribute,\n setModalPartial,\n} from '../../../reducers/navigation/modals/tableMergeSortModalSlice';\nimport {Action} from 'redux';\nimport {getNavigationTableOutputPathAttributes} from '../../../selectors/navigation/modals/table-merge-sort-modal';\n\ntype TableMergeSortThunkAction<T = void> = ThunkAction<T, RootState, any, Action>;\n\nexport function showTableSortModal(paths: Array<string>): TableMergeSortThunkAction<Promise<void>> {\n return (dispatch) => {\n return dispatch(loadPoolTreesIfNotLoaded()).finally(() => {\n dispatch(setModalPartial({sortVisible: true, paths}));\n dispatch(tableSortModalLoadColumns(paths));\n });\n };\n}\n\nexport function hideTableSortModal() {\n return setModalPartial({sortVisible: false, paths: []});\n}\n\nexport function showTableMergeModal(\n paths: Array<string>,\n): ThunkAction<Promise<void>, RootState, any, Action> {\n return (dispatch) => {\n return dispatch(loadPoolTreesIfNotLoaded()).finally(() => {\n dispatch(\n setModalPartial({\n mergeVisible: true,\n paths,\n }),\n );\n dispatch(tableSortModalLoadColumns(paths));\n });\n };\n}\n\nexport function hideTableMergeModal() {\n return setModalPartial({mergeVisible: false, paths: []});\n}\n\nexport function tableSortModalLoadColumns(\n paths: Array<string>,\n): ThunkAction<any, RootState, any, Action> {\n return (dispatch) => {\n if (!paths?.length) {\n return undefined;\n }\n const requests = map_(paths, (path) => {\n return {\n command: 'get' as const,\n parameters: {path: `${path}/@schema`},\n };\n });\n return ytApiV3Id\n .executeBatch(YTApiId.navigationTableSortLoadColumns, {requests})\n .then((results: Array<any>) => {\n const error = getBatchError(\n results,\n 'Column names cannot be loaded, autocompletion might not work properly',\n );\n if (error) {\n dispatch(setModalPartial({error}));\n return;\n }\n const columns: {[name: string]: boolean} = {};\n forEach_(results, ({output}) => {\n forEach_(ypath.getValue(output), ({name}) => {\n columns[name] = true;\n });\n });\n dispatch(\n setModalPartial({\n suggestColumns: sortBy_(\n map_(columns, (_v, name) => name),\n (name) => toLower_(name),\n ),\n }),\n );\n })\n .catch((error: any) => {\n return dispatch(\n setModalPartial({\n error,\n }),\n );\n });\n };\n}\n\ninterface SortParams {\n input_table_paths: Array<string>;\n output_table_path: {$value: string; $attributes: Record<string, string>};\n sort_by: Array<{name: string; sort_order: 'ascending' | 'descending'}>;\n pool?: string;\n}\n\nexport function runTableSort(spec: SortParams): TableMergeSortThunkAction {\n return () => {\n const parameters = {\n spec,\n ...makeUiMarker(`${Page.NAVIGATION}:sort`),\n };\n return wrapApiPromiseByToaster(yt.v3.sort(parameters), {\n toasterName: 'table_sort_' + spec.output_table_path,\n successContent(res: string) {\n const opId = JSON.parse(res);\n return (\n <AppStoreProvider>\n <OperationShortInfo\n id={opId}\n type={'sort'}\n output_attribute_name={'/spec/output_table_path'}\n />\n </AppStoreProvider>\n );\n },\n successTitle: 'Sort operation is started',\n errorTitle: 'Sort operation is failed',\n autoHide: false,\n });\n };\n}\n\nexport const loadStorageAttributes =\n (path: string): TableMergeSortThunkAction =>\n async (dispatch, getState) => {\n const state = getState();\n const outputPathAttributes = getNavigationTableOutputPathAttributes(state);\n\n const response: Record<PathAttribute, string> = await wrapApiPromiseByToaster(\n ytApiV3Id.get(YTApiId.attributesEditorGetAttrs, {\n parameters: {\n path: path + '/@',\n attributes: [\n PathAttribute.OPTIMIZE_FOR,\n PathAttribute.COMPRESSION_CODEC,\n PathAttribute.ERASURE_CODEC,\n ],\n },\n }),\n {\n toasterName: 'get_table_attributes',\n errorTitle: 'Get table attributes request is failed',\n autoHide: false,\n skipSuccessToast: true,\n ...USE_SKIP_ERROR_FN_NODE_DOES_NOT_EXIST,\n },\n );\n\n Object.entries(outputPathAttributes).forEach(([key, attribute]) => {\n dispatch(changeAttribute({...attribute, value: response[key as PathAttribute]}));\n });\n };\n\ninterface MergeParams {\n pool: string;\n pool_trees: Array<string>;\n input_table_paths: Array<string>;\n output_table_path: string;\n merge_by: Array<string>;\n mode: 'unordered' | 'sorted' | 'ordered';\n}\n\nexport function runTableMerge(spec: MergeParams): TableMergeSortThunkAction {\n return () => {\n const parameters = {\n spec,\n ...makeUiMarker(`${Page.NAVIGATION}:merge`),\n };\n return wrapApiPromiseByToaster(yt.v3.merge(parameters), {\n toasterName: 'table_merge_' + spec.output_table_path,\n successContent(res: string) {\n const opId = JSON.parse(res);\n return (\n <AppStoreProvider>\n <OperationShortInfo\n id={opId}\n type={'merge'}\n output_attribute_name={'/spec/output_table_path'}\n />\n </AppStoreProvider>\n );\n },\n successTitle: 'Merge operation is started',\n errorTitle: 'Merge operation is failed',\n autoHide: false,\n });\n };\n}\n\nlet cancelTokenSrc: Pick<CancelTokenSource, 'cancel'> = {cancel: () => {}};\n\nexport function isPathStaticTable(path: string) {\n if (!path) return;\n\n cancelTokenSrc.cancel();\n return ytApiV3Id\n .get(\n YTApiId.navigationIsStaticTable,\n {\n path,\n attributes: ['type', 'dynamic'],\n },\n (cancelSrc: CancelTokenSource) => {\n cancelTokenSrc = cancelSrc;\n },\n )\n .then((d: any) => {\n const type = ypath.getValue(d, '/@type');\n const isDynamic = ypath.getValue(d, '/@dynamic');\n return type !== CypressNodeTypes.TABLE || isDynamic\n ? 'Please make sure the destination is an existing static table'\n : undefined;\n })\n .catch((e: any) => {\n if (axios.isCancel(e)) {\n return undefined;\n }\n return e?.message || 'Cannot get type of node';\n });\n}\n","import map_ from 'lodash/map';\n\nimport {createSelector} from 'reselect';\n\nexport const getCreateTableModalState = (state) => state.navigation.modals.createTable;\nexport const isCreateTableModalVisible = (state) => state.navigation.modals.createTable.showModal;\nexport const getCreateTableLockSuggestions = (state) =>\n state.navigation.modals.createTable.columnLockSuggestions;\nexport const getCreateTableGroupSuggestions = (state) =>\n state.navigation.modals.createTable.columnGroupSuggestions;\n\nexport const getColumnLockSuggestions = createSelector([getCreateTableLockSuggestions], (locks) => {\n const res = map_(locks, (item) => item);\n return res;\n});\n\nexport const getColumnGroupSuggestions = createSelector(\n [getCreateTableGroupSuggestions],\n (groups) => {\n const res = map_(groups, (item) => item);\n return res;\n },\n);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport Icon from '../Icon/Icon';\n\nimport './ErrorMessage.scss';\n\nconst b = block('error-message');\n\nfunction ErrorMessage({message, className}) {\n return (\n <div className={b(null, className)}>\n <Icon awesome=\"exclamation-circle\" />\n\n <span className={b('message-text')}>{message}</span>\n </div>\n );\n}\n\nErrorMessage.propTypes = {\n message: PropTypes.string.isRequired,\n className: PropTypes.string,\n};\n\nexport default ErrorMessage;\n","import React, {Component, FocusEvent, Key, KeyboardEvent, MouseEvent} from 'react';\nimport {connect} from 'react-redux';\nimport ReactList from 'react-list';\nimport block from 'bem-cn-lite';\n\nimport debounce_ from 'lodash/debounce';\nimport find_ from 'lodash/find';\nimport isEmpty_ from 'lodash/isEmpty';\n\nimport {Popup, TextInput} from '@gravity-ui/uikit';\n\nimport thorYPath from '../../common/thor/ypath';\n\nimport Icon from '../../components/Icon/Icon';\nimport ErrorMessage from '../../components/ErrorMessage/ErrorMessage';\n\nimport {\n filterByCurrentPath,\n getCompletedPath,\n getIconNameForType,\n getNextSelectedIndex,\n getPrevSelectedIndex,\n} from '../../utils/navigation/path-editor';\nimport {\n loadSuggestionsList,\n removeActiveRequests,\n} from '../../store/actions/navigation/path-editor/path-editor';\nimport {RootState} from '../../store/reducers';\nimport {KeyCode} from '../../constants/index';\nimport {UseHotkeysScope} from '../../hooks/use-hotkeysjs-scope';\n\nimport './PathEditor.scss';\n\ninterface Suggestion {\n parentPath: string;\n childPath: string;\n path: string;\n targetPathBroken?: boolean;\n type?: string;\n dynamic?: unknown;\n}\n\ntype SuggestionFilter = (suggestions: Suggestion[]) => Suggestion[];\n\nexport interface EventPayload {\n path: string;\n}\n\nexport interface PathEditorProps {\n suggestions: Suggestion[];\n suggestionsError?: boolean;\n errorMessage?: string;\n loadSuggestionsList: (path: string, customFilter?: SuggestionFilter) => void;\n removeActiveRequests: () => void;\n // from parent component\n className?: string;\n placeholder?: string;\n defaultPath?: string;\n disabled?: boolean;\n autoFocus?: boolean;\n hasClear?: boolean;\n showErrors?: boolean;\n customFilter?: SuggestionFilter;\n onChange?: (newPath: string) => void;\n onFocus?: (e: FocusEvent<HTMLInputElement>, payload: EventPayload) => void;\n onBlur?: (path: string) => void;\n onApply?: (newPath: string) => void;\n onCancel?: () => void;\n}\n\ninterface PathEditorState {\n path: string;\n actualSuggestions: Suggestion[];\n inputFocus: boolean;\n inputChange: boolean;\n selectedIndex: number;\n}\n\nconst debounceTime = 300;\nconst b = block('path-editor');\n\nexport class PathEditor extends Component<PathEditorProps, PathEditorState> {\n static defaultProps: Partial<PathEditorProps> = {\n errorMessage: 'Oops, something went wrong',\n placeholder: 'Enter the path...',\n suggestionsError: false,\n autoFocus: false,\n showErrors: true,\n defaultPath: undefined,\n disabled: false,\n hasClear: false,\n };\n\n static getDerivedStateFromProps(props: PathEditorProps, state: PathEditorState) {\n const res = {};\n if (state.inputFocus && state.inputChange) {\n Object.assign(res, {\n actualSuggestions: props.suggestions.length\n ? filterByCurrentPath(state.path, props.suggestions)\n : [],\n });\n }\n\n if (state.path === undefined && props.defaultPath !== undefined) {\n Object.assign(res, {\n path: props.defaultPath,\n });\n }\n\n return isEmpty_(res) ? null : res;\n }\n\n state: PathEditorState;\n\n private suggestionsList = React.createRef<HTMLDivElement>();\n private input = React.createRef<HTMLInputElement>();\n\n constructor(props: PathEditorProps) {\n super(props);\n\n this.debounceLoading = debounce_(this.debounceLoading, debounceTime);\n\n this.state = {\n path: props.defaultPath ?? '',\n actualSuggestions: [],\n inputFocus: false,\n inputChange: false,\n selectedIndex: -1,\n };\n }\n\n componentDidMount() {\n const {loadSuggestionsList, customFilter, autoFocus} = this.props;\n const {path} = this.state;\n\n if (path) {\n loadSuggestionsList(path, customFilter);\n }\n if (autoFocus) {\n this._setFocus();\n }\n }\n\n componentDidUpdate(prevProps: PathEditorProps) {\n if (prevProps.disabled && !this.props.disabled && this.input.current) {\n this._setFocus();\n }\n }\n\n componentWillUnmount() {\n this.props.removeActiveRequests();\n }\n\n _setFocus() {\n this.input.current?.focus();\n }\n\n get inputWidth() {\n // Is there a way to avoid using private _control property?\n return this.input.current && this.input.current.offsetWidth - 2;\n }\n\n /**\n * @deprecated Please replace usages of it to direct call.\\\n * For example: use `onFocus?.(event, payload)` instead `callCallback(onFocus, [event, payload])`.\\\n * Also, pass event as first agument of callback.\n */\n callCallback<T extends unknown[] = unknown[]>(\n cb: undefined | ((...args: T) => unknown),\n ...params: T\n ) {\n if (typeof cb === 'function') {\n return cb(...params);\n }\n\n return undefined;\n }\n\n debounceLoading(path: string) {\n const {loadSuggestionsList, customFilter, onChange} = this.props;\n\n loadSuggestionsList(path, customFilter);\n this.callCallback(onChange, path);\n }\n\n hideSuggestions = () => {\n this.setState({inputFocus: false, selectedIndex: -1});\n };\n\n selectPrevSuggestion() {\n const {selectedIndex, actualSuggestions} = this.state;\n\n const prevIndex = getPrevSelectedIndex(actualSuggestions, selectedIndex);\n this.setState({selectedIndex: prevIndex});\n }\n\n selectNextSuggestion() {\n const {selectedIndex, actualSuggestions} = this.state;\n\n const nextIndex = getNextSelectedIndex(actualSuggestions, selectedIndex);\n this.setState({selectedIndex: nextIndex});\n }\n\n handleInputChange = (path: string) => {\n this.setState({path, selectedIndex: -1, inputChange: true});\n this.debounceLoading(path);\n };\n\n handleInputFocus = (e: FocusEvent<HTMLInputElement>) => {\n const {onFocus} = this.props;\n const {path} = this.state;\n\n this.setState({inputFocus: true});\n onFocus?.(e, {path});\n };\n\n handleInputBlur = () => {\n const {onBlur} = this.props;\n const {path} = this.state;\n\n this.hideSuggestions();\n this.callCallback(onBlur, path);\n };\n\n handleEnterClick(event: KeyboardEvent<HTMLInputElement>) {\n event.preventDefault();\n\n const {selectedIndex, actualSuggestions} = this.state;\n const {onApply} = this.props;\n const inputPath = event.currentTarget.value;\n\n if (selectedIndex === -1) {\n this.setState({path: inputPath, selectedIndex: -1});\n this.callCallback(onApply, inputPath);\n } else {\n const suggestion = find_(actualSuggestions, (_, index) => index === selectedIndex);\n const completedPath = getCompletedPath(suggestion);\n\n this.handleInputChange(completedPath);\n }\n }\n\n handleEscClick() {\n const {onCancel} = this.props;\n\n this.input.current?.blur();\n this.callCallback(onCancel);\n }\n\n handleTabClick(event: KeyboardEvent<HTMLInputElement>) {\n event.preventDefault();\n const {actualSuggestions} = this.state;\n\n if (actualSuggestions.length === 1) {\n const completedPath = getCompletedPath(actualSuggestions[0]);\n\n this.handleInputChange(completedPath);\n } else if (actualSuggestions.length > 1) {\n this.selectNextSuggestion();\n }\n }\n\n handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n const key = event.keyCode;\n\n switch (key) {\n case KeyCode.ARROW_DOWN:\n this.selectNextSuggestion();\n break;\n case KeyCode.ARROW_UP:\n this.selectPrevSuggestion();\n break;\n case KeyCode.ENTER:\n this.handleEnterClick(event);\n break;\n case KeyCode.ESCAPE:\n this.handleEscClick();\n break;\n case KeyCode.TAB:\n this.handleTabClick(event);\n break;\n }\n };\n\n renderInput() {\n const {placeholder, autoFocus, hasClear, disabled} = this.props;\n const {path} = this.state;\n\n return (\n <TextInput\n onKeyDown={this.handleKeyDown}\n onUpdate={this.handleInputChange}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n placeholder={placeholder}\n hasClear={hasClear}\n autoFocus={autoFocus}\n disabled={disabled}\n controlRef={this.input}\n value={path}\n />\n );\n }\n\n renderItem = (index: number, key: Key) => {\n const {selectedIndex, actualSuggestions} = this.state;\n\n const item = actualSuggestions[index];\n const {type, dynamic} = item;\n const iconType = type === 'table' && dynamic ? 'table_dynamic' : type;\n const completedPath = getCompletedPath(item);\n const isSelected = index === selectedIndex ? 'yes' : 'no';\n const iconName = getIconNameForType(iconType, item.targetPathBroken);\n\n const mouseDownHandler = (event: MouseEvent<HTMLDivElement>) => {\n this.handleInputChange(completedPath);\n event.preventDefault();\n };\n\n let lastFragment: string | undefined = '';\n try {\n const {fragments} = new thorYPath.YPath(item.path, 'absolute');\n lastFragment = fragments[fragments.length - 1]?.name;\n } catch {}\n\n return (\n <div\n key={key}\n onMouseDown={mouseDownHandler}\n className={b('item', {selected: isSelected})}\n >\n <Icon awesome={iconName} />\n\n <span className={b('item-path')}>\n {lastFragment ? `\\u2026/${lastFragment}` : item.path}\n </span>\n </div>\n );\n };\n\n renderSuggestions() {\n const {actualSuggestions} = this.state;\n\n return actualSuggestions.length ? (\n <ReactList\n itemRenderer={this.renderItem}\n length={actualSuggestions.length}\n type=\"simple\"\n />\n ) : null;\n }\n\n renderError() {\n const {errorMessage} = this.props;\n\n if (!errorMessage) {\n return;\n }\n\n return <ErrorMessage className={b('item', {error: true})} message={errorMessage} />;\n }\n\n renderPopup() {\n const {suggestionsError, showErrors} = this.props;\n const {actualSuggestions, inputFocus} = this.state;\n\n const width = this.inputWidth || 0;\n const isVisible = Boolean(\n (actualSuggestions.length || (suggestionsError && showErrors)) && inputFocus,\n );\n const content =\n suggestionsError && showErrors ? this.renderError() : this.renderSuggestions();\n\n return (\n <Popup\n className={b('popup')}\n placement={['bottom-start', 'top-start']}\n onClose={this.hideSuggestions}\n anchorRef={this.input}\n open={isVisible}\n offset={[0, 0]}\n >\n <div className={b('items')} style={{width}} ref={this.suggestionsList}>\n {content}\n </div>\n </Popup>\n );\n }\n\n render() {\n return (\n <div className={b(null, this.props.className)}>\n {this.renderInput()}\n {this.renderPopup()}\n <UseHotkeysScope scope={'path-editor'} visible={this.state.inputFocus} />\n </div>\n );\n }\n}\n\nconst mapStateToProps = ({navigation}: RootState) => ({\n suggestions: navigation.pathEditor.suggestions,\n suggestionsError: navigation.pathEditor.suggestionsError,\n errorMessage: navigation.pathEditor.errorMessage,\n});\n\nexport default connect(mapStateToProps, {\n loadSuggestionsList,\n removeActiveRequests,\n})(PathEditor);\n","import {FETCH_SUGGESTIONS} from '../../../../constants/navigation/path-editor';\nimport {\n loadSuggestions,\n pathEditorRequests,\n preparePath,\n} from '../../../../utils/navigation/path-editor';\n\nexport function loadSuggestionsList(path, customFilter) {\n return (dispatch, getState) => {\n const {suggestionsPath, suggestionsLoaded} = getState().navigation.pathEditor;\n let currentParentPath;\n\n try {\n currentParentPath = preparePath(path);\n } catch (error) {\n return dispatch({\n type: FETCH_SUGGESTIONS.FAILURE,\n data: {message: error.message},\n });\n }\n\n if (suggestionsPath === currentParentPath && suggestionsLoaded) {\n return;\n }\n dispatch({type: FETCH_SUGGESTIONS.REQUEST});\n\n return loadSuggestions(path, customFilter)\n .then((suggestions) => {\n dispatch({\n type: FETCH_SUGGESTIONS.SUCCESS,\n data: {suggestions, path, currentParentPath},\n });\n })\n .catch((error) => {\n dispatch({\n type: FETCH_SUGGESTIONS.FAILURE,\n data: {message: error.message},\n });\n });\n };\n}\n\nexport function removeActiveRequests() {\n return (dispatch) => {\n pathEditorRequests.removeAllRequests();\n dispatch({type: FETCH_SUGGESTIONS.CANCELLED});\n };\n}\n","import {CancelTokenSource} from 'axios';\n\nimport CancelHelper, {isCancelled} from '../../../../../utils/cancel-helper';\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {GET_TABLET_ERRORS} from '../../../../../constants/navigation/tabs/tablet-errors';\nimport {YTApiId, ytApiV3Id, ytApiV4Id} from '../../../../../rum/rum-wrap-api';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../../../store/reducers';\nimport {\n NavigationTabletErrorsMode,\n TabletErrorsAction,\n} from '../../../../../store/reducers/navigation/tabs/tablet-errors/tablet-errors-background';\nimport {wrapApiPromiseByToaster} from '../../../../../utils/utils';\n\nimport {loadReplicas} from '../../content/replicated-table';\nimport {TYPED_OUTPUT_FORMAT} from '../../../../../constants';\n\nconst requests = new CancelHelper();\n\ntype TabletErrorsThunkAction<T = unknown> = ThunkAction<T, RootState, unknown, TabletErrorsAction>;\n\nexport function getTabletErrors(): TabletErrorsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n\n dispatch({type: GET_TABLET_ERRORS.REQUEST});\n\n dispatch(loadReplicas());\n\n ytApiV4Id\n .getTabletErrors(YTApiId.navigationTabletErrors, {\n parameters: {path, output_format: TYPED_OUTPUT_FORMAT},\n cancellation: requests.removeAllAndSave,\n })\n .then((tabletErrors) => {\n dispatch({\n type: GET_TABLET_ERRORS.SUCCESS,\n data: {tabletErrors, tabletErrorsPath: path},\n });\n })\n .catch((error) => {\n if (isCancelled(error)) {\n dispatch({type: GET_TABLET_ERRORS.CANCELLED});\n } else {\n dispatch({\n type: GET_TABLET_ERRORS.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\ninterface LoadTabletErrorOptions {\n path: string;\n saveCancelTokenSource: (tokenSource: CancelTokenSource) => void;\n}\n\nexport function loadTabletErrorsCount(options: LoadTabletErrorOptions): TabletErrorsThunkAction {\n const {path} = options;\n return (dispatch) => {\n return wrapApiPromiseByToaster(\n ytApiV3Id.executeBatch(YTApiId.navigationTypeDynamic, {\n parameters: {\n requests: [\n {\n command: 'get',\n parameters: {path: `${path}/@type`},\n },\n {\n command: 'get',\n parameters: {path: `${path}/@dynamic`},\n },\n ],\n },\n cancellation: options.saveCancelTokenSource,\n }),\n {\n toasterName: 'get_type_dynamic',\n skipSuccessToast: true,\n },\n ).then(([{output: type}, {output: dynamic}]) => {\n if (dynamic && (type === 'table' || type === 'replication_log_table')) {\n return dispatch(loadTabletErrorsCountOfDynamicTable(options));\n }\n\n if (type === 'replicated_table') {\n return dispatch(loadTabletErrorsCountOfReplicatedTable(options));\n }\n\n return undefined;\n });\n };\n}\n\nfunction loadTabletErrorsCountOfDynamicTable({\n path,\n saveCancelTokenSource,\n}: LoadTabletErrorOptions): TabletErrorsThunkAction {\n return (dispatch) => {\n return wrapApiPromiseByToaster(\n ytApiV3Id.get(YTApiId.navigationTabletErrorsCountDynTable, {\n parameters: {\n path: `${path}/@tablet_error_count`,\n },\n cancellation: saveCancelTokenSource,\n }),\n {\n toasterName: 'tablet_erros_count',\n skipSuccessToast: true,\n },\n ).then((errorsCount: number) => {\n dispatch(updateTabletErrrosCount(errorsCount, path));\n });\n };\n}\n\nfunction loadTabletErrorsCountOfReplicatedTable({\n path,\n saveCancelTokenSource,\n}: LoadTabletErrorOptions): TabletErrorsThunkAction {\n return (dispatch) => {\n return wrapApiPromiseByToaster(\n ytApiV3Id.executeBatch<number>(YTApiId.navigationTabletErrorsCountReplicatedTable, {\n requests: [\n {\n command: 'get',\n parameters: {\n path: `${path}/@replicas/@error_count`,\n },\n },\n {command: 'get', parameters: {path: `${path}/@tablet_error_count`}},\n ],\n cancellation: saveCancelTokenSource,\n }),\n {\n toasterName: 'tablet_errors_count',\n skipSuccessToast: true,\n },\n ).then((results) => {\n const count = results.reduce((acc, {output = 0}) => acc + output, 0);\n dispatch(updateTabletErrrosCount(count, path));\n });\n };\n}\n\nexport function updateTabletErrrosCount(\n errorsCount: number,\n errorsCountPath: string,\n): TabletErrorsAction {\n return {type: GET_TABLET_ERRORS.PARTITION, data: {errorsCountPath, errorsCount}};\n}\n\nexport function updateTabletErrorsViewMode(viewMode: NavigationTabletErrorsMode) {\n return {type: GET_TABLET_ERRORS.PARTITION, data: {viewMode}};\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","import compact_ from 'lodash/compact';\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\n\nimport {createSelector} from 'reselect';\n\nimport ypath from '../../../common/thor/ypath';\nimport unipika from '../../../common/thor/unipika';\n\nimport type {RootState} from '../../../store/reducers';\nimport type {ValueOf, YTError} from '../../../types';\nimport {getAttributes, getParsedPath, getPath, getTransaction} from './index';\nimport {ParsedPath, prepareNavigationState} from '../../../utils/navigation';\nimport {Tab} from '../../../constants/navigation/index';\n\nimport {getTableMountConfigHasData} from '../../../store/selectors/navigation/content/table-mount-config';\nimport {getAccessLogBasePath} from '../../../config';\nimport {getTabletErrorsBackgroundCount} from '../../../store/selectors/navigation/tabs/tablet-errors-background';\nimport UIFactory from '../../../UIFactory';\nimport {getConfigData} from '../../../config/ui-settings';\nimport {getCluster} from '../global';\n\nexport function getNavigationPathAttributesLoadState(state: RootState) {\n return state.navigation.navigation.loadState;\n}\n\nexport const getNavigationPathAttributes = (state: RootState) =>\n state.navigation.navigation.attributes as any;\nexport const getNavigationIsWritable = (state: RootState) =>\n state.navigation.navigation.isWriteable as boolean;\nexport const getNavigationIsAccountUsable = (state: RootState) =>\n state.navigation.navigation.isAccountUsable as boolean;\nexport const getNavigationCheckPermissionsError = (state: RootState) =>\n state.navigation.navigation.checkPermissionsError as YTError | undefined;\nexport const getMode = (state: RootState) => state.navigation.navigation.mode;\n\nexport const getNavigationPathAccount = createSelector(\n [getNavigationPathAttributes],\n (attrs) => attrs.account,\n);\n\nexport const getNavigationBreadcrumbs = createSelector(\n [getPath, getParsedPath, getTransaction],\n (path: string, parsedPath?: ParsedPath, transaction?: string) => {\n if (parsedPath) {\n return map_(parsedPath?.fragments, (item, index) => {\n return {\n text: item.name,\n state: prepareNavigationState(parsedPath, transaction, index),\n };\n });\n } else {\n return [\n {\n text: prepareBrokenPath(path),\n state: prepareNavigationState(path, transaction),\n },\n ];\n }\n },\n);\n\nfunction prepareBrokenPath(path: string): string {\n return unipika.prettyprint(path, {\n break: false,\n indent: 0,\n binaryAsHex: false,\n });\n}\n\nexport const getNavigationRestorePath = createSelector([getNavigationPathAttributes], (attrs) => {\n return ypath.getValue(attrs, '/_restore_path');\n});\n\nexport const getNavigationOriginatingQueuePath = (state: RootState) =>\n state.navigation.navigation.originatingQueuePath;\n\nexport const getSupportedTabs = createSelector(\n [\n getNavigationPathAttributes,\n getTableMountConfigHasData,\n getTabletErrorsBackgroundCount,\n getNavigationOriginatingQueuePath,\n ],\n (attributes, mountConfigHasData, tabletErrorsCount, originatingQueuePath) => {\n const isDynamic = attributes.dynamic === true;\n const isPipeline = attributes.pipeline_format_version !== undefined;\n const mountConfigVisible = mountConfigHasData || isDynamic;\n const alwaysSupportedTabs = compact_([\n Tab.CONTENT,\n isPipeline && Tab.FLOW,\n Tab.ATTRIBUTES,\n Tab.USER_ATTRIBUTES,\n mountConfigVisible && Tab.MOUNT_CONFIG,\n Tab.ACL,\n Boolean(getAccessLogBasePath()) && Tab.ACCESS_LOG,\n ]);\n const supportedByAttribute = filter_<ValueOf<typeof Tab>>(\n [Tab.SCHEMA, Tab.LOCKS],\n // eslint-disable-next-line no-prototype-builtins\n (name) => attributes?.hasOwnProperty(name),\n );\n\n if (\n (attributes?.type === 'table' && attributes?.dynamic === true) ||\n attributes?.type === 'replicated_table' ||\n attributes?.type === 'replication_log_table'\n ) {\n supportedByAttribute.push(Tab.TABLETS);\n }\n\n if (\n attributes?.dynamic === true &&\n attributes?.sorted === false &&\n (attributes?.type === 'table' ||\n attributes?.type === 'replicated_table' ||\n attributes?.type === 'chaos_replicated_table')\n ) {\n supportedByAttribute.push(Tab.QUEUE);\n }\n\n if (attributes?.type == 'queue_consumer' || attributes?.treat_as_queue_consumer == true) {\n supportedByAttribute.push(Tab.CONSUMER);\n }\n\n if (originatingQueuePath) {\n supportedByAttribute.push(Tab.ORIGINATING_QUEUE);\n }\n\n let supportedTabletErrors: Array<ValueOf<typeof Tab>> = [];\n if (\n tabletErrorsCount > 0 ||\n (getConfigData().allowTabletErrorsAPI && attributes.tablet_error_count >= 0)\n ) {\n supportedTabletErrors = [Tab.TABLET_ERRORS];\n }\n\n const supportedTabs = new Set<string>([\n ...alwaysSupportedTabs,\n ...supportedByAttribute,\n ...supportedTabletErrors,\n ]);\n\n UIFactory.getNavigationExtraTabs().forEach((tab) => {\n if (tab.isSupported(attributes)) {\n supportedTabs.add(tab.value);\n }\n });\n\n return supportedTabs;\n },\n);\n\nexport const getTabs = createSelector(\n [\n getSupportedTabs,\n getTabletErrorsBackgroundCount,\n getAttributes,\n getNavigationOriginatingQueuePath,\n getCluster,\n ],\n (supportedTabs, tabletErrorsCount, attributes, originatingQueuePath, cluster) => {\n const isACO = attributes?.type === 'access_control_object';\n\n const tabs: {\n value: string;\n title: string;\n hotkey?: {\n keys: string;\n tab: string;\n scope: string;\n }[];\n text?: string;\n caption?: string;\n counter?: number;\n url?: string;\n external?: boolean;\n routed?: false;\n }[] = [\n {\n value: Tab.CONSUMER,\n title: 'Go to consumer [Alt+R]',\n hotkey: [\n {\n keys: 'alt+r',\n tab: Tab.CONSUMER,\n scope: 'all',\n },\n ],\n },\n {\n value: Tab.CONTENT,\n title: 'Go to content [Alt+C]',\n text: isACO ? 'Principal ACL' : undefined,\n hotkey: [\n {\n keys: 'alt+c',\n tab: Tab.CONTENT,\n scope: 'all',\n },\n ],\n },\n {\n value: Tab.QUEUE,\n title: 'Go to queue [Alt+Q]',\n hotkey: [\n {\n keys: 'alt+q',\n tab: Tab.QUEUE,\n scope: 'all',\n },\n ],\n },\n {\n value: Tab.ATTRIBUTES,\n title: 'Go to attributes [Alt+A]',\n hotkey: [\n {\n keys: 'alt+a',\n tab: Tab.ATTRIBUTES,\n scope: 'all',\n },\n ],\n caption: 'Attributes',\n },\n {\n value: Tab.USER_ATTRIBUTES,\n title: 'Go to user attributes [Alt+U]',\n hotkey: [\n {\n keys: 'alt+u',\n tab: Tab.USER_ATTRIBUTES,\n scope: 'all',\n },\n ],\n caption: 'User Attributes',\n },\n {\n value: Tab.MOUNT_CONFIG,\n title: 'Go to mount config',\n hotkey: [\n {\n keys: 'alt+m',\n tab: Tab.MOUNT_CONFIG,\n scope: 'all',\n },\n ],\n },\n {\n value: Tab.ACL,\n title: 'Go to ACL [Alt+P]',\n hotkey: [\n {\n keys: 'alt+p',\n tab: Tab.ACL,\n scope: 'all',\n },\n ],\n caption: 'ACL',\n },\n {\n value: Tab.ACCESS_LOG,\n title: 'Access log',\n },\n {\n value: Tab.FLOW,\n title: 'Go to content [Alt+F]',\n text: 'Flow',\n hotkey: [\n {\n keys: 'alt+f',\n tab: Tab.FLOW,\n scope: 'all',\n },\n ],\n },\n {\n value: Tab.LOCKS,\n title: 'Go to locks [Alt+L]',\n hotkey: [\n {\n keys: 'alt+l',\n tab: Tab.LOCKS,\n scope: 'all',\n },\n ],\n counter: ypath.getValue(attributes, '/lock_count'),\n },\n {\n value: Tab.ANNOTATION,\n title: 'Go to annotation [Alt+N]',\n hotkey: [\n {\n keys: 'alt+n',\n tab: Tab.ACL,\n scope: 'all',\n },\n ],\n caption: 'Annotation',\n },\n {\n value: Tab.SCHEMA,\n title: 'Go to schema [Alt+S]',\n hotkey: [\n {\n keys: 'alt+s',\n tab: Tab.SCHEMA,\n scope: 'all',\n },\n ],\n },\n {\n value: Tab.TABLETS,\n title: 'Go to tablets [Alt+T]',\n hotkey: [\n {\n keys: 'alt+t',\n tab: Tab.TABLETS,\n scope: 'all',\n },\n ],\n },\n {\n value: Tab.TABLET_ERRORS,\n title: 'Go to tablets errors',\n counter: tabletErrorsCount > 0 ? tabletErrorsCount : undefined,\n },\n {\n value: Tab.ORIGINATING_QUEUE,\n title: 'Originating queue',\n url: `${window.location.origin}/${cluster}/navigation?path=${originatingQueuePath}`,\n external: true,\n routed: false,\n },\n ];\n\n UIFactory.getNavigationExtraTabs().forEach((extraTab) => {\n for (let i = 0; i < tabs.length; i++) {\n let indexOffset = 0;\n let tabToFind;\n\n if ('before' in extraTab.position) {\n tabToFind = extraTab.position.before;\n }\n\n if ('after' in extraTab.position) {\n tabToFind = extraTab.position.after;\n indexOffset = 1;\n }\n\n if (tabs[i].value === tabToFind) {\n const newTab = {\n value: extraTab.value,\n title: extraTab.title,\n hotkey: extraTab.hotkey\n ? [{keys: extraTab.hotkey, tab: extraTab.value, scope: 'all'}]\n : undefined,\n text: extraTab.text,\n caption: extraTab.caption,\n };\n tabs.splice(i + indexOffset, 0, newTab);\n break;\n }\n }\n });\n\n return tabs.filter((tab) => supportedTabs.has(tab.value));\n },\n);\n\nexport const getEffectiveMode = createSelector([getMode, getTabs], (mode, tabs) => {\n const [firstTab] = tabs;\n\n return mode === Tab.AUTO ? firstTab.value : mode;\n});\n","import {createSelector} from 'reselect';\nimport {RootState} from '../../../../store/reducers';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\nimport {getPath} from '../../../../store/selectors/navigation/index';\n\nimport reduce_ from 'lodash/reduce';\n\nimport {ValueOf, YTError} from '../../../../types';\nimport ypath from '../../../../common/thor/ypath';\n\nconst getTabletErrorsErrorCount = (state: RootState) =>\n state.navigation.tabs.tabletErrorsBackground.errorsCount;\nconst getTabletErrorsErrorCountPath = (state: RootState) =>\n state.navigation.tabs.tabletErrorsBackground.errorsCountPath;\nconst getTabletErrorsRaw = (state: RootState) =>\n state.navigation.tabs.tabletErrorsBackground.tabletErrors;\nconst getTabletErrorsPathRaw = (state: RootState) =>\n state.navigation.tabs.tabletErrorsBackground.tabletErrorsPath;\n\nexport const getTabletErrorsViewMode = (state: RootState) =>\n state.navigation.tabs.tabletErrorsBackground.viewMode;\n\nexport const getTabletErrorsLoadingStatus = createSelector(\n [\n (state: RootState) => state.navigation.tabs.tabletErrorsBackground.loading,\n (state: RootState) => state.navigation.tabs.tabletErrorsBackground.loaded,\n (state: RootState) => state.navigation.tabs.tabletErrorsBackground.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n\nexport const getTabletErrorsBackgroundCount = createSelector(\n [getPath, getTabletErrorsErrorCountPath, getTabletErrorsErrorCount],\n (path, errorCountPath, errorCount) => {\n if (path !== errorCountPath) {\n return 0;\n }\n\n return errorCount;\n },\n);\n\nexport const getTabletErrors = createSelector(\n [getPath, getTabletErrorsPathRaw, getTabletErrorsRaw],\n (path, errPath, errors) => {\n if (path !== errPath) {\n return undefined;\n }\n\n return errors;\n },\n);\n\nexport const getTabletErrorsBackgroundCountNoticeVisbile = createSelector(\n [getTabletErrorsBackgroundCount, getTabletErrors],\n (count, data) => {\n const {tablet_errors, replication_errors} = data || {};\n const tabletErrorsCount = calculateSubitemsCount(tablet_errors);\n const replicationErrorsCount = calculateSubitemsCount(replication_errors);\n\n return count !== tabletErrorsCount + replicationErrorsCount;\n },\n);\n\nfunction calculateSubitemsCount(items?: Record<string, Array<unknown>>) {\n return reduce_(\n items,\n (acc, subItems) => {\n return acc + subItems.length;\n },\n 0,\n );\n}\n\ntype ReplicaId = string;\ntype TabletId = string;\n\nexport const getTabletErrorsReplicationErrors = createSelector([getTabletErrors], (data) => {\n return reduce_(\n data?.replication_errors,\n (acc, errors, replicaId) => {\n const errorsByTablet = reduce_(\n errors,\n (errAcc, error) => {\n const tablet_id = ypath.getValue(error.attributes, '/tablet_id');\n if (!errAcc[tablet_id]) {\n errAcc[tablet_id] = [];\n }\n errAcc[tablet_id].push(error);\n return errAcc;\n },\n {} as ValueOf<typeof acc>,\n );\n acc[replicaId] = errorsByTablet;\n return acc;\n },\n {} as Record<ReplicaId, Record<TabletId, Array<YTError>>>,\n );\n});\n","import React from 'react';\nimport {useDispatch} from 'react-redux';\n\nimport {loadPoolTreesIfNotLoaded} from '../store/actions/global';\nimport {loadDefaultPoolTree} from '../utils/poolTrees';\n\nexport function usePoolTreesLoaded() {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadPoolTreesIfNotLoaded());\n }, [dispatch]);\n}\n\nexport function PoolTreesLoader() {\n usePoolTreesLoaded();\n return null;\n}\n\nexport function useDefaultPoolTree() {\n const [defaultPoolTree, setDefaultPoolTree] = React.useState<string | undefined>();\n\n React.useEffect(() => {\n loadDefaultPoolTree().then((value) => {\n setDefaultPoolTree(value);\n });\n }, []);\n\n return defaultPoolTree;\n}\n\nexport function WaitForDefaultPoolTree({\n children,\n}: {\n children: ({defaultPoolTree}: {defaultPoolTree: string}) => React.ReactNode;\n}) {\n const defaultPoolTree = useDefaultPoolTree();\n\n return defaultPoolTree ? children({defaultPoolTree}) : null;\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import {ThunkAction} from 'redux-thunk';\n\n// @ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {getMetrics} from '../../../common/utils/metrics';\nimport {navigationTrackVisit} from '../../../store/actions/favourites';\nimport {RumWrapper, YTApiId, ytApiV3, ytApiV3Id} from '../../../rum/rum-wrap-api';\nimport {RumMeasureTypes} from '../../../rum/rum-measure-types';\n\nimport {isPathAutoCorrectionSettingEnabled} from '../../../store/selectors/settings';\nimport {getPath, getTransaction} from '../../../store/selectors/navigation';\n\nimport {\n autoCorrectPath,\n cancelRequests,\n getParentPath,\n prepareRequest,\n saveRequestCancellation,\n} from '../../../utils/navigation';\nimport {prepareAttributes} from '../../../utils/index';\nimport {getBatchError} from '../../../utils/utils';\nimport {getPermissionDeniedError} from '../../../utils/errors';\n\nimport {GENERIC_ERROR_MESSAGE, TYPED_OUTPUT_FORMAT} from '../../../constants/index';\nimport {\n CLEAR_TRANSACTION,\n NAVIGATION_PARTIAL,\n SET_MODE,\n SET_TRANSACTION,\n Tab,\n UPDATE_PATH,\n UPDATE_VIEW,\n} from '../../../constants/navigation/index';\nimport {getCluster, getCurrentUserName} from '../../../store/selectors/global';\nimport {fetchTableMountConfig} from '../../../store/actions/navigation/content/table/table-mount-config';\nimport {checkPermissions} from '../../../utils/acl/acl-api';\nimport {loadTabletErrorsCount} from './tabs/tablet-errors/tablet-errors-background';\nimport {getTabs} from '../../../store/selectors/navigation/navigation';\nimport UIFactory from '../../../UIFactory';\nimport {RootState} from '../../../store/reducers';\nimport {NavigationAction, NavigationState} from '../../../store/reducers/navigation/navigation';\nimport {fetchOriginatingQueuePath} from './tabs/queue/exports';\n\ntype NavigationThunk<T = void> = ThunkAction<T, RootState, unknown, NavigationAction>;\n\nexport function updateView(settings: {trackVisit?: boolean} = {}): NavigationThunk {\n return (dispatch, getState) => {\n const state = getState();\n const currentPath = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: UPDATE_VIEW.REQUEST});\n // Update path for use default path and auto correct path\n const path = dispatch(updatePath(currentPath, false));\n cancelRequests();\n\n dispatch(loadTabletErrorsCount({path, saveCancelTokenSource: saveRequestCancellation}));\n\n const requestParams = {\n path,\n transaction,\n };\n\n const cluster = getCluster(state);\n\n const id = new RumWrapper(cluster, RumMeasureTypes.NAVIGATION_PRELOAD);\n\n return id\n .fetch(\n YTApiId.navigationAttributes,\n ytApiV3Id.executeBatch(\n YTApiId.navigationAttributes,\n {\n requests: [\n {\n command: 'get' as const,\n parameters: {\n ...prepareRequest('/@', requestParams),\n attributes: getAttributesToLoad(),\n },\n },\n ],\n output_format: TYPED_OUTPUT_FORMAT,\n },\n saveRequestCancellation,\n ),\n )\n .then((results) => {\n const [attrs] = results;\n\n const error = getBatchError(results, 'Failed to get navigation attributes');\n if (error) {\n throw error;\n }\n\n return attrs.output;\n })\n .then((attributes) => {\n const preparedAttributes = prepareAttributes(attributes, {\n asHTML: false,\n }) as {account: string; type: string};\n\n if (settings.trackVisit) {\n dispatch(navigationTrackVisit(path));\n }\n\n getMetrics().countEvent('navigation_path', {type: preparedAttributes.type});\n\n const user = getCurrentUserName(state);\n const {account} = preparedAttributes;\n\n dispatch({\n type: UPDATE_VIEW.SUCCESS,\n data: {\n attributesWithTypes: attributes,\n attributes: preparedAttributes,\n },\n });\n\n const dispatchAccountPermissions = ({\n isWriteable,\n isAccountUsable,\n checkPermissionsError,\n }: Pick<\n Partial<NavigationState>,\n 'isWriteable' | 'isAccountUsable' | 'checkPermissionsError'\n >) => {\n dispatch({\n type: NAVIGATION_PARTIAL,\n data: {isWriteable, isAccountUsable, checkPermissionsError},\n });\n };\n\n dispatch(fetchTableMountConfig(path));\n dispatch(fetchOriginatingQueuePath());\n\n if (!account) {\n /**\n * If account is not defined we just pretend that everything is awesome\n * and the code works the same as there are no any checks of permissions.\n */\n return dispatchAccountPermissions({\n isWriteable: true,\n isAccountUsable: true,\n });\n }\n\n checkPermissions(\n [\n {\n user,\n permission: 'write',\n path,\n transaction_id: transaction,\n },\n {\n user,\n permission: 'use',\n path: `//sys/accounts/${account}`,\n transaction_id: transaction,\n },\n ],\n YTApiId.navigationCheckPermissions,\n )\n .then(([{action: writeAction}, {action: useAction}]) => {\n dispatchAccountPermissions({\n isWriteable: writeAction === 'allow',\n isAccountUsable: useAction === 'allow',\n });\n })\n .catch((checkPermissionsError) => {\n dispatchAccountPermissions({checkPermissionsError});\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({\n type: UPDATE_VIEW.CANCELLED,\n });\n } else {\n const permissionDeniedError = getPermissionDeniedError(error);\n const message = ['Error occurred when loading path.'];\n if (!permissionDeniedError) message.push(GENERIC_ERROR_MESSAGE);\n\n ytApiV3\n .exists({path: '//sys/idm/lock'})\n .catch(() => false)\n .then((isIdmSupported) => {\n dispatch({\n type: UPDATE_VIEW.FAILURE,\n data: {\n message: message.join(' '),\n details: error,\n isIdmSupported,\n },\n });\n });\n }\n });\n };\n}\n\nexport function setMode(mode: NavigationState['mode']): NavigationThunk {\n return (dispatch, getState) => {\n const [firstTab] = getTabs(getState());\n\n dispatch({\n type: SET_MODE,\n data: mode === firstTab?.value ? Tab.AUTO : mode,\n });\n };\n}\n\nexport function onTransactionChange(): NavigationThunk {\n return (dispatch) => {\n dispatch(updateView({trackVisit: true}));\n // Need to update breadcrumbs dimensions after transaction change\n window.dispatchEvent(new Event('resize'));\n };\n}\n\nexport function setTransaction(transaction?: string): NavigationThunk {\n return (dispatch) => {\n dispatch({\n type: SET_TRANSACTION,\n data: transaction,\n });\n dispatch(onTransactionChange());\n };\n}\n\nexport function clearTransaction(): NavigationThunk {\n return (dispatch) => {\n dispatch({\n type: CLEAR_TRANSACTION,\n });\n dispatch(onTransactionChange());\n };\n}\n\nexport function updatePath(path: string, shouldUpdateContentMode = true): NavigationThunk<string> {\n return (dispatch, getState) => {\n const autoCorrectionEnabled = isPathAutoCorrectionSettingEnabled(getState());\n\n const correctedPath = autoCorrectionEnabled ? autoCorrectPath(path) : path;\n\n dispatch({\n type: UPDATE_PATH,\n data: {\n path: correctedPath,\n shouldUpdateContentMode,\n },\n });\n\n return correctedPath;\n };\n}\n\nexport function navigateParent(): NavigationThunk {\n return (dispatch, getState) => {\n const {path} = getState().navigation.navigation;\n const nextPath = getParentPath(path);\n dispatch(updatePath(nextPath));\n };\n}\n\nconst attributesToLoad = [\n '_format',\n '_read_schema',\n '_restore_path',\n '_yql_key_meta',\n '_yql_op_id',\n '_yql_row_spec',\n '_yql_subkey_meta',\n '_yql_type',\n '_yql_value_meta',\n 'access_time',\n 'account',\n 'acl',\n 'atomicity',\n 'broken',\n 'chunk_count',\n 'chunk_row_count',\n 'cluster_name',\n 'compressed_data_size',\n 'compression_codec',\n 'compression_ratio',\n 'creation_time',\n 'data_weight',\n 'default_disk_space',\n 'disk_space',\n 'dynamic',\n 'effective_expiration',\n 'enable_dynamic_store_read',\n 'erasure_codec',\n 'expiration_time',\n 'expiration_timeout',\n 'id',\n 'in_memory_mode',\n 'key',\n 'key_columns',\n 'leader_controller_address',\n 'lock_count',\n 'lock_mode',\n 'locks',\n 'mode',\n 'modification_time',\n 'monitoring_cluster',\n 'monitoring_project',\n 'optimize_for',\n 'owner',\n 'path',\n 'pipeline_format_version',\n 'primary_medium',\n 'queue_static_export_destination',\n 'remount_needed_tablet_count',\n 'replica_path',\n 'replicated_table_options',\n 'replication_factor',\n 'resource_usage',\n 'schema',\n 'schema_mode',\n 'security_tags',\n 'sorted',\n 'sorted_by',\n 'start_time',\n 'state',\n 'tablet_cell_bundle',\n 'tablet_count',\n 'tablet_error_count',\n 'tablet_state',\n 'target_path',\n 'timeout',\n 'title',\n 'treat_as_queue_consumer',\n 'type',\n 'uncompressed_data_size',\n];\n\nfunction getAttributesToLoad() {\n const additionalAttributes: Array<string> = [];\n\n UIFactory.getNavigationExtraTabs().forEach((extraTab) => {\n additionalAttributes.push(...extraTab.additionalAttributes);\n });\n\n const attributesSet = new Set([...attributesToLoad, ...additionalAttributes]);\n\n return [...attributesSet];\n}\n\nexport function setNavigationSidePanelMode(\n sidePanelMode: NavigationState['sidePanelMode'],\n): NavigationAction {\n return {type: NAVIGATION_PARTIAL, data: {sidePanelMode}};\n}\n","// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {TABLE_MOUNT_CONFIG} from '../../../../../constants/navigation/content/table';\nimport {ThunkAction} from 'redux-thunk';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport {RootState} from '../../../../../store/reducers';\nimport {TableMountConfigAction} from '../../../../../store/reducers/navigation/content/table/table-mount-config';\nimport {isCancelled} from '../../../../../utils/cancel-helper';\n\ntype TableMountConfigThunkAction = ThunkAction<unknown, RootState, unknown, TableMountConfigAction>;\n\nexport function fetchTableMountConfig(path: string): TableMountConfigThunkAction {\n return (dispatch) => {\n dispatch({type: TABLE_MOUNT_CONFIG.REQUEST});\n\n return ytApiV3Id\n .executeBatch(YTApiId.navigationTableMountConfig, {\n requests: [{command: 'get', parameters: {path: `${path}/@mount_config`}}],\n })\n .then(([{output, error}]) => {\n if (error && error?.code !== yt.codes.NODE_DOES_NOT_EXIST) {\n dispatch({type: TABLE_MOUNT_CONFIG.FAILURE, data: {error}});\n return;\n }\n\n dispatch({\n type: TABLE_MOUNT_CONFIG.SUCCESS,\n data: {data: output},\n });\n })\n .catch((error: any) => {\n if (isCancelled(error)) {\n dispatch({type: TABLE_MOUNT_CONFIG.CANCELLED});\n } else {\n dispatch({type: TABLE_MOUNT_CONFIG.FAILURE, data: {error}});\n }\n });\n };\n}\n","import {ThunkAction, UnknownAction} from '@reduxjs/toolkit';\nimport ypath from '../../../../../common/thor/ypath';\n\nimport {RootState} from '../../../../reducers';\nimport {getAttributes} from '../../../../selectors/navigation';\n\nimport {ytApiV3} from '../../../../../rum/rum-wrap-api';\nimport {SET_ORIGINATING_QUEUE_PATH} from '../../../../../constants/navigation';\ntype AsyncAction<R = void> = ThunkAction<R, RootState, unknown, UnknownAction>;\n\nexport function fetchOriginatingQueuePath(): AsyncAction {\n return async (dispatch, getState) => {\n const state = getState();\n const attributes = getAttributes(state);\n const queueId = ypath.getValue(\n attributes,\n '/queue_static_export_destination/originating_queue_id',\n );\n try {\n const originatingPath = await ytApiV3.executeBatch({\n parameters: {\n requests: [\n {\n command: 'get' as const,\n parameters: {\n path: `#${queueId}/@path`,\n },\n },\n ],\n },\n });\n dispatch({\n type: SET_ORIGINATING_QUEUE_PATH,\n data: originatingPath[0].output,\n });\n } catch (error: any) {}\n };\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n"],"names":["getNavigationTableMountConfig","state","navigation","content","tableMountConfig","getTableMountConfigHasData","createSelector","data","error","isEmpty_","openCreateTableModal","parentDirectory","dispatch","type","CREATE_TABLE_MODAL_DATA_FIELDS","_objectSpread","initialState","showModal","closeCreateTableModal","toaster","Toaster","createTable","path","attributes","getState","params","what","dynamic","cluster","getCluster","yt","create","then","updateView","add","name","timeout","theme","title","_jsxs","React","children","_jsx","Link","url","genNavigationUrl","axios","isCancel","_error$response","response","code","message","concat","actions","label","onClick","showErrorPopup","Promise","reject","setCreateTableKeyColumns","keyColumns","setCreateTableColumnsOrder","columnsOrder","setCreateTableLockSuggestions","allColumnLockValues","arguments","length","undefined","columnLockSuggestions","uniq_","sort","setCreateTableGroupSuggestions","allColumnGroups","columnGroupSuggestions","block","cn","OperationShortInfo","props","id","output_attribute_name","_React$useState","_React$useState2","_slicedToArray","operation","setOperation","finishTimeRaw","ypath","getValue","timerId","setInterval","getOperation","output_format","TYPED_OUTPUT_FORMAT","operation_id","clearInterval","useSelector","output","startTime","moment","diff","className","MetaTable","items","key","value","_toConsumableArray","format","TimeDuration","OperationState","ClickableText","_ref","getNavigationTableSortPaths","modals","tableMergeSortModal","paths","getNavigationTableOutputPathAttributes","outputPathAttributes","getNavigationTableAttributesValues","result","Object","prototype","hasOwnProperty","call","getNavigationTableSortError","getNavigationTableSortVisible","sortVisible","getNavigationTableMergeVisible","mergeVisible","getNavigationTableSortSuggestColumns","suggestColumns","requests","CancelHelper","loadReplicas","getPath","transaction","getTransaction","LOAD_REPLICAS_REQUEST","removeAllRequests","ytApiV3Id","get","YTApiId","navigationRTReplicas","parameters","prepareRequest","cancellation","saveCancelToken","replicas","hammer","utils","mapToYSONList","LOAD_REPLICAS_SUCCESS","sortBy_","CANCELLED","LOAD_REPLICAS_CANCELLED","LOAD_REPLICAS_FAILURE","performReplicaAction","mode","auto_replica_tracker","replica","prevMode","prevState","prevAutoReplicaTracker","actionName","filter","Boolean","join","resolve","getMetrics","countEvent","replica_id","enabled","enable_replicated_table_tracker","ytApiV3","alterTableReplica","abortAndReset","updateEnableReplicatedTableTracker","set","useEvent","callback","fnRef","current","memoFn","_fnRef$current","_len","args","Array","_key","apply","useInternalLayoutEffect","window","document","createElement","useLayoutUpdateEffect","deps","firstMountRef","useLayoutEffect","firstMount","useSafeState","defaultValue","destroyRef","setValue","updater","ignoreDestroy","hasValue","warned","preWarningFns","warning","valid","note","method","warningOnce","preMessage","fn","push","resetWarned","noteOnce","getOffset","min","max","getDirectionStyle","direction","offset","positionStyle","right","transform","bottom","top","left","getIndex","index","isArray","KeyCode","MAC_ENTER","BACKSPACE","TAB","NUM_CENTER","ENTER","SHIFT","CTRL","ALT","PAUSE","CAPS_LOCK","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","PRINT_SCREEN","INSERT","DELETE","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","QUESTION_MARK","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","META","WIN_KEY_RIGHT","CONTEXT_MENU","NUM_ZERO","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","NUM_MULTIPLY","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NUMLOCK","SEMICOLON","DASH","EQUALS","COMMA","PERIOD","SLASH","APOSTROPHE","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","WIN_KEY","MAC_FF_META","WIN_IME","isTextModifyingKeyEvent","e","keyCode","altKey","ctrlKey","metaKey","isCharacterKey","navigator","userAgent","indexOf","step","includedStart","includedEnd","tabIndex","keyboard","styles","classNames","_excluded","Handle","ref","_getIndex","prefixCls","valueIndex","onStartMove","style","render","dragging","onOffsetChange","onChangeComplete","onFocus","onMouseEnter","restProps","_React$useContext","disabled","range","ariaLabelForHandle","ariaLabelledByForHandle","ariaValueTextFormatterForHandle","handlePrefixCls","onInternalStartMove","divProps","role","onMouseDown","onTouchStart","onKeyDown","which","preventDefault","onKeyUp","handleNode","handle","values","handleRender","activeHandleRender","draggingIndex","handlesRef","focus","_handlesRef$current$i","activeIndex","setActiveIndex","handleProps","map","node","pointerEvents","_onClick","included","textCls","stopPropagation","marks","markPrefixCls","activeStyle","dotClassName","active","mergedStyle","dots","stepDots","dotSet","Set","forEach","mark","from","dotValue","start","end","replaceCls","trackPrefixCls","offsetStart","offsetEnd","width","height","track","startPoint","trackList","startValue","endValue","Math","list","i","tracksNode","tracks","getPosition","obj","touches","pageX","pageY","Reflect","keys","ownKeys","Slider","_props$prefixCls","_props$disabled","_props$keyboard","autoFocus","onBlur","_props$min","_props$max","_props$step","count","onChange","onBeforeChange","onAfterChange","_props$allowCross","allowCross","_props$pushable","pushable","draggableTrack","reverse","vertical","_props$included","trackStyle","handleStyle","railStyle","dotStyle","activeDotStyle","_props$tabIndex","containerRef","mergedMin","isFinite","mergedMax","mergedStep","mergedPush","markList","markObj","Number","a","b","_useOffset","formatRangeValue","val","formatStepValue","stepValue","round","getDecimal","num","String","split","maxDecimal","fixedValue","toFixed","formatValue","formatNextValue","alignValues","closeValue","closeDist","alignValue","dist","abs","offsetValue","nextValue","originValue","targetDistValue","potentialValues","sign","compareValue","valueDist","potentialValue","cloneValues","offsetChangedValue","changed","needPush","nextValues","pushNum","_offsetChangedValue","_i","_changed","_offsetChangedValue2","_i2","_changed2","_offsetChangedValue3","_i3","_changed3","_offsetChangedValue4","useOffset","_useOffset2","offsetValues","_useMergedState","defaultStateValue","option","postState","_useState","_useState2","innerValue","setInnerValue","mergedValue","postMergedValue","onChangeFn","_useState3","_useState4","prevValue","setPrevValue","prev","useMergedState","_useMergedState2","rawValues","valueList","_valueList$","returnValues","pointCount","slice","_returnValues","rawValuesRef","getTriggerValue","triggerValues","triggerChange","cloneNextValues","obj1","obj2","shallow","refSet","deepEqual","level","circular","has","newLevel","every","finishChange","finishValue","_useDrag","draggingValue","setDraggingValue","_React$useState3","_React$useState4","setDraggingIndex","_React$useState5","_React$useState6","cacheValues","setCacheValues","_React$useState7","_React$useState8","originValues","setOriginValues","mouseMoveEventRef","mouseUpEventRef","removeEventListener","flushValues","some","updateCacheValue","offsetPercent","maxStartOffset","maxEndOffset","formatStartValue","cloneCacheValues","offsetDist","next","sourceValues","targetValues","startValues","initialValues","_getPosition","startX","startY","onMouseMove","event","offSetPercent","_getPosition2","moveX","moveY","offsetX","offsetY","_containerRef$current","getBoundingClientRect","onMouseUp","addEventListener","_useDrag2","onStartDrag","changeToCloseValue","newValue","_document$activeEleme","_document$activeEleme2","activeElement","blur","keyboardValue","setKeyboardValue","mergedDraggableTrack","lastIndexOf","sortedCacheValues","_React$useMemo","_React$useMemo2","_containerRef$current2","contains","context","Provider","percent","clientX","clientY","rail","prepareValue","_ref$value","_ref$min","_ref$max","getParsedValue","textValue","parse","parseFloat","getTextValue","toString","getClosestValue","low","hi","mid","floor","LEFT_INFO_POINT_STYLE","position","marginLeft","display","verticalAlign","textAlign","RIGHT_INFO_POINT_STYLE","flexDirection","RangeInputPicker","_Component","_this","_classCallCheck","_callSuper","wrapperRef","sliderRef","textInputInnerRef","debouncedCallOnUpdate","debouncedHandleOnAfterUpdate","callOnUpdate","onUpdate","currentValue","prepareChange","_this$state","isNaN","actualValue","handleOnAfterUpdate","onAfterUpdate","handleInputBlur","setState","focused","getDisplayTextValue","handleInputFocus","_this$props","handleInputUpdate","patternRegex","test","handleKeyDown","_this$props2","onSubmit","handleSliderChange","_this$state2","handleWrapperClick","slider","target","handleInfoPointClick","_this$props3","_this$props4","handleOutsideClick","onOutsideClick","_this$state3","wrapper","renderItem","renderRangeItem","renderRangeInfoItems","_this$props5","_this$props5$infoPoin","infoPointsCount","_this$props5$minValue","minValue","_this$props5$maxValue","maxValue","infoItems","point","pointWidth","pointsRange","assign","renderInfoItems","_this$props$infoPoint","_this$state4","points","_ref2","mapInfoPoints","el","arr","ceil","range_","getInfoPoints","reduce","acc","debounce_","debounceDelay","getPreparedState","_inherits","_createClass","this","cancel","rangeInfoItems","rcSliderInfoItems","_this$props6","placeholder","readOnly","size","pattern","controlProps","_this$state5","TextInput","controlRef","RegExp","displayFormat","currentState","availableValues","_props$minValue","_props$maxValue","_ref$focused","_ref$textValue","v1","v2","prepareAvailableValues","prevProps","nextProps","Component","defaultProps","ASCENDING","DESCENDING","ColumnsWrapper","_React$Component","tabItems","orderedTabItems","onOrderChanged","order","newIndex","oldIndex","moved","setKeyColumns","setOrderedTabItems","toggleKeyColumn","item","onCloneColumn","setTimeout","onAddColumn","duplicate","renderKeyIcon","icon","Tooltip","Button","view","Icon","awesome","DropdownMenu","text","action","switcher","onMoveTab","_ref3","newTabItems","itemToMove","splice","setColumnsOrder","activeTab","rest","_objectWithoutProperties","TabFieldVertical","sortable","wrapTo","prevTabItems","prevOrderedTabItems","res","tabItemsMap","forEach_","itemsToAdd","differenceBy_","_ref4","idsToRemove","_ref5","filtered","filter_","_ref6","map_","_ref7","mapDispatchToProps","ColumnsWrapperConnected","connect","CreateTableTabField","_React$Component2","_this2","_len2","_key2","_this2$props$onCreate","onCreateTab","userOptions","_this3","_excluded2","_tabItems","_toArray","tableSettings","restItems","renderAddColumnRow","virtualized","isTabControl","isTabControlVertical","showTableSortModal","loadPoolTreesIfNotLoaded","setModalPartial","tableSortModalLoadColumns","hideTableSortModal","showTableMergeModal","hideTableMergeModal","command","executeBatch","navigationTableSortLoadColumns","results","getBatchError","columns","_v","toLower_","runTableSort","spec","makeUiMarker","Page","NAVIGATION","wrapApiPromiseByToaster","toasterName","output_table_path","successContent","opId","JSON","AppStoreProvider","successTitle","errorTitle","autoHide","loadStorageAttributes","_asyncToGenerator","_regeneratorRuntime","_callee","wrap","_context","attributesEditorGetAttrs","PathAttribute","OPTIMIZE_FOR","COMPRESSION_CODEC","ERASURE_CODEC","skipSuccessToast","USE_SKIP_ERROR_FN_NODE_DOES_NOT_EXIST","sent","entries","attribute","changeAttribute","stop","_x","_x2","runTableMerge","merge","cancelTokenSrc","isPathStaticTable","navigationIsStaticTable","cancelSrc","d","isDynamic","CypressNodeTypes","TABLE","getCreateTableModalState","isCreateTableModalVisible","getColumnLockSuggestions","locks","getColumnGroupSuggestions","groups","PathEditor","_props$defaultPath","suggestionsList","input","hideSuggestions","inputFocus","selectedIndex","handleInputChange","inputChange","debounceLoading","callCallback","ARROW_DOWN","selectNextSuggestion","ARROW_UP","selectPrevSuggestion","handleEnterClick","ESCAPE","handleEscClick","handleTabClick","actualSuggestions","iconType","completedPath","getCompletedPath","isSelected","iconName","getIconNameForType","targetPathBroken","lastFragment","_fragments","fragments","thorYPath","YPath","_unused","selected","defaultPath","loadSuggestionsList","customFilter","_setFocus","removeActiveRequests","_this$input$current","offsetWidth","cb","prevIndex","getPrevSelectedIndex","nextIndex","getNextSelectedIndex","onApply","inputPath","currentTarget","suggestion","find_","_","_this$input$current2","onCancel","hasClear","ReactList","itemRenderer","errorMessage","ErrorMessage","suggestionsError","showErrors","inputWidth","isVisible","renderError","renderSuggestions","Popup","placement","onClose","anchorRef","open","renderInput","renderPopup","UseHotkeysScope","scope","visible","suggestions","filterByCurrentPath","pathEditor","currentParentPath","_getState$navigation$","suggestionsPath","suggestionsLoaded","preparePath","FETCH_SUGGESTIONS","FAILURE","REQUEST","loadSuggestions","SUCCESS","pathEditorRequests","getTabletErrors","GET_TABLET_ERRORS","ytApiV4Id","navigationTabletErrors","removeAllAndSave","tabletErrors","tabletErrorsPath","isCancelled","loadTabletErrorsCount","options","navigationTypeDynamic","saveCancelTokenSource","navigationTabletErrorsCountReplicatedTable","_ref5$output","updateTabletErrrosCount","loadTabletErrorsCountOfReplicatedTable","navigationTabletErrorsCountDynTable","errorsCount","loadTabletErrorsCountOfDynamicTable","errorsCountPath","PARTITION","updateTabletErrorsViewMode","viewMode","Symbol","for","getNavigationPathAttributesLoadState","loadState","getNavigationPathAttributes","getNavigationIsWritable","isWriteable","getNavigationIsAccountUsable","isAccountUsable","getNavigationCheckPermissionsError","checkPermissionsError","getMode","getNavigationPathAccount","attrs","account","getNavigationBreadcrumbs","getParsedPath","parsedPath","prepareNavigationState","prepareBrokenPath","unipika","prettyprint","break","indent","binaryAsHex","getNavigationRestorePath","getNavigationOriginatingQueuePath","originatingQueuePath","getSupportedTabs","getTabletErrorsBackgroundCount","mountConfigHasData","tabletErrorsCount","isPipeline","pipeline_format_version","mountConfigVisible","alwaysSupportedTabs","compact_","Tab","CONTENT","FLOW","ATTRIBUTES","USER_ATTRIBUTES","MOUNT_CONFIG","ACL","getAccessLogBasePath","ACCESS_LOG","supportedByAttribute","SCHEMA","LOCKS","TABLETS","sorted","QUEUE","treat_as_queue_consumer","CONSUMER","ORIGINATING_QUEUE","supportedTabletErrors","getConfigData","allowTabletErrorsAPI","tablet_error_count","TABLET_ERRORS","supportedTabs","UIFactory","getNavigationExtraTabs","tab","isSupported","getTabs","getAttributes","isACO","tabs","hotkey","caption","counter","ANNOTATION","location","origin","external","routed","extraTab","indexOffset","tabToFind","before","after","newTab","getEffectiveMode","firstTab","AUTO","getTabletErrorsViewMode","tabletErrorsBackground","getTabletErrorsLoadingStatus","loading","loaded","calculateLoadingStatus","errorCountPath","errorCount","errPath","errors","getTabletErrorsBackgroundCountNoticeVisbile","tablet_errors","replication_errors","calculateSubitemsCount","reduce_","subItems","getTabletErrorsReplicationErrors","replicaId","errorsByTablet","errAcc","tablet_id","usePoolTreesLoaded","useDispatch","PoolTreesLoader","useDefaultPoolTree","defaultPoolTree","setDefaultPoolTree","loadDefaultPoolTree","WaitForDefaultPoolTree","hasOwn","classes","arg","argType","inner","includes","module","exports","default","settings","currentPath","UPDATE_VIEW","updatePath","cancelRequests","saveRequestCancellation","requestParams","RumWrapper","RumMeasureTypes","NAVIGATION_PRELOAD","fetch","navigationAttributes","getAttributesToLoad","preparedAttributes","prepareAttributes","asHTML","trackVisit","navigationTrackVisit","user","getCurrentUserName","attributesWithTypes","dispatchAccountPermissions","NAVIGATION_PARTIAL","TABLE_MOUNT_CONFIG","navigationTableMountConfig","_ref2$","NODE_DOES_NOT_EXIST","fetchTableMountConfig","queueId","originatingPath","SET_ORIGINATING_QUEUE_PATH","t0","checkPermissions","permission","transaction_id","navigationCheckPermissions","writeAction","useAction","permissionDeniedError","getPermissionDeniedError","GENERIC_ERROR_MESSAGE","exists","isIdmSupported","details","setMode","_getTabs","SET_MODE","onTransactionChange","dispatchEvent","Event","setTransaction","SET_TRANSACTION","clearTransaction","CLEAR_TRANSACTION","shouldUpdateContentMode","correctedPath","isPathAutoCorrectionSettingEnabled","autoCorrectPath","UPDATE_PATH","navigateParent","getParentPath","attributesToLoad","additionalAttributes","attributesSet","setNavigationSidePanelMode","sidePanelMode"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"js/4776.b922a445.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/table-mount-config.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/create-table.js","webpack://@ytsaurus/ui/./src/ui/pages/components/OperationShortInfo/OperationShortInfo.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/table-merge-sort-modal.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/replicated-table.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/hooks/useEvent.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/hooks/useLayoutEffect.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/Dom/canUseDom.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/hooks/useState.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/hooks/useMergedState.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/warning.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/util.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/KeyCode.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/context.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Handles/Handle.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Handles/index.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Marks/Mark.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Marks/index.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Steps/Dot.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Steps/index.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Tracks/Track.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Tracks/index.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/hooks/useDrag.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/utils/set.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/Slider.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/hooks/useOffset.js","webpack://@ytsaurus/ui/./node_modules/rc-util/es/isEqual.js","webpack://@ytsaurus/ui/./node_modules/rc-slider/es/index.js","webpack://@ytsaurus/ui/./src/ui/components/common/RangeInputPicker/utils.ts","webpack://@ytsaurus/ui/./src/ui/components/common/RangeInputPicker/constants.ts","webpack://@ytsaurus/ui/./src/ui/components/common/RangeInputPicker/RangeInputPicker.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/CreateTableModal/CreateTableTabField/CreateTableTabField.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/table-merge-sort-modal.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/create-table.js","webpack://@ytsaurus/ui/./src/ui/components/ErrorMessage/ErrorMessage.js","webpack://@ytsaurus/ui/./src/ui/containers/PathEditor/PathEditor.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/path-editor/path-editor.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/tablet-errors/tablet-errors-background.ts","webpack://@ytsaurus/ui/./node_modules/rc-util/node_modules/react-is/cjs/react-is.production.min.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/navigation.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/tablet-errors-background.ts","webpack://@ytsaurus/ui/./src/ui/hooks/global-pool-trees.ts","webpack://@ytsaurus/ui/./node_modules/classnames/index.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/index.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/table-mount-config.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/queue/exports.ts","webpack://@ytsaurus/ui/./node_modules/rc-util/node_modules/react-is/index.js"],"sourcesContent":["import isEmpty_ from 'lodash/isEmpty';\n\nimport {createSelector} from 'reselect';\nimport {RootState} from '../../../../store/reducers';\n\nexport const getNavigationTableMountConfig = (state: RootState) =>\n state.navigation.content.tableMountConfig;\n\nconst getTableMountConfigData = (state: RootState) =>\n state.navigation.content.tableMountConfig.data || {};\n\nconst getTableMountConfigError = (state: RootState) =>\n state.navigation.content.tableMountConfig.error;\n\nexport const getTableMountConfigHasData = createSelector(\n [getTableMountConfigData, getTableMountConfigError],\n (data, error) => {\n return !isEmpty_(data) || !isEmpty_(error);\n },\n);\n","import React from 'react';\nimport axios from 'axios';\n\nimport uniq_ from 'lodash/uniq';\n\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {updateView} from '../../../../store/actions/navigation';\n\nimport {CREATE_TABLE_MODAL_DATA_FIELDS} from '../../../../constants/navigation/modals/create-table';\nimport {initialState} from '../../../../store/reducers/navigation/modals/create-table';\nimport {showErrorPopup} from '../../../../utils/utils';\nimport Link from '../../../../components/Link/Link';\nimport {genNavigationUrl} from '../../../../utils/navigation/navigation';\nimport {getCluster} from '../../../selectors/global';\n\nexport function openCreateTableModal(parentDirectory) {\n return (dispatch) => {\n dispatch({\n type: CREATE_TABLE_MODAL_DATA_FIELDS,\n data: {...initialState, showModal: true, parentDirectory},\n });\n };\n}\n\nexport function closeCreateTableModal() {\n return (dispatch) => {\n dispatch({\n type: CREATE_TABLE_MODAL_DATA_FIELDS,\n data: {showModal: false},\n });\n };\n}\n\nconst toaster = new Toaster();\n\nexport function createTable(path, attributes) {\n return (dispatch, getState) => {\n const params = {\n path,\n type: 'table',\n attributes,\n };\n\n const what = attributes.dynamic ? 'Dynamic table' : 'Static table';\n const cluster = getCluster(getState());\n\n return yt.v3\n .create(params)\n .then(() => {\n dispatch(updateView());\n toaster.add({\n name: path,\n timeout: 10000,\n theme: 'success',\n title: 'Table created',\n content: (\n <React.Fragment>\n {what} <Link url={genNavigationUrl({cluster, path})}>{path}</Link>{' '}\n successfully created\n </React.Fragment>\n ),\n });\n })\n .catch((error) => {\n if (!axios.isCancel(error)) {\n dispatch({\n type: CREATE_TABLE_MODAL_DATA_FIELDS,\n data: {error},\n });\n const data = error?.response?.data || error?.response || error;\n const {code, message} = data;\n\n toaster.add({\n name: path,\n timeout: 10000,\n theme: 'danger',\n content: `[code ${code}] ${message}`,\n title: 'Table creation failure',\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(data),\n },\n ],\n });\n return Promise.reject(error);\n }\n });\n };\n}\n\nexport function setCreateTableKeyColumns(keyColumns) {\n return (dispatch) => {\n dispatch({\n type: CREATE_TABLE_MODAL_DATA_FIELDS,\n data: {keyColumns},\n });\n };\n}\n\nexport function setCreateTableColumnsOrder(columnsOrder) {\n return (dispatch) => {\n dispatch({\n type: CREATE_TABLE_MODAL_DATA_FIELDS,\n data: {columnsOrder},\n });\n };\n}\n\nexport function setCreateTableLockSuggestions(allColumnLockValues = []) {\n return {\n type: CREATE_TABLE_MODAL_DATA_FIELDS,\n data: {columnLockSuggestions: uniq_(allColumnLockValues.sort())},\n };\n}\n\nexport function setCreateTableGroupSuggestions(allColumnGroups = []) {\n return {\n type: CREATE_TABLE_MODAL_DATA_FIELDS,\n data: {columnGroupSuggestions: uniq_(allColumnGroups.sort())},\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport moment from 'moment';\nimport {useSelector} from 'react-redux';\n\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {getCluster} from '../../../store/selectors/global';\n\nimport MetaTable from '../../../components/MetaTable/MetaTable';\nimport {showErrorPopup} from '../../../utils/utils';\nimport format from '../../../common/hammer/format';\n\nimport ypath from '../../../common/thor/ypath';\nimport {TYPED_OUTPUT_FORMAT} from '../../../constants';\nimport {ClickableText} from '../../../components/ClickableText/ClickableText';\nimport Link from '../../../components/Link/Link';\n\nimport './OperationShortInfo.scss';\n\nconst block = cn('operation-short-info');\n\ninterface Props {\n id: string;\n type?: string;\n output_attribute_name?: string; // example: '/@spec/output_table_path'\n}\n\nexport function OperationShortInfo(props: Props) {\n const {id, type, output_attribute_name} = props;\n\n const [operation, setOperation] = React.useState();\n\n const finishTimeRaw = ypath.getValue(operation, '/finish_time');\n React.useEffect(() => {\n if (finishTimeRaw) {\n return;\n }\n const timerId = setInterval(() => {\n yt.v3\n .getOperation({\n output_format: TYPED_OUTPUT_FORMAT,\n operation_id: id,\n })\n .then((operation: any) => {\n setOperation(operation);\n });\n }, 3000);\n return () => {\n clearInterval(timerId);\n };\n }, [finishTimeRaw, setOperation]);\n\n const cluster = useSelector(getCluster);\n const output = output_attribute_name\n ? ypath.getValue(operation, output_attribute_name) || '...'\n : '...';\n const error = ypath.getValue(operation, '/result/error');\n const code = ypath.getValue(error, '/code');\n\n const startTime = moment(ypath.getValue(operation, '/start_time'));\n const finishTime = moment(finishTimeRaw);\n const diff = finishTime.diff(startTime);\n\n return (\n <div className={block()}>\n <MetaTable\n items={[\n {\n key: 'Id',\n value: <Link url={`/${cluster}/operations/${id}`}>{id}</Link>,\n },\n {\n key: 'Type',\n value: (\n <span className={block('value')}>\n {ypath.getValue(operation, '/type') || type || '...'}\n </span>\n ),\n },\n ...(!output_attribute_name\n ? []\n : [\n {\n key: 'Output',\n value: <span title={output}>{output}</span>,\n },\n ]),\n {\n key: 'Duration',\n value: format.TimeDuration(diff),\n },\n {\n key: 'Status',\n value: (\n <OperationState state={ypath.getValue(operation, '/state') || '...'} />\n ),\n },\n ...(!code || code === '0'\n ? []\n : [\n {\n key: 'Error',\n value: (\n <ClickableText onClick={() => showErrorPopup(error)}>\n {ypath.getValue(error, '/message')}\n </ClickableText>\n ),\n },\n ]),\n ]}\n />\n </div>\n );\n}\n\nfunction OperationState({state}: {state: string}) {\n return <span className={block('state', {state})}>{state}</span>;\n}\n","import {RootState} from '../../../reducers';\nimport {createSelector} from 'reselect';\nimport {PathAttribute} from '../../../reducers/navigation/modals/tableMergeSortModalSlice';\nexport const getNavigationTableSortPaths = (state: RootState) =>\n state.navigation.modals.tableMergeSortModal.paths;\nexport const getNavigationTableOutputPathAttributes = (state: RootState) =>\n state.navigation.modals.tableMergeSortModal.outputPathAttributes;\nexport const getNavigationTableAttributesValues = createSelector(\n [getNavigationTableOutputPathAttributes],\n (outputPathAttributes) => {\n const result: Record<string, string> = {};\n for (const key in outputPathAttributes) {\n if (Object.prototype.hasOwnProperty.call(outputPathAttributes, key)) {\n result[key] = outputPathAttributes[key as PathAttribute].value;\n }\n }\n return result;\n },\n);\nexport const getNavigationTableSortError = (state: RootState) =>\n state.navigation.modals.tableMergeSortModal.error;\nexport const getNavigationTableSortVisible = (state: RootState) =>\n state.navigation.modals.tableMergeSortModal.sortVisible;\nexport const getNavigationTableMergeVisible = (state: RootState) =>\n state.navigation.modals.tableMergeSortModal.mergeVisible;\nexport const getNavigationTableSortSuggestColumns = (state: RootState) =>\n state.navigation.modals.tableMergeSortModal.suggestColumns;\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {getMetrics} from '../../../../common/utils/metrics';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../../../common/hammer';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {TYPED_OUTPUT_FORMAT} from '../../../../constants/index';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {YTApiId, ytApiV3, ytApiV3Id} from '../../../../rum/rum-wrap-api';\n\nimport {\n LOAD_REPLICAS_CANCELLED,\n LOAD_REPLICAS_FAILURE,\n LOAD_REPLICAS_REQUEST,\n LOAD_REPLICAS_SUCCESS,\n} from '../../../../constants/navigation/content/replicated-table';\nimport {updateView} from '..';\n\nimport sortBy_ from 'lodash/sortBy';\n\nconst requests = new CancelHelper();\n\nexport function loadReplicas() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: LOAD_REPLICAS_REQUEST});\n requests.removeAllRequests();\n\n return ytApiV3Id\n .get(YTApiId.navigationRTReplicas, {\n parameters: prepareRequest('/@replicas', {\n path,\n transaction,\n output_format: TYPED_OUTPUT_FORMAT,\n }),\n cancellation: requests.saveCancelToken,\n })\n .then((data) => {\n const replicas = hammer.utils.mapToYSONList(data);\n dispatch({\n type: LOAD_REPLICAS_SUCCESS,\n data: {\n replicas: sortBy_(replicas, '$value'),\n },\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: LOAD_REPLICAS_CANCELLED});\n } else {\n dispatch({\n type: LOAD_REPLICAS_FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function performReplicaAction({mode, state, auto_replica_tracker, replica}) {\n return (dispatch) => {\n const prevMode = ypath.getValue(replica, '/@mode');\n const prevState = ypath.getValue(replica, '/@state');\n\n const prevAutoReplicaTracker = ypath.getValue(replica, '/@enable_replicated_table_tracker');\n\n const actionName = [\n mode !== prevMode && 'mode',\n state !== prevState && 'state',\n prevAutoReplicaTracker !== auto_replica_tracker && 'enable_replicated_table_tracker',\n ]\n .filter(Boolean)\n .join('_');\n if (!actionName) {\n return Promise.resolve();\n }\n\n getMetrics().countEvent('navigation_replicated_table_replica_action', actionName);\n\n const replicaId = ypath.getValue(replica, '');\n const parameters = {\n replica_id: replicaId,\n mode,\n enabled: state === 'enabled',\n enable_replicated_table_tracker: auto_replica_tracker === 'enabled',\n };\n\n return ytApiV3.alterTableReplica(parameters).then(() => dispatch(loadReplicas()));\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: LOAD_REPLICAS_CANCELLED});\n };\n}\n\nexport function updateEnableReplicatedTableTracker(path, value) {\n return (dispatch) => {\n return yt.v3\n .set({path: path + '/@replicated_table_options/enable_replicated_table_tracker'}, value)\n .then(() => {\n dispatch(updateView());\n });\n };\n}\n","import * as React from 'react';\nexport default function useEvent(callback) {\n var fnRef = React.useRef();\n fnRef.current = callback;\n var memoFn = React.useCallback(function () {\n var _fnRef$current;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));\n }, []);\n return memoFn;\n}","import * as React from 'react';\nimport canUseDom from \"../Dom/canUseDom\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nvar useInternalLayoutEffect = process.env.NODE_ENV !== 'test' && canUseDom() ? React.useLayoutEffect : React.useEffect;\nvar useLayoutEffect = function useLayoutEffect(callback, deps) {\n var firstMountRef = React.useRef(true);\n useInternalLayoutEffect(function () {\n return callback(firstMountRef.current);\n }, deps);\n\n // We tell react that first mount has passed\n useInternalLayoutEffect(function () {\n firstMountRef.current = false;\n return function () {\n firstMountRef.current = true;\n };\n }, []);\n};\nexport var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {\n useLayoutEffect(function (firstMount) {\n if (!firstMount) {\n return callback();\n }\n }, deps);\n};\nexport default useLayoutEffect;","export default function canUseDom() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n/**\n * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.\n * We do not make this auto is to avoid real memory leak.\n * Developer should confirm it's safe to ignore themselves.\n */\nexport default function useSafeState(defaultValue) {\n var destroyRef = React.useRef(false);\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n value = _React$useState2[0],\n setValue = _React$useState2[1];\n React.useEffect(function () {\n destroyRef.current = false;\n return function () {\n destroyRef.current = true;\n };\n }, []);\n function safeSetState(updater, ignoreDestroy) {\n if (ignoreDestroy && destroyRef.current) {\n return;\n }\n setValue(updater);\n }\n return [value, safeSetState];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"./useEvent\";\nimport { useLayoutUpdateEffect } from \"./useLayoutEffect\";\nimport useState from \"./useState\";\n/** We only think `undefined` is empty */\nfunction hasValue(value) {\n return value !== undefined;\n}\n\n/**\n * Similar to `useState` but will use props value if provided.\n * Note that internal use rc-util `useState` hook.\n */\nexport default function useMergedState(defaultStateValue, option) {\n var _ref = option || {},\n defaultValue = _ref.defaultValue,\n value = _ref.value,\n onChange = _ref.onChange,\n postState = _ref.postState;\n\n // ======================= Init =======================\n var _useState = useState(function () {\n if (hasValue(value)) {\n return value;\n } else if (hasValue(defaultValue)) {\n return typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n } else {\n return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;\n }\n }),\n _useState2 = _slicedToArray(_useState, 2),\n innerValue = _useState2[0],\n setInnerValue = _useState2[1];\n var mergedValue = value !== undefined ? value : innerValue;\n var postMergedValue = postState ? postState(mergedValue) : mergedValue;\n\n // ====================== Change ======================\n var onChangeFn = useEvent(onChange);\n var _useState3 = useState([mergedValue]),\n _useState4 = _slicedToArray(_useState3, 2),\n prevValue = _useState4[0],\n setPrevValue = _useState4[1];\n useLayoutUpdateEffect(function () {\n var prev = prevValue[0];\n if (innerValue !== prev) {\n onChangeFn(innerValue, prev);\n }\n }, [prevValue]);\n\n // Sync value back to `undefined` when it from control to un-control\n useLayoutUpdateEffect(function () {\n if (!hasValue(value)) {\n setInnerValue(value);\n }\n }, [value]);\n\n // ====================== Update ======================\n var triggerChange = useEvent(function (updater, ignoreDestroy) {\n setInnerValue(updater, ignoreDestroy);\n setPrevValue([mergedValue], ignoreDestroy);\n });\n return [postMergedValue, triggerChange];\n}","/* eslint-disable no-console */\nvar warned = {};\nvar preWarningFns = [];\n\n/**\n * Pre warning enable you to parse content before console.error.\n * Modify to null will prevent warning.\n */\nexport var preMessage = function preMessage(fn) {\n preWarningFns.push(fn);\n};\nexport function warning(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'warning');\n }, message);\n if (finalMessage) {\n console.error(\"Warning: \".concat(finalMessage));\n }\n }\n}\nexport function note(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'note');\n }, message);\n if (finalMessage) {\n console.warn(\"Note: \".concat(finalMessage));\n }\n }\n}\nexport function resetWarned() {\n warned = {};\n}\nexport function call(method, valid, message) {\n if (!valid && !warned[message]) {\n method(false, message);\n warned[message] = true;\n }\n}\nexport function warningOnce(valid, message) {\n call(warning, valid, message);\n}\nexport function noteOnce(valid, message) {\n call(note, valid, message);\n}\nwarningOnce.preMessage = preMessage;\nwarningOnce.resetWarned = resetWarned;\nwarningOnce.noteOnce = noteOnce;\nexport default warningOnce;\n/* eslint-enable */","export function getOffset(value, min, max) {\n return (value - min) / (max - min);\n}\nexport function getDirectionStyle(direction, value, min, max) {\n var offset = getOffset(value, min, max);\n var positionStyle = {};\n switch (direction) {\n case 'rtl':\n positionStyle.right = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateX(50%)';\n break;\n case 'btt':\n positionStyle.bottom = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateY(50%)';\n break;\n case 'ttb':\n positionStyle.top = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateY(-50%)';\n break;\n default:\n positionStyle.left = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateX(-50%)';\n break;\n }\n return positionStyle;\n}\n\n/** Return index value if is list or return value directly */\nexport function getIndex(value, index) {\n return Array.isArray(value) ? value[index] : value;\n}","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nvar KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n /**\n * TAB\n */\n TAB: 9,\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12,\n // NUMLOCK on FF/Safari Mac\n /**\n * ENTER\n */\n ENTER: 13,\n /**\n * SHIFT\n */\n SHIFT: 16,\n /**\n * CTRL\n */\n CTRL: 17,\n /**\n * ALT\n */\n ALT: 18,\n /**\n * PAUSE\n */\n PAUSE: 19,\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n /**\n * ESC\n */\n ESC: 27,\n /**\n * SPACE\n */\n SPACE: 32,\n /**\n * PAGE_UP\n */\n PAGE_UP: 33,\n // also NUM_NORTH_EAST\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n // also NUM_SOUTH_EAST\n /**\n * END\n */\n END: 35,\n // also NUM_SOUTH_WEST\n /**\n * HOME\n */\n HOME: 36,\n // also NUM_NORTH_WEST\n /**\n * LEFT\n */\n LEFT: 37,\n // also NUM_WEST\n /**\n * UP\n */\n UP: 38,\n // also NUM_NORTH\n /**\n * RIGHT\n */\n RIGHT: 39,\n // also NUM_EAST\n /**\n * DOWN\n */\n DOWN: 40,\n // also NUM_SOUTH\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n /**\n * INSERT\n */\n INSERT: 45,\n // also NUM_INSERT\n /**\n * DELETE\n */\n DELETE: 46,\n // also NUM_DELETE\n /**\n * ZERO\n */\n ZERO: 48,\n /**\n * ONE\n */\n ONE: 49,\n /**\n * TWO\n */\n TWO: 50,\n /**\n * THREE\n */\n THREE: 51,\n /**\n * FOUR\n */\n FOUR: 52,\n /**\n * FIVE\n */\n FIVE: 53,\n /**\n * SIX\n */\n SIX: 54,\n /**\n * SEVEN\n */\n SEVEN: 55,\n /**\n * EIGHT\n */\n EIGHT: 56,\n /**\n * NINE\n */\n NINE: 57,\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63,\n // needs localization\n /**\n * A\n */\n A: 65,\n /**\n * B\n */\n B: 66,\n /**\n * C\n */\n C: 67,\n /**\n * D\n */\n D: 68,\n /**\n * E\n */\n E: 69,\n /**\n * F\n */\n F: 70,\n /**\n * G\n */\n G: 71,\n /**\n * H\n */\n H: 72,\n /**\n * I\n */\n I: 73,\n /**\n * J\n */\n J: 74,\n /**\n * K\n */\n K: 75,\n /**\n * L\n */\n L: 76,\n /**\n * M\n */\n M: 77,\n /**\n * N\n */\n N: 78,\n /**\n * O\n */\n O: 79,\n /**\n * P\n */\n P: 80,\n /**\n * Q\n */\n Q: 81,\n /**\n * R\n */\n R: 82,\n /**\n * S\n */\n S: 83,\n /**\n * T\n */\n T: 84,\n /**\n * U\n */\n U: 85,\n /**\n * V\n */\n V: 86,\n /**\n * W\n */\n W: 87,\n /**\n * X\n */\n X: 88,\n /**\n * Y\n */\n Y: 89,\n /**\n * Z\n */\n Z: 90,\n /**\n * META\n */\n META: 91,\n // WIN_KEY_LEFT\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n /**\n * F1\n */\n F1: 112,\n /**\n * F2\n */\n F2: 113,\n /**\n * F3\n */\n F3: 114,\n /**\n * F4\n */\n F4: 115,\n /**\n * F5\n */\n F5: 116,\n /**\n * F6\n */\n F6: 117,\n /**\n * F7\n */\n F7: 118,\n /**\n * F8\n */\n F8: 119,\n /**\n * F9\n */\n F9: 120,\n /**\n * F10\n */\n F10: 121,\n /**\n * F11\n */\n F11: 122,\n /**\n * F12\n */\n F12: 123,\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n /**\n * SEMICOLON\n */\n SEMICOLON: 186,\n // needs localization\n /**\n * DASH\n */\n DASH: 189,\n // needs localization\n /**\n * EQUALS\n */\n EQUALS: 187,\n // needs localization\n /**\n * COMMA\n */\n COMMA: 188,\n // needs localization\n /**\n * PERIOD\n */\n PERIOD: 190,\n // needs localization\n /**\n * SLASH\n */\n SLASH: 191,\n // needs localization\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n // needs localization\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n // needs localization\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n // needs localization\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n // needs localization\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n // needs localization\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n // Firefox (Gecko) fires this for the meta key instead of 91\n /**\n * WIN_IME\n */\n WIN_IME: 229,\n // ======================== Function ========================\n /**\n * whether text and modified key is entered at the same time.\n */\n isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n var keyCode = e.keyCode;\n if (e.altKey && !e.ctrlKey || e.metaKey ||\n // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n }\n\n // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n default:\n return true;\n }\n },\n /**\n * whether character is entered.\n */\n isCharacterKey: function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n }\n\n // Safari sends zero key code for non-latin characters.\n if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n default:\n return false;\n }\n }\n};\nexport default KeyCode;","import * as React from 'react';\nvar SliderContext = /*#__PURE__*/React.createContext({\n min: 0,\n max: 0,\n direction: 'ltr',\n step: 1,\n includedStart: 0,\n includedEnd: 0,\n tabIndex: 0,\n keyboard: true,\n styles: {},\n classNames: {}\n});\nexport default SliderContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"value\", \"valueIndex\", \"onStartMove\", \"style\", \"render\", \"dragging\", \"onOffsetChange\", \"onChangeComplete\", \"onFocus\", \"onMouseEnter\"];\nimport cls from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getDirectionStyle, getIndex } from \"../util\";\nvar Handle = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n value = props.value,\n valueIndex = props.valueIndex,\n onStartMove = props.onStartMove,\n style = props.style,\n render = props.render,\n dragging = props.dragging,\n onOffsetChange = props.onOffsetChange,\n onChangeComplete = props.onChangeComplete,\n onFocus = props.onFocus,\n onMouseEnter = props.onMouseEnter,\n restProps = _objectWithoutProperties(props, _excluded);\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n disabled = _React$useContext.disabled,\n keyboard = _React$useContext.keyboard,\n range = _React$useContext.range,\n tabIndex = _React$useContext.tabIndex,\n ariaLabelForHandle = _React$useContext.ariaLabelForHandle,\n ariaLabelledByForHandle = _React$useContext.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = _React$useContext.ariaValueTextFormatterForHandle,\n styles = _React$useContext.styles,\n classNames = _React$useContext.classNames;\n var handlePrefixCls = \"\".concat(prefixCls, \"-handle\");\n\n // ============================ Events ============================\n var onInternalStartMove = function onInternalStartMove(e) {\n if (!disabled) {\n onStartMove(e, valueIndex);\n }\n };\n var onInternalFocus = function onInternalFocus(e) {\n onFocus === null || onFocus === void 0 || onFocus(e, valueIndex);\n };\n var onInternalMouseEnter = function onInternalMouseEnter(e) {\n onMouseEnter(e, valueIndex);\n };\n\n // =========================== Keyboard ===========================\n var onKeyDown = function onKeyDown(e) {\n if (!disabled && keyboard) {\n var offset = null;\n\n // Change the value\n switch (e.which || e.keyCode) {\n case KeyCode.LEFT:\n offset = direction === 'ltr' || direction === 'btt' ? -1 : 1;\n break;\n case KeyCode.RIGHT:\n offset = direction === 'ltr' || direction === 'btt' ? 1 : -1;\n break;\n\n // Up is plus\n case KeyCode.UP:\n offset = direction !== 'ttb' ? 1 : -1;\n break;\n\n // Down is minus\n case KeyCode.DOWN:\n offset = direction !== 'ttb' ? -1 : 1;\n break;\n case KeyCode.HOME:\n offset = 'min';\n break;\n case KeyCode.END:\n offset = 'max';\n break;\n case KeyCode.PAGE_UP:\n offset = 2;\n break;\n case KeyCode.PAGE_DOWN:\n offset = -2;\n break;\n }\n if (offset !== null) {\n e.preventDefault();\n onOffsetChange(offset, valueIndex);\n }\n }\n };\n var handleKeyUp = function handleKeyUp(e) {\n switch (e.which || e.keyCode) {\n case KeyCode.LEFT:\n case KeyCode.RIGHT:\n case KeyCode.UP:\n case KeyCode.DOWN:\n case KeyCode.HOME:\n case KeyCode.END:\n case KeyCode.PAGE_UP:\n case KeyCode.PAGE_DOWN:\n onChangeComplete === null || onChangeComplete === void 0 || onChangeComplete();\n break;\n }\n };\n\n // ============================ Offset ============================\n var positionStyle = getDirectionStyle(direction, value, min, max);\n\n // ============================ Render ============================\n var divProps = {};\n if (valueIndex !== null) {\n var _getIndex;\n divProps = {\n tabIndex: disabled ? null : getIndex(tabIndex, valueIndex),\n role: 'slider',\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': value,\n 'aria-disabled': disabled,\n 'aria-label': getIndex(ariaLabelForHandle, valueIndex),\n 'aria-labelledby': getIndex(ariaLabelledByForHandle, valueIndex),\n 'aria-valuetext': (_getIndex = getIndex(ariaValueTextFormatterForHandle, valueIndex)) === null || _getIndex === void 0 ? void 0 : _getIndex(value),\n 'aria-orientation': direction === 'ltr' || direction === 'rtl' ? 'horizontal' : 'vertical',\n onMouseDown: onInternalStartMove,\n onTouchStart: onInternalStartMove,\n onFocus: onInternalFocus,\n onMouseEnter: onInternalMouseEnter,\n onKeyDown: onKeyDown,\n onKeyUp: handleKeyUp\n };\n }\n var handleNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n className: cls(handlePrefixCls, _defineProperty(_defineProperty({}, \"\".concat(handlePrefixCls, \"-\").concat(valueIndex + 1), valueIndex !== null && range), \"\".concat(handlePrefixCls, \"-dragging\"), dragging), classNames.handle),\n style: _objectSpread(_objectSpread(_objectSpread({}, positionStyle), style), styles.handle)\n }, divProps, restProps));\n\n // Customize\n if (render) {\n handleNode = render(handleNode, {\n index: valueIndex,\n prefixCls: prefixCls,\n value: value,\n dragging: dragging\n });\n }\n return handleNode;\n});\nif (process.env.NODE_ENV !== 'production') {\n Handle.displayName = 'Handle';\n}\nexport default Handle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"style\", \"onStartMove\", \"onOffsetChange\", \"values\", \"handleRender\", \"activeHandleRender\", \"draggingIndex\", \"onFocus\"];\nimport * as React from 'react';\nimport { getIndex } from \"../util\";\nimport Handle from \"./Handle\";\nvar Handles = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n style = props.style,\n onStartMove = props.onStartMove,\n onOffsetChange = props.onOffsetChange,\n values = props.values,\n handleRender = props.handleRender,\n activeHandleRender = props.activeHandleRender,\n draggingIndex = props.draggingIndex,\n onFocus = props.onFocus,\n restProps = _objectWithoutProperties(props, _excluded);\n var handlesRef = React.useRef({});\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus(index) {\n var _handlesRef$current$i;\n (_handlesRef$current$i = handlesRef.current[index]) === null || _handlesRef$current$i === void 0 || _handlesRef$current$i.focus();\n }\n };\n });\n\n // =========================== Active ===========================\n var _React$useState = React.useState(-1),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activeIndex = _React$useState2[0],\n setActiveIndex = _React$useState2[1];\n var onHandleFocus = function onHandleFocus(e, index) {\n setActiveIndex(index);\n onFocus === null || onFocus === void 0 || onFocus(e);\n };\n var onHandleMouseEnter = function onHandleMouseEnter(e, index) {\n setActiveIndex(index);\n };\n\n // =========================== Render ===========================\n // Handle Props\n var handleProps = _objectSpread({\n prefixCls: prefixCls,\n onStartMove: onStartMove,\n onOffsetChange: onOffsetChange,\n render: handleRender,\n onFocus: onHandleFocus,\n onMouseEnter: onHandleMouseEnter\n }, restProps);\n return /*#__PURE__*/React.createElement(React.Fragment, null, values.map(function (value, index) {\n return /*#__PURE__*/React.createElement(Handle, _extends({\n ref: function ref(node) {\n if (!node) {\n delete handlesRef.current[index];\n } else {\n handlesRef.current[index] = node;\n }\n },\n dragging: draggingIndex === index,\n style: getIndex(style, index),\n key: index,\n value: value,\n valueIndex: index\n }, handleProps));\n }), activeHandleRender && /*#__PURE__*/React.createElement(Handle, _extends({\n key: \"a11y\"\n }, handleProps, {\n value: values[activeIndex],\n valueIndex: null,\n dragging: draggingIndex !== -1,\n render: activeHandleRender,\n style: {\n pointerEvents: 'none'\n },\n tabIndex: null,\n \"aria-hidden\": true\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Handles.displayName = 'Handles';\n}\nexport default Handles;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getDirectionStyle } from \"../util\";\nvar Mark = function Mark(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n children = props.children,\n value = props.value,\n _onClick = props.onClick;\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n includedStart = _React$useContext.includedStart,\n includedEnd = _React$useContext.includedEnd,\n included = _React$useContext.included;\n var textCls = \"\".concat(prefixCls, \"-text\");\n\n // ============================ Offset ============================\n var positionStyle = getDirectionStyle(direction, value, min, max);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(textCls, _defineProperty({}, \"\".concat(textCls, \"-active\"), included && includedStart <= value && value <= includedEnd)),\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: function onMouseDown(e) {\n e.stopPropagation();\n },\n onClick: function onClick() {\n _onClick(value);\n }\n }, children);\n};\nexport default Mark;","import * as React from 'react';\nimport Mark from \"./Mark\";\nvar Marks = function Marks(props) {\n var prefixCls = props.prefixCls,\n marks = props.marks,\n onClick = props.onClick;\n var markPrefixCls = \"\".concat(prefixCls, \"-mark\");\n\n // Not render mark if empty\n if (!marks.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: markPrefixCls\n }, marks.map(function (_ref) {\n var value = _ref.value,\n style = _ref.style,\n label = _ref.label;\n return /*#__PURE__*/React.createElement(Mark, {\n key: value,\n prefixCls: markPrefixCls,\n style: style,\n value: value,\n onClick: onClick\n }, label);\n }));\n};\nexport default Marks;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getDirectionStyle } from \"../util\";\nvar Dot = function Dot(props) {\n var prefixCls = props.prefixCls,\n value = props.value,\n style = props.style,\n activeStyle = props.activeStyle;\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n included = _React$useContext.included,\n includedStart = _React$useContext.includedStart,\n includedEnd = _React$useContext.includedEnd;\n var dotClassName = \"\".concat(prefixCls, \"-dot\");\n var active = included && includedStart <= value && value <= includedEnd;\n\n // ============================ Offset ============================\n var mergedStyle = _objectSpread(_objectSpread({}, getDirectionStyle(direction, value, min, max)), typeof style === 'function' ? style(value) : style);\n if (active) {\n mergedStyle = _objectSpread(_objectSpread({}, mergedStyle), typeof activeStyle === 'function' ? activeStyle(value) : activeStyle);\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(dotClassName, _defineProperty({}, \"\".concat(dotClassName, \"-active\"), active)),\n style: mergedStyle\n });\n};\nexport default Dot;","import * as React from 'react';\nimport SliderContext from \"../context\";\nimport Dot from \"./Dot\";\nvar Steps = function Steps(props) {\n var prefixCls = props.prefixCls,\n marks = props.marks,\n dots = props.dots,\n style = props.style,\n activeStyle = props.activeStyle;\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n step = _React$useContext.step;\n var stepDots = React.useMemo(function () {\n var dotSet = new Set();\n\n // Add marks\n marks.forEach(function (mark) {\n dotSet.add(mark.value);\n });\n\n // Fill dots\n if (dots && step !== null) {\n var current = min;\n while (current <= max) {\n dotSet.add(current);\n current += step;\n }\n }\n return Array.from(dotSet);\n }, [min, max, step, dots, marks]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-step\")\n }, stepDots.map(function (dotValue) {\n return /*#__PURE__*/React.createElement(Dot, {\n prefixCls: prefixCls,\n key: dotValue,\n value: dotValue,\n style: style,\n activeStyle: activeStyle\n });\n }));\n};\nexport default Steps;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport cls from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getOffset } from \"../util\";\nvar Track = function Track(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n start = props.start,\n end = props.end,\n index = props.index,\n onStartMove = props.onStartMove,\n replaceCls = props.replaceCls;\n var _React$useContext = React.useContext(SliderContext),\n direction = _React$useContext.direction,\n min = _React$useContext.min,\n max = _React$useContext.max,\n disabled = _React$useContext.disabled,\n range = _React$useContext.range,\n classNames = _React$useContext.classNames;\n var trackPrefixCls = \"\".concat(prefixCls, \"-track\");\n var offsetStart = getOffset(start, min, max);\n var offsetEnd = getOffset(end, min, max);\n\n // ============================ Events ============================\n var onInternalStartMove = function onInternalStartMove(e) {\n if (!disabled && onStartMove) {\n onStartMove(e, -1);\n }\n };\n\n // ============================ Render ============================\n var positionStyle = {};\n switch (direction) {\n case 'rtl':\n positionStyle.right = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n case 'btt':\n positionStyle.bottom = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n case 'ttb':\n positionStyle.top = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n default:\n positionStyle.left = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n }\n var className = replaceCls || cls(trackPrefixCls, _defineProperty(_defineProperty({}, \"\".concat(trackPrefixCls, \"-\").concat(index + 1), index !== null && range), \"\".concat(prefixCls, \"-track-draggable\"), onStartMove), classNames.track);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: onInternalStartMove,\n onTouchStart: onInternalStartMove\n });\n};\nexport default Track;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport cls from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getIndex } from \"../util\";\nimport Track from \"./Track\";\nvar Tracks = function Tracks(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n values = props.values,\n startPoint = props.startPoint,\n onStartMove = props.onStartMove;\n var _React$useContext = React.useContext(SliderContext),\n included = _React$useContext.included,\n range = _React$useContext.range,\n min = _React$useContext.min,\n styles = _React$useContext.styles,\n classNames = _React$useContext.classNames;\n\n // =========================== List ===========================\n var trackList = React.useMemo(function () {\n if (!range) {\n // null value do not have track\n if (values.length === 0) {\n return [];\n }\n var startValue = startPoint !== null && startPoint !== void 0 ? startPoint : min;\n var endValue = values[0];\n return [{\n start: Math.min(startValue, endValue),\n end: Math.max(startValue, endValue)\n }];\n }\n\n // Multiple\n var list = [];\n for (var i = 0; i < values.length - 1; i += 1) {\n list.push({\n start: values[i],\n end: values[i + 1]\n });\n }\n return list;\n }, [values, range, startPoint, min]);\n if (!included) {\n return null;\n }\n\n // ========================== Render ==========================\n var tracksNode = classNames.tracks || styles.tracks ? /*#__PURE__*/React.createElement(Track, {\n index: null,\n prefixCls: prefixCls,\n start: trackList[0].start,\n end: trackList[trackList.length - 1].end,\n replaceCls: cls(classNames.tracks, \"\".concat(prefixCls, \"-tracks\")),\n style: styles.tracks\n }) : null;\n return /*#__PURE__*/React.createElement(React.Fragment, null, tracksNode, trackList.map(function (_ref, index) {\n var start = _ref.start,\n end = _ref.end;\n return /*#__PURE__*/React.createElement(Track, {\n index: index,\n prefixCls: prefixCls,\n style: _objectSpread(_objectSpread({}, getIndex(style, index)), styles.track),\n start: start,\n end: end,\n key: index,\n onStartMove: onStartMove\n });\n }));\n};\nexport default Tracks;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEvent } from 'rc-util';\nimport * as React from 'react';\nfunction getPosition(e) {\n var obj = 'touches' in e ? e.touches[0] : e;\n return {\n pageX: obj.pageX,\n pageY: obj.pageY\n };\n}\nfunction useDrag(containerRef, direction, rawValues, min, max, formatValue, triggerChange, finishChange, offsetValues) {\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n draggingValue = _React$useState2[0],\n setDraggingValue = _React$useState2[1];\n var _React$useState3 = React.useState(-1),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n draggingIndex = _React$useState4[0],\n setDraggingIndex = _React$useState4[1];\n var _React$useState5 = React.useState(rawValues),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n cacheValues = _React$useState6[0],\n setCacheValues = _React$useState6[1];\n var _React$useState7 = React.useState(rawValues),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n originValues = _React$useState8[0],\n setOriginValues = _React$useState8[1];\n var mouseMoveEventRef = React.useRef(null);\n var mouseUpEventRef = React.useRef(null);\n React.useLayoutEffect(function () {\n if (draggingIndex === -1) {\n setCacheValues(rawValues);\n }\n }, [rawValues, draggingIndex]);\n\n // Clean up event\n React.useEffect(function () {\n return function () {\n document.removeEventListener('mousemove', mouseMoveEventRef.current);\n document.removeEventListener('mouseup', mouseUpEventRef.current);\n document.removeEventListener('touchmove', mouseMoveEventRef.current);\n document.removeEventListener('touchend', mouseUpEventRef.current);\n };\n }, []);\n var flushValues = function flushValues(nextValues, nextValue) {\n // Perf: Only update state when value changed\n if (cacheValues.some(function (val, i) {\n return val !== nextValues[i];\n })) {\n if (nextValue !== undefined) {\n setDraggingValue(nextValue);\n }\n setCacheValues(nextValues);\n triggerChange(nextValues);\n }\n };\n var updateCacheValue = useEvent(function (valueIndex, offsetPercent) {\n // Basic point offset\n\n if (valueIndex === -1) {\n // >>>> Dragging on the track\n var startValue = originValues[0];\n var endValue = originValues[originValues.length - 1];\n var maxStartOffset = min - startValue;\n var maxEndOffset = max - endValue;\n\n // Get valid offset\n var offset = offsetPercent * (max - min);\n offset = Math.max(offset, maxStartOffset);\n offset = Math.min(offset, maxEndOffset);\n\n // Use first value to revert back of valid offset (like steps marks)\n var formatStartValue = formatValue(startValue + offset);\n offset = formatStartValue - startValue;\n var cloneCacheValues = originValues.map(function (val) {\n return val + offset;\n });\n flushValues(cloneCacheValues);\n } else {\n // >>>> Dragging on the handle\n var offsetDist = (max - min) * offsetPercent;\n\n // Always start with the valueIndex origin value\n var cloneValues = _toConsumableArray(cacheValues);\n cloneValues[valueIndex] = originValues[valueIndex];\n var next = offsetValues(cloneValues, offsetDist, valueIndex, 'dist');\n flushValues(next.values, next.value);\n }\n });\n var onStartMove = function onStartMove(e, valueIndex, startValues) {\n e.stopPropagation();\n\n // 如果是点击 track 触发的,需要传入变化后的初始值,而不能直接用 rawValues\n var initialValues = startValues || rawValues;\n var originValue = initialValues[valueIndex];\n setDraggingIndex(valueIndex);\n setDraggingValue(originValue);\n setOriginValues(initialValues);\n var _getPosition = getPosition(e),\n startX = _getPosition.pageX,\n startY = _getPosition.pageY;\n\n // Moving\n var onMouseMove = function onMouseMove(event) {\n event.preventDefault();\n var _getPosition2 = getPosition(event),\n moveX = _getPosition2.pageX,\n moveY = _getPosition2.pageY;\n var offsetX = moveX - startX;\n var offsetY = moveY - startY;\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n width = _containerRef$current.width,\n height = _containerRef$current.height;\n var offSetPercent;\n switch (direction) {\n case 'btt':\n offSetPercent = -offsetY / height;\n break;\n case 'ttb':\n offSetPercent = offsetY / height;\n break;\n case 'rtl':\n offSetPercent = -offsetX / width;\n break;\n default:\n offSetPercent = offsetX / width;\n }\n updateCacheValue(valueIndex, offSetPercent);\n };\n\n // End\n var onMouseUp = function onMouseUp(event) {\n event.preventDefault();\n document.removeEventListener('mouseup', onMouseUp);\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('touchend', onMouseUp);\n document.removeEventListener('touchmove', onMouseMove);\n mouseMoveEventRef.current = null;\n mouseUpEventRef.current = null;\n setDraggingIndex(-1);\n finishChange();\n };\n document.addEventListener('mouseup', onMouseUp);\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('touchend', onMouseUp);\n document.addEventListener('touchmove', onMouseMove);\n mouseMoveEventRef.current = onMouseMove;\n mouseUpEventRef.current = onMouseUp;\n };\n\n // Only return cache value when it mapping with rawValues\n var returnValues = React.useMemo(function () {\n var sourceValues = _toConsumableArray(rawValues).sort(function (a, b) {\n return a - b;\n });\n var targetValues = _toConsumableArray(cacheValues).sort(function (a, b) {\n return a - b;\n });\n return sourceValues.every(function (val, index) {\n return val === targetValues[index];\n }) ? cacheValues : rawValues;\n }, [rawValues, cacheValues]);\n return [draggingIndex, draggingValue, returnValues, onStartMove];\n}\nexport default useDrag;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport get from \"./get\";\nfunction internalSet(entity, paths, value, removeIfUndefined) {\n if (!paths.length) {\n return value;\n }\n var _paths = _toArray(paths),\n path = _paths[0],\n restPath = _paths.slice(1);\n var clone;\n if (!entity && typeof path === 'number') {\n clone = [];\n } else if (Array.isArray(entity)) {\n clone = _toConsumableArray(entity);\n } else {\n clone = _objectSpread({}, entity);\n }\n\n // Delete prop if `removeIfUndefined` and value is undefined\n if (removeIfUndefined && value === undefined && restPath.length === 1) {\n delete clone[path][restPath[0]];\n } else {\n clone[path] = internalSet(clone[path], restPath, value, removeIfUndefined);\n }\n return clone;\n}\nexport default function set(entity, paths, value) {\n var removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n // Do nothing if `removeIfUndefined` and parent object not exist\n if (paths.length && removeIfUndefined && value === undefined && !get(entity, paths.slice(0, -1))) {\n return entity;\n }\n return internalSet(entity, paths, value, removeIfUndefined);\n}\nfunction isObject(obj) {\n return _typeof(obj) === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;\n}\nfunction createEmpty(source) {\n return Array.isArray(source) ? [] : {};\n}\nvar keys = typeof Reflect === 'undefined' ? Object.keys : Reflect.ownKeys;\n\n/**\n * Merge objects which will create\n */\nexport function merge() {\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n var clone = createEmpty(sources[0]);\n sources.forEach(function (src) {\n function internalMerge(path, parentLoopSet) {\n var loopSet = new Set(parentLoopSet);\n var value = get(src, path);\n var isArr = Array.isArray(value);\n if (isArr || isObject(value)) {\n // Only add not loop obj\n if (!loopSet.has(value)) {\n loopSet.add(value);\n var originValue = get(clone, path);\n if (isArr) {\n // Array will always be override\n clone = set(clone, path, []);\n } else if (!originValue || _typeof(originValue) !== 'object') {\n // Init container if not exist\n clone = set(clone, path, createEmpty(value));\n }\n keys(value).forEach(function (key) {\n internalMerge([].concat(_toConsumableArray(path), [key]), loopSet);\n });\n }\n } else {\n clone = set(clone, path, value);\n }\n }\n internalMerge([]);\n });\n return clone;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport cls from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport Handles from \"./Handles\";\nimport Marks from \"./Marks\";\nimport Steps from \"./Steps\";\nimport Tracks from \"./Tracks\";\nimport SliderContext from \"./context\";\nimport useDrag from \"./hooks/useDrag\";\nimport useOffset from \"./hooks/useOffset\";\n\n/**\n * New:\n * - click mark to update range value\n * - handleRender\n * - Fix handle with count not correct\n * - Fix pushable not work in some case\n * - No more FindDOMNode\n * - Move all position related style into inline style\n * - Key: up is plus, down is minus\n * - fix Key with step = null not align with marks\n * - Change range should not trigger onChange\n * - keyboard support pushable\n */\n\nvar Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-slider' : _props$prefixCls,\n className = props.className,\n style = props.style,\n classNames = props.classNames,\n styles = props.styles,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$keyboard = props.keyboard,\n keyboard = _props$keyboard === void 0 ? true : _props$keyboard,\n autoFocus = props.autoFocus,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n _props$min = props.min,\n min = _props$min === void 0 ? 0 : _props$min,\n _props$max = props.max,\n max = _props$max === void 0 ? 100 : _props$max,\n _props$step = props.step,\n step = _props$step === void 0 ? 1 : _props$step,\n value = props.value,\n defaultValue = props.defaultValue,\n range = props.range,\n count = props.count,\n onChange = props.onChange,\n onBeforeChange = props.onBeforeChange,\n onAfterChange = props.onAfterChange,\n onChangeComplete = props.onChangeComplete,\n _props$allowCross = props.allowCross,\n allowCross = _props$allowCross === void 0 ? true : _props$allowCross,\n _props$pushable = props.pushable,\n pushable = _props$pushable === void 0 ? false : _props$pushable,\n draggableTrack = props.draggableTrack,\n reverse = props.reverse,\n vertical = props.vertical,\n _props$included = props.included,\n included = _props$included === void 0 ? true : _props$included,\n startPoint = props.startPoint,\n trackStyle = props.trackStyle,\n handleStyle = props.handleStyle,\n railStyle = props.railStyle,\n dotStyle = props.dotStyle,\n activeDotStyle = props.activeDotStyle,\n marks = props.marks,\n dots = props.dots,\n handleRender = props.handleRender,\n activeHandleRender = props.activeHandleRender,\n _props$tabIndex = props.tabIndex,\n tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n ariaLabelForHandle = props.ariaLabelForHandle,\n ariaLabelledByForHandle = props.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = props.ariaValueTextFormatterForHandle;\n var handlesRef = React.useRef(null);\n var containerRef = React.useRef(null);\n var direction = React.useMemo(function () {\n if (vertical) {\n return reverse ? 'ttb' : 'btt';\n }\n return reverse ? 'rtl' : 'ltr';\n }, [reverse, vertical]);\n\n // ============================ Range =============================\n var mergedMin = React.useMemo(function () {\n return isFinite(min) ? min : 0;\n }, [min]);\n var mergedMax = React.useMemo(function () {\n return isFinite(max) ? max : 100;\n }, [max]);\n\n // ============================= Step =============================\n var mergedStep = React.useMemo(function () {\n return step !== null && step <= 0 ? 1 : step;\n }, [step]);\n\n // ============================= Push =============================\n var mergedPush = React.useMemo(function () {\n if (typeof pushable === 'boolean') {\n return pushable ? mergedStep : false;\n }\n return pushable >= 0 ? pushable : false;\n }, [pushable, mergedStep]);\n\n // ============================ Marks =============================\n var markList = React.useMemo(function () {\n return Object.keys(marks || {}).map(function (key) {\n var mark = marks[key];\n var markObj = {\n value: Number(key)\n };\n if (mark && _typeof(mark) === 'object' && ! /*#__PURE__*/React.isValidElement(mark) && ('label' in mark || 'style' in mark)) {\n markObj.style = mark.style;\n markObj.label = mark.label;\n } else {\n markObj.label = mark;\n }\n return markObj;\n }).filter(function (_ref) {\n var label = _ref.label;\n return label || typeof label === 'number';\n }).sort(function (a, b) {\n return a.value - b.value;\n });\n }, [marks]);\n\n // ============================ Format ============================\n var _useOffset = useOffset(mergedMin, mergedMax, mergedStep, markList, allowCross, mergedPush),\n _useOffset2 = _slicedToArray(_useOffset, 2),\n formatValue = _useOffset2[0],\n offsetValues = _useOffset2[1];\n\n // ============================ Values ============================\n var _useMergedState = useMergedState(defaultValue, {\n value: value\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedValue = _useMergedState2[0],\n setValue = _useMergedState2[1];\n var rawValues = React.useMemo(function () {\n var valueList = mergedValue === null || mergedValue === undefined ? [] : Array.isArray(mergedValue) ? mergedValue : [mergedValue];\n var _valueList = _slicedToArray(valueList, 1),\n _valueList$ = _valueList[0],\n val0 = _valueList$ === void 0 ? mergedMin : _valueList$;\n var returnValues = mergedValue === null ? [] : [val0];\n\n // Format as range\n if (range) {\n returnValues = _toConsumableArray(valueList);\n\n // When count provided or value is `undefined`, we fill values\n if (count || mergedValue === undefined) {\n var pointCount = count >= 0 ? count + 1 : 2;\n returnValues = returnValues.slice(0, pointCount);\n\n // Fill with count\n while (returnValues.length < pointCount) {\n var _returnValues;\n returnValues.push((_returnValues = returnValues[returnValues.length - 1]) !== null && _returnValues !== void 0 ? _returnValues : mergedMin);\n }\n }\n returnValues.sort(function (a, b) {\n return a - b;\n });\n }\n\n // Align in range\n returnValues.forEach(function (val, index) {\n returnValues[index] = formatValue(val);\n });\n return returnValues;\n }, [mergedValue, range, mergedMin, count, formatValue]);\n\n // =========================== onChange ===========================\n var rawValuesRef = React.useRef(rawValues);\n rawValuesRef.current = rawValues;\n var getTriggerValue = function getTriggerValue(triggerValues) {\n return range ? triggerValues : triggerValues[0];\n };\n var triggerChange = function triggerChange(nextValues) {\n // Order first\n var cloneNextValues = _toConsumableArray(nextValues).sort(function (a, b) {\n return a - b;\n });\n\n // Trigger event if needed\n if (onChange && !isEqual(cloneNextValues, rawValuesRef.current, true)) {\n onChange(getTriggerValue(cloneNextValues));\n }\n\n // We set this later since it will re-render component immediately\n setValue(cloneNextValues);\n };\n var finishChange = function finishChange() {\n var finishValue = getTriggerValue(rawValuesRef.current);\n onAfterChange === null || onAfterChange === void 0 || onAfterChange(finishValue);\n warning(!onAfterChange, '[rc-slider] `onAfterChange` is deprecated. Please use `onChangeComplete` instead.');\n onChangeComplete === null || onChangeComplete === void 0 || onChangeComplete(finishValue);\n };\n var _useDrag = useDrag(containerRef, direction, rawValues, mergedMin, mergedMax, formatValue, triggerChange, finishChange, offsetValues),\n _useDrag2 = _slicedToArray(_useDrag, 4),\n draggingIndex = _useDrag2[0],\n draggingValue = _useDrag2[1],\n cacheValues = _useDrag2[2],\n onStartDrag = _useDrag2[3];\n var changeToCloseValue = function changeToCloseValue(newValue, e) {\n if (!disabled) {\n var valueIndex = 0;\n var valueDist = mergedMax - mergedMin;\n rawValues.forEach(function (val, index) {\n var dist = Math.abs(newValue - val);\n if (dist <= valueDist) {\n valueDist = dist;\n valueIndex = index;\n }\n });\n\n // Create new values\n var cloneNextValues = _toConsumableArray(rawValues);\n cloneNextValues[valueIndex] = newValue;\n\n // Fill value to match default 2\n if (range && !rawValues.length && count === undefined) {\n cloneNextValues.push(newValue);\n }\n onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(getTriggerValue(cloneNextValues));\n triggerChange(cloneNextValues);\n if (e) {\n var _document$activeEleme, _document$activeEleme2;\n (_document$activeEleme = document.activeElement) === null || _document$activeEleme === void 0 || (_document$activeEleme2 = _document$activeEleme.blur) === null || _document$activeEleme2 === void 0 || _document$activeEleme2.call(_document$activeEleme);\n handlesRef.current.focus(valueIndex);\n onStartDrag(e, valueIndex, cloneNextValues);\n }\n }\n };\n\n // ============================ Click =============================\n var onSliderMouseDown = function onSliderMouseDown(e) {\n e.preventDefault();\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n width = _containerRef$current.width,\n height = _containerRef$current.height,\n left = _containerRef$current.left,\n top = _containerRef$current.top,\n bottom = _containerRef$current.bottom,\n right = _containerRef$current.right;\n var clientX = e.clientX,\n clientY = e.clientY;\n var percent;\n switch (direction) {\n case 'btt':\n percent = (bottom - clientY) / height;\n break;\n case 'ttb':\n percent = (clientY - top) / height;\n break;\n case 'rtl':\n percent = (right - clientX) / width;\n break;\n default:\n percent = (clientX - left) / width;\n }\n var nextValue = mergedMin + percent * (mergedMax - mergedMin);\n changeToCloseValue(formatValue(nextValue), e);\n };\n\n // =========================== Keyboard ===========================\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n keyboardValue = _React$useState2[0],\n setKeyboardValue = _React$useState2[1];\n var onHandleOffsetChange = function onHandleOffsetChange(offset, valueIndex) {\n if (!disabled) {\n var next = offsetValues(rawValues, offset, valueIndex);\n onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(getTriggerValue(rawValues));\n triggerChange(next.values);\n setKeyboardValue(next.value);\n }\n };\n React.useEffect(function () {\n if (keyboardValue !== null) {\n var valueIndex = rawValues.indexOf(keyboardValue);\n if (valueIndex >= 0) {\n handlesRef.current.focus(valueIndex);\n }\n }\n setKeyboardValue(null);\n }, [keyboardValue]);\n\n // ============================= Drag =============================\n var mergedDraggableTrack = React.useMemo(function () {\n if (draggableTrack && mergedStep === null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`draggableTrack` is not supported when `step` is `null`.');\n }\n return false;\n }\n return draggableTrack;\n }, [draggableTrack, mergedStep]);\n var onStartMove = function onStartMove(e, valueIndex) {\n onStartDrag(e, valueIndex);\n onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(getTriggerValue(rawValuesRef.current));\n };\n\n // Auto focus for updated handle\n var dragging = draggingIndex !== -1;\n React.useEffect(function () {\n if (!dragging) {\n var valueIndex = rawValues.lastIndexOf(draggingValue);\n handlesRef.current.focus(valueIndex);\n }\n }, [dragging]);\n\n // =========================== Included ===========================\n var sortedCacheValues = React.useMemo(function () {\n return _toConsumableArray(cacheValues).sort(function (a, b) {\n return a - b;\n });\n }, [cacheValues]);\n\n // Provide a range values with included [min, max]\n // Used for Track, Mark & Dot\n var _React$useMemo = React.useMemo(function () {\n if (!range) {\n return [mergedMin, sortedCacheValues[0]];\n }\n return [sortedCacheValues[0], sortedCacheValues[sortedCacheValues.length - 1]];\n }, [sortedCacheValues, range, mergedMin]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n includedStart = _React$useMemo2[0],\n includedEnd = _React$useMemo2[1];\n\n // ============================= Refs =============================\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n handlesRef.current.focus(0);\n },\n blur: function blur() {\n var _containerRef$current2;\n var _document = document,\n activeElement = _document.activeElement;\n if ((_containerRef$current2 = containerRef.current) !== null && _containerRef$current2 !== void 0 && _containerRef$current2.contains(activeElement)) {\n activeElement === null || activeElement === void 0 || activeElement.blur();\n }\n }\n };\n });\n\n // ========================== Auto Focus ==========================\n React.useEffect(function () {\n if (autoFocus) {\n handlesRef.current.focus(0);\n }\n }, []);\n\n // =========================== Context ============================\n var context = React.useMemo(function () {\n return {\n min: mergedMin,\n max: mergedMax,\n direction: direction,\n disabled: disabled,\n keyboard: keyboard,\n step: mergedStep,\n included: included,\n includedStart: includedStart,\n includedEnd: includedEnd,\n range: range,\n tabIndex: tabIndex,\n ariaLabelForHandle: ariaLabelForHandle,\n ariaLabelledByForHandle: ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle: ariaValueTextFormatterForHandle,\n styles: styles || {},\n classNames: classNames || {}\n };\n }, [mergedMin, mergedMax, direction, disabled, keyboard, mergedStep, included, includedStart, includedEnd, range, tabIndex, ariaLabelForHandle, ariaLabelledByForHandle, ariaValueTextFormatterForHandle, styles, classNames]);\n\n // ============================ Render ============================\n return /*#__PURE__*/React.createElement(SliderContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: containerRef,\n className: cls(prefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), \"\".concat(prefixCls, \"-vertical\"), vertical), \"\".concat(prefixCls, \"-horizontal\"), !vertical), \"\".concat(prefixCls, \"-with-marks\"), markList.length)),\n style: style,\n onMouseDown: onSliderMouseDown\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: cls(\"\".concat(prefixCls, \"-rail\"), classNames === null || classNames === void 0 ? void 0 : classNames.rail),\n style: _objectSpread(_objectSpread({}, railStyle), styles === null || styles === void 0 ? void 0 : styles.rail)\n }), /*#__PURE__*/React.createElement(Tracks, {\n prefixCls: prefixCls,\n style: trackStyle,\n values: sortedCacheValues,\n startPoint: startPoint,\n onStartMove: mergedDraggableTrack ? onStartMove : undefined\n }), /*#__PURE__*/React.createElement(Steps, {\n prefixCls: prefixCls,\n marks: markList,\n dots: dots,\n style: dotStyle,\n activeStyle: activeDotStyle\n }), /*#__PURE__*/React.createElement(Handles, {\n ref: handlesRef,\n prefixCls: prefixCls,\n style: handleStyle,\n values: cacheValues,\n draggingIndex: draggingIndex,\n onStartMove: onStartMove,\n onOffsetChange: onHandleOffsetChange,\n onFocus: onFocus,\n onBlur: onBlur,\n handleRender: handleRender,\n activeHandleRender: activeHandleRender,\n onChangeComplete: finishChange\n }), /*#__PURE__*/React.createElement(Marks, {\n prefixCls: prefixCls,\n marks: markList,\n onClick: changeToCloseValue\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Slider.displayName = 'Slider';\n}\nexport default Slider;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\n\n/** Format the value in the range of [min, max] */\n\n/** Format value align with step */\n\n/** Format value align with step & marks */\n\nexport default function useOffset(min, max, step, markList, allowCross, pushable) {\n var formatRangeValue = React.useCallback(function (val) {\n return Math.max(min, Math.min(max, val));\n }, [min, max]);\n var formatStepValue = React.useCallback(function (val) {\n if (step !== null) {\n var stepValue = min + Math.round((formatRangeValue(val) - min) / step) * step;\n\n // Cut number in case to be like 0.30000000000000004\n var getDecimal = function getDecimal(num) {\n return (String(num).split('.')[1] || '').length;\n };\n var maxDecimal = Math.max(getDecimal(step), getDecimal(max), getDecimal(min));\n var fixedValue = Number(stepValue.toFixed(maxDecimal));\n return min <= fixedValue && fixedValue <= max ? fixedValue : null;\n }\n return null;\n }, [step, min, max, formatRangeValue]);\n var formatValue = React.useCallback(function (val) {\n var formatNextValue = formatRangeValue(val);\n\n // List align values\n var alignValues = markList.map(function (mark) {\n return mark.value;\n });\n if (step !== null) {\n alignValues.push(formatStepValue(val));\n }\n\n // min & max\n alignValues.push(min, max);\n\n // Align with marks\n var closeValue = alignValues[0];\n var closeDist = max - min;\n alignValues.forEach(function (alignValue) {\n var dist = Math.abs(formatNextValue - alignValue);\n if (dist <= closeDist) {\n closeValue = alignValue;\n closeDist = dist;\n }\n });\n return closeValue;\n }, [min, max, markList, step, formatRangeValue, formatStepValue]);\n\n // ========================== Offset ==========================\n // Single Value\n var offsetValue = function offsetValue(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n if (typeof offset === 'number') {\n var nextValue;\n var originValue = values[valueIndex];\n\n // Only used for `dist` mode\n var targetDistValue = originValue + offset;\n\n // Compare next step value & mark value which is best match\n var potentialValues = [];\n markList.forEach(function (mark) {\n potentialValues.push(mark.value);\n });\n\n // Min & Max\n potentialValues.push(min, max);\n\n // In case origin value is align with mark but not with step\n potentialValues.push(formatStepValue(originValue));\n\n // Put offset step value also\n var sign = offset > 0 ? 1 : -1;\n if (mode === 'unit') {\n potentialValues.push(formatStepValue(originValue + sign * step));\n } else {\n potentialValues.push(formatStepValue(targetDistValue));\n }\n\n // Find close one\n potentialValues = potentialValues.filter(function (val) {\n return val !== null;\n })\n // Remove reverse value\n .filter(function (val) {\n return offset < 0 ? val <= originValue : val >= originValue;\n });\n if (mode === 'unit') {\n // `unit` mode can not contain itself\n potentialValues = potentialValues.filter(function (val) {\n return val !== originValue;\n });\n }\n var compareValue = mode === 'unit' ? originValue : targetDistValue;\n nextValue = potentialValues[0];\n var valueDist = Math.abs(nextValue - compareValue);\n potentialValues.forEach(function (potentialValue) {\n var dist = Math.abs(potentialValue - compareValue);\n if (dist < valueDist) {\n nextValue = potentialValue;\n valueDist = dist;\n }\n });\n\n // Out of range will back to range\n if (nextValue === undefined) {\n return offset < 0 ? min : max;\n }\n\n // `dist` mode\n if (mode === 'dist') {\n return nextValue;\n }\n\n // `unit` mode may need another round\n if (Math.abs(offset) > 1) {\n var cloneValues = _toConsumableArray(values);\n cloneValues[valueIndex] = nextValue;\n return offsetValue(cloneValues, offset - sign, valueIndex, mode);\n }\n return nextValue;\n } else if (offset === 'min') {\n return min;\n } else if (offset === 'max') {\n return max;\n }\n };\n\n /** Same as `offsetValue` but return `changed` mark to tell value changed */\n var offsetChangedValue = function offsetChangedValue(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n var originValue = values[valueIndex];\n var nextValue = offsetValue(values, offset, valueIndex, mode);\n return {\n value: nextValue,\n changed: nextValue !== originValue\n };\n };\n var needPush = function needPush(dist) {\n return pushable === null && dist === 0 || typeof pushable === 'number' && dist < pushable;\n };\n\n // Values\n var offsetValues = function offsetValues(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n var nextValues = values.map(formatValue);\n var originValue = nextValues[valueIndex];\n var nextValue = offsetValue(nextValues, offset, valueIndex, mode);\n nextValues[valueIndex] = nextValue;\n if (allowCross === false) {\n // >>>>> Allow Cross\n var pushNum = pushable || 0;\n\n // ============ AllowCross ===============\n if (valueIndex > 0 && nextValues[valueIndex - 1] !== originValue) {\n nextValues[valueIndex] = Math.max(nextValues[valueIndex], nextValues[valueIndex - 1] + pushNum);\n }\n if (valueIndex < nextValues.length - 1 && nextValues[valueIndex + 1] !== originValue) {\n nextValues[valueIndex] = Math.min(nextValues[valueIndex], nextValues[valueIndex + 1] - pushNum);\n }\n } else if (typeof pushable === 'number' || pushable === null) {\n // >>>>> Pushable\n // =============== Push ==================\n\n // >>>>>> Basic push\n // End values\n for (var i = valueIndex + 1; i < nextValues.length; i += 1) {\n var changed = true;\n while (needPush(nextValues[i] - nextValues[i - 1]) && changed) {\n var _offsetChangedValue = offsetChangedValue(nextValues, 1, i);\n nextValues[i] = _offsetChangedValue.value;\n changed = _offsetChangedValue.changed;\n }\n }\n\n // Start values\n for (var _i = valueIndex; _i > 0; _i -= 1) {\n var _changed = true;\n while (needPush(nextValues[_i] - nextValues[_i - 1]) && _changed) {\n var _offsetChangedValue2 = offsetChangedValue(nextValues, -1, _i - 1);\n nextValues[_i - 1] = _offsetChangedValue2.value;\n _changed = _offsetChangedValue2.changed;\n }\n }\n\n // >>>>> Revert back to safe push range\n // End to Start\n for (var _i2 = nextValues.length - 1; _i2 > 0; _i2 -= 1) {\n var _changed2 = true;\n while (needPush(nextValues[_i2] - nextValues[_i2 - 1]) && _changed2) {\n var _offsetChangedValue3 = offsetChangedValue(nextValues, -1, _i2 - 1);\n nextValues[_i2 - 1] = _offsetChangedValue3.value;\n _changed2 = _offsetChangedValue3.changed;\n }\n }\n\n // Start to End\n for (var _i3 = 0; _i3 < nextValues.length - 1; _i3 += 1) {\n var _changed3 = true;\n while (needPush(nextValues[_i3 + 1] - nextValues[_i3]) && _changed3) {\n var _offsetChangedValue4 = offsetChangedValue(nextValues, 1, _i3 + 1);\n nextValues[_i3 + 1] = _offsetChangedValue4.value;\n _changed3 = _offsetChangedValue4.changed;\n }\n }\n }\n return {\n value: nextValues[valueIndex],\n values: nextValues\n };\n };\n return [formatValue, offsetValues];\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport warning from \"./warning\";\n\n/**\n * Deeply compares two object literals.\n * @param obj1 object 1\n * @param obj2 object 2\n * @param shallow shallow compare\n * @returns\n */\nfunction isEqual(obj1, obj2) {\n var shallow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // https://github.com/mapbox/mapbox-gl-js/pull/5979/files#diff-fde7145050c47cc3a306856efd5f9c3016e86e859de9afbd02c879be5067e58f\n var refSet = new Set();\n function deepEqual(a, b) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var circular = refSet.has(a);\n warning(!circular, 'Warning: There may be circular references');\n if (circular) {\n return false;\n }\n if (a === b) {\n return true;\n }\n if (shallow && level > 1) {\n return false;\n }\n refSet.add(a);\n var newLevel = level + 1;\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i], newLevel)) {\n return false;\n }\n }\n return true;\n }\n if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {\n var keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) {\n return false;\n }\n return keys.every(function (key) {\n return deepEqual(a[key], b[key], newLevel);\n });\n }\n // other\n return false;\n }\n return deepEqual(obj1, obj2);\n}\nexport default isEqual;","import Slider from \"./Slider\";\nexport default Slider;","import range_ from 'lodash/range';\n\nexport const prepareAvailableValues = (availableValues?: number[]): number[] | undefined => {\n if (!availableValues || !availableValues.length) {\n return undefined;\n }\n\n return [...availableValues].sort((v1, v2) => v1 - v2);\n};\n\nexport const prepareValue = ({\n value = 0,\n min = 0,\n max = 100,\n}: {\n value?: number;\n min?: number;\n max?: number;\n}) => {\n if (value > max) {\n return max;\n }\n if (value < min) {\n return min;\n }\n\n return value;\n};\n\nexport const getInfoPoints = ({\n infoPointsCount,\n min,\n max,\n values,\n}: {\n infoPointsCount: number;\n min: number;\n max: number;\n values?: number[];\n}) => {\n let mapInfoPoints;\n\n if (values && infoPointsCount >= values.length) {\n return values;\n }\n\n if (infoPointsCount < 1) {\n return [];\n }\n\n if (infoPointsCount === 1) {\n return [min];\n }\n\n if (!values || !values.length) {\n const step = Math.abs(max - min) / (infoPointsCount - 1);\n mapInfoPoints = (el: number): number => Math.round((min + step * el) * 100) / 100;\n } else {\n const step = values.length / infoPointsCount;\n mapInfoPoints = (el: number, i: number, arr: number[]) => {\n let index = Math.ceil(el * step);\n if (i === arr.length - 1) {\n // to make sure if the last point is equal to the last available value\n index = values.length - 1;\n }\n return values[index];\n };\n }\n\n return range_(0, infoPointsCount).map(mapInfoPoints);\n};\n\nexport const getParsedValue = (textValue: string, parse?: (value: string) => number): number => {\n return parse ? parse(textValue) : parseFloat(textValue);\n};\n\nexport const getTextValue = (value: number, format?: (value: number) => string): string => {\n return format ? format(value) : value.toString();\n};\n\nexport const getClosestValue = (value: number, values?: number[]): number => {\n if (!values || !values.length) {\n return value;\n }\n\n let low = 0;\n let hi = values.length - 1;\n\n while (hi - low > 1) {\n const mid = Math.floor((low + hi) / 2);\n if (values[mid] < value) {\n low = mid;\n } else {\n hi = mid;\n }\n }\n\n const left = values[low];\n const right = values[hi];\n return value - left <= right - value ? left : right;\n};\n","export const LEFT_INFO_POINT_STYLE = {\n position: 'static',\n marginLeft: 0,\n display: 'flex',\n verticalAlign: 'none',\n textAlign: 'none',\n};\n\nexport const RIGHT_INFO_POINT_STYLE = {\n position: 'static',\n marginLeft: 0,\n display: 'flex',\n verticalAlign: 'none',\n textAlign: 'none',\n flexDirection: 'row-reverse',\n};\n","import React, {Component, ReactElement} from 'react';\nimport block from 'bem-cn-lite';\n\nimport Slider, {type SliderProps, type SliderRef} from 'rc-slider';\nimport {IconProps, TextInput, TextInputSize} from '@gravity-ui/uikit';\nimport debounce_ from 'lodash/debounce';\n// eslint-disable-next-line lodash/import-scope\nimport type {DebouncedFunc} from 'lodash';\n\nimport {\n getClosestValue,\n getInfoPoints,\n getParsedValue,\n getTextValue,\n prepareAvailableValues,\n prepareValue,\n} from './utils';\nimport {LEFT_INFO_POINT_STYLE, RIGHT_INFO_POINT_STYLE} from './constants';\n\nimport './RangeInputPicker.scss';\n\nconst b = block('yc-range-input-picker');\n\ninterface RangeInputPickerDefaultProps {\n value?: number;\n minValue?: number;\n maxValue?: number;\n size?: TextInputSize;\n placeholder?: string;\n debounceDelay?: number;\n infoPointsCount?: number;\n step?: number;\n disabled?: boolean;\n readOnly?: boolean;\n autoFocus?: boolean;\n}\n\nexport interface RangeInputPickerGeneralProps {\n onUpdate?: (value: number) => void;\n onAfterUpdate?: (value: number) => void;\n onOutsideClick?: (value: number) => void;\n displayFormat?: (value?: number) => string;\n format?: (value?: number) => string;\n parse?: (value: string) => number;\n onSubmit?: (value: number) => void;\n onBlur?: (value: number) => void;\n onFocus?: (value: number) => void;\n pattern?: string;\n iconLeft?: ReactElement<IconProps>;\n iconRight?: ReactElement<IconProps>;\n availableValues?: number[];\n className?: string;\n controlProps?: React.InputHTMLAttributes<HTMLInputElement>;\n}\n\nexport type RangeInputPickerProps = RangeInputPickerDefaultProps & RangeInputPickerGeneralProps;\n\ninterface RangeInputPickerState {\n prevProps: RangeInputPickerProps;\n textValue: string;\n currentValue: number;\n min: number;\n max: number;\n values?: number[];\n focused: boolean;\n}\n\nexport class RangeInputPicker extends Component<RangeInputPickerProps, RangeInputPickerState> {\n static defaultProps: RangeInputPickerDefaultProps = {\n size: 'm',\n placeholder: '',\n value: 0,\n minValue: 0,\n maxValue: 100,\n debounceDelay: 200,\n disabled: false,\n readOnly: false,\n autoFocus: false,\n infoPointsCount: 2,\n step: 1,\n };\n\n static getDisplayTextValue(props: RangeInputPickerProps, value?: number): string {\n const {displayFormat, format} = props;\n const formatFunc = displayFormat || format || String;\n\n return formatFunc(value);\n }\n\n static getPreparedState(props: RangeInputPickerProps, currentState?: RangeInputPickerState) {\n const {availableValues, value, minValue = 0, maxValue = 100} = props;\n const {focused = false, textValue = ''} = currentState || {};\n const values = prepareAvailableValues(availableValues);\n const min = values ? values[0] : minValue;\n const max = values ? values[values.length - 1] : maxValue;\n const actualValue = prepareValue({value, min, max});\n\n return {\n prevProps: props,\n textValue: focused ? textValue : RangeInputPicker.getDisplayTextValue(props, value),\n currentValue: actualValue,\n min,\n max,\n values,\n focused,\n };\n }\n\n static getDerivedStateFromProps(\n nextProps: RangeInputPickerProps,\n state: RangeInputPickerState,\n ) {\n if (nextProps === state.prevProps) {\n return null;\n }\n\n return RangeInputPicker.getPreparedState(nextProps, state);\n }\n\n private wrapperRef = React.createRef<HTMLDivElement>();\n private sliderRef = React.createRef<SliderRef>();\n private textInputInnerRef = React.createRef<HTMLInputElement>();\n private debouncedCallOnUpdate: DebouncedFunc<() => void>;\n private debouncedHandleOnAfterUpdate: DebouncedFunc<() => void>;\n\n constructor(props: RangeInputPickerProps) {\n super(props);\n\n this.debouncedCallOnUpdate = debounce_(this.callOnUpdate, props.debounceDelay);\n this.debouncedHandleOnAfterUpdate = debounce_(\n this.handleOnAfterUpdate,\n props.debounceDelay,\n );\n this.state = RangeInputPicker.getPreparedState(props);\n }\n\n componentDidMount() {\n const {onOutsideClick} = this.props;\n\n if (onOutsideClick) {\n document.addEventListener('touchstart', this.handleOutsideClick);\n document.addEventListener('mousedown', this.handleOutsideClick);\n }\n }\n\n componentWillUnmount() {\n this.debouncedCallOnUpdate.cancel();\n this.debouncedHandleOnAfterUpdate.cancel();\n\n document.removeEventListener('touchstart', this.handleOutsideClick);\n document.removeEventListener('mousedown', this.handleOutsideClick);\n }\n\n render() {\n const {\n placeholder,\n autoFocus,\n disabled,\n readOnly,\n // iconRight,\n // iconLeft,\n size,\n pattern,\n className,\n controlProps,\n } = this.props;\n const {currentValue, textValue, min, max, values} = this.state;\n\n let rangeInfoItems;\n let rcSliderInfoItems;\n\n // use our own info items implementation unless available values are not empty\n if (!values || !values.length) {\n rangeInfoItems = this.renderRangeInfoItems();\n } else {\n rcSliderInfoItems = this.renderInfoItems();\n }\n\n return (\n <div\n ref={this.wrapperRef}\n className={b({size}, className)}\n tabIndex={0}\n onKeyDown={this.handleKeyDown}\n onMouseDown={this.handleWrapperClick}\n >\n <TextInput\n controlRef={this.textInputInnerRef}\n placeholder={placeholder}\n size={size}\n disabled={disabled}\n onUpdate={this.handleInputUpdate}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n value={textValue}\n autoFocus={autoFocus}\n // iconRight={iconRight}\n // iconLeft={iconLeft}\n controlProps={{readOnly, pattern, ...controlProps}}\n />\n\n <Slider\n ref={this.sliderRef}\n tabIndex={0}\n min={min}\n max={max}\n value={currentValue}\n disabled={disabled}\n onChange={this.handleSliderChange}\n step={this.step}\n marks={rcSliderInfoItems}\n onChangeComplete={this.debouncedHandleOnAfterUpdate}\n />\n\n {rangeInfoItems && (\n <div className={b('range-info-items-list')}>{rangeInfoItems}</div>\n )}\n </div>\n );\n }\n\n private get patternRegex(): RegExp | null {\n const {pattern} = this.props;\n\n if (!pattern) {\n return null;\n }\n\n return new RegExp(`^(?:${pattern})$`);\n }\n\n private get step(): number | undefined {\n const {step} = this.props;\n const {values} = this.state;\n\n return !values || !values.length ? step : undefined;\n }\n\n private callOnUpdate = () => {\n const {onUpdate} = this.props;\n const {currentValue} = this.state;\n\n if (onUpdate) {\n onUpdate(currentValue);\n }\n };\n\n private prepareChange = (textValue: string): number => {\n const {parse} = this.props;\n const {values, min, max, currentValue} = this.state;\n let value = getParsedValue(textValue, parse);\n\n if (isNaN(value)) {\n value = currentValue;\n }\n\n let actualValue = prepareValue({value, min, max});\n\n if (values && values.length) {\n actualValue = getClosestValue(actualValue, values);\n }\n\n return actualValue;\n };\n\n private handleOnAfterUpdate = () => {\n const {onAfterUpdate} = this.props;\n const {currentValue} = this.state;\n\n if (onAfterUpdate) {\n onAfterUpdate(currentValue);\n }\n };\n\n private handleInputBlur = (event: React.FocusEvent<HTMLSpanElement>) => {\n event.preventDefault();\n\n const {onBlur} = this.props;\n const {textValue} = this.state;\n\n const actualValue = this.prepareChange(textValue);\n\n this.setState(\n {\n focused: false,\n currentValue: actualValue,\n textValue: RangeInputPicker.getDisplayTextValue(this.props, actualValue),\n },\n () => {\n if (onBlur) {\n onBlur(actualValue);\n }\n },\n );\n };\n\n private handleInputFocus = () => {\n const {format, onFocus} = this.props;\n const {currentValue} = this.state;\n\n this.setState(\n {\n textValue: getTextValue(currentValue, format),\n },\n () => {\n if (onFocus) {\n onFocus(currentValue);\n }\n },\n );\n };\n\n private handleInputUpdate = (newValue: string) => {\n if (this.patternRegex && !this.patternRegex.test(newValue)) {\n return;\n }\n\n const actualValue = this.prepareChange(newValue);\n\n this.setState(\n {\n currentValue: actualValue,\n textValue: newValue,\n },\n this.debouncedCallOnUpdate,\n );\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key !== 'Enter') {\n return;\n }\n\n const {format, onSubmit} = this.props;\n const {textValue} = this.state;\n const actualValue = this.prepareChange(textValue);\n\n this.setState(\n {\n currentValue: actualValue,\n textValue: getTextValue(actualValue, format),\n focused: false,\n },\n () => {\n if (this.textInputInnerRef.current) {\n this.textInputInnerRef.current.blur();\n }\n\n if (onSubmit) {\n onSubmit(actualValue);\n }\n },\n );\n };\n\n private handleSliderChange: SliderProps['onChange'] = (newValue) => {\n if (typeof newValue === 'number') {\n const {min, max, values} = this.state;\n\n const value = getClosestValue(prepareValue({min, max, value: newValue}), values);\n\n this.setState(\n {\n currentValue: value,\n textValue: RangeInputPicker.getDisplayTextValue(this.props, value),\n },\n this.debouncedCallOnUpdate,\n );\n }\n };\n\n private handleWrapperClick = (event: React.MouseEvent<HTMLDivElement>) => {\n // TODO: написать свои тайпинги для Slider, т.к. родные описаны некорректно\n // @ts-ignore\n const slider = this.sliderRef.current && this.sliderRef.current.sliderRef;\n const isSliderContainsTarget = slider && slider.contains(event.target as Node);\n\n if (!isSliderContainsTarget) {\n this.setState({focused: true});\n }\n };\n\n private handleInfoPointClick = (value: number) => {\n return (event: React.MouseEvent<HTMLAnchorElement>) => {\n const {format, parse} = this.props;\n\n event.preventDefault();\n\n const val = getParsedValue(getTextValue(value, format), parse);\n\n this.setState(\n {\n currentValue: val,\n textValue: RangeInputPicker.getDisplayTextValue(this.props, val),\n },\n () => {\n const {onUpdate, onAfterUpdate} = this.props;\n\n if (onUpdate) {\n onUpdate(val);\n }\n\n if (onAfterUpdate) {\n onAfterUpdate(val);\n }\n },\n );\n };\n };\n\n private handleOutsideClick = (event: Event) => {\n const {onOutsideClick} = this.props;\n const {currentValue, focused} = this.state;\n const wrapper = this.wrapperRef.current;\n\n if (!onOutsideClick || !wrapper) {\n return;\n }\n\n if (!wrapper.contains(event.target as Node) && focused) {\n this.setState(\n {\n focused: false,\n },\n () => {\n if (onOutsideClick) {\n onOutsideClick(currentValue);\n }\n },\n );\n }\n };\n\n private renderItem = (value: number): string =>\n RangeInputPicker.getDisplayTextValue(this.props, value);\n\n private renderRangeItem = (value: number): JSX.Element => (\n <span\n key={value}\n className={b('range-info-item')}\n onClick={this.handleInfoPointClick(value)}\n >\n {RangeInputPicker.getDisplayTextValue(this.props, value)}\n </span>\n );\n\n private renderRangeInfoItems = () => {\n const {infoPointsCount = 2, minValue = 0, maxValue = 100} = this.props;\n const {values} = this.state;\n\n if (infoPointsCount < 1) {\n return [];\n }\n\n let infoItems: number[] = [];\n\n if (infoPointsCount === 1) {\n infoItems.push(minValue);\n } else if (!values || !values.length) {\n const step = Math.abs(maxValue - minValue) / (infoPointsCount - 1);\n\n for (let i = 0; i < infoPointsCount; i++) {\n const point = Math.round((minValue + step * i) * 100) / 100;\n\n infoItems.push(point);\n }\n } else {\n infoItems = values;\n }\n\n const pointsCount = infoItems.length;\n const unit = 100 / (pointsCount - 1);\n const pointWidth = unit * 0.9;\n const pointsRange = maxValue - minValue;\n\n return infoItems.map((point, i) => {\n const style = {\n width: pointWidth + '%',\n marginLeft: -pointWidth / 2 + '%',\n left: ((point - minValue) / pointsRange) * 100 + '%',\n };\n\n if (i === 0) {\n Object.assign(style, LEFT_INFO_POINT_STYLE);\n } else if (i === infoItems.length - 1) {\n Object.assign(style, RIGHT_INFO_POINT_STYLE);\n }\n\n return (\n <span className={b('range-info-item-container')} style={style} key={point}>\n {this.renderRangeItem(point)}\n </span>\n );\n });\n };\n\n private renderInfoItems = () => {\n const {infoPointsCount = 2} = this.props;\n const {values, min, max} = this.state;\n\n const points = getInfoPoints({infoPointsCount, min, max, values});\n\n const infoItems = points.reduce<NonNullable<SliderProps['marks']>>((acc, point: number) => {\n acc[point] = {label: this.renderItem(point), style: {}};\n\n return acc;\n }, {});\n\n return infoItems;\n };\n}\n","import React from 'react';\nimport {connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport differenceBy_ from 'lodash/differenceBy';\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\nimport sortBy_ from 'lodash/sortBy';\n\nimport {DropdownMenu} from '@gravity-ui/uikit';\n\nimport {TabFieldVertical, TabFieldVerticalProps} from '../../../../../components/Dialog';\n\nimport Button from '../../../../../components/Button/Button';\nimport Icon, {IconName} from '../../../../../components/Icon/Icon';\n\nimport {\n setCreateTableColumnsOrder,\n setCreateTableKeyColumns,\n} from '../../../../../store/actions/navigation/modals/create-table';\nimport {ArrayElement} from '../../../../../types';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\n\nimport './CreateTableTabField.scss';\n\nconst block = cn('create-table-tab-field');\n\nexport const ASCENDING = 1;\nexport const DESCENDING = -1;\n\ninterface CWProps {\n onAddColumn: (active: boolean, opts: {duplicate: boolean}) => void;\n setKeyColumns: (v: CWState['keyColumns']) => void;\n setColumnsOrder: (v: CWState['orderedTabItems']) => void;\n}\n\ninterface CWState {\n tabItems: Props['tabItems'];\n orderedTabItems: Array<TabItem>;\n keyColumns: Record<string, typeof ASCENDING | typeof DESCENDING>;\n}\n\ntype TabItem = ArrayElement<Props['tabItems']>;\n\nclass ColumnsWrapper extends React.Component<Props & CWProps, CWState> {\n static getDerivedStateFromProps(props: Props, prevState: CWState) {\n const {tabItems} = props;\n const {tabItems: prevTabItems, orderedTabItems: prevOrderedTabItems} = prevState;\n\n const res: Partial<CWState> = {};\n\n if (tabItems !== prevTabItems) {\n const tabItemsMap: Record<string, TabItem> = {};\n forEach_(tabItems, (item) => {\n tabItemsMap[item.id] = item;\n });\n\n const itemsToAdd = differenceBy_(tabItems, prevTabItems, ({id}) => id);\n const idsToRemove = new Set<string>(\n differenceBy_(prevTabItems, tabItems, ({id}) => id).map((item) => item.id),\n );\n\n const filtered = filter_(prevOrderedTabItems, ({id}) => !idsToRemove.has(id));\n const orderedTabItems = map_(filtered, ({id}) => ({\n ...tabItemsMap[id],\n }));\n\n res.tabItems = tabItems;\n res.orderedTabItems = orderedTabItems.concat(itemsToAdd);\n }\n\n return isEmpty_(res) ? null : res;\n }\n\n state: CWState = {\n tabItems: [],\n orderedTabItems: [],\n keyColumns: {},\n };\n\n setKeyColumns(keyColumns: CWState['keyColumns']) {\n this.setState({keyColumns});\n this.props.setKeyColumns(keyColumns);\n }\n\n setOrderedTabItems(orderedTabItems: CWState['orderedTabItems']) {\n this.setState({orderedTabItems});\n this.props.setColumnsOrder(orderedTabItems);\n }\n\n onOrderChanged = (order: CWState['orderedTabItems'], newIndex: number, oldIndex: number) => {\n if (newIndex === oldIndex) {\n return;\n }\n\n let {keyColumns} = this.state;\n const moved = order[newIndex];\n\n if (newIndex < oldIndex) {\n const next = order[newIndex + 1];\n if (!keyColumns[moved.id] && keyColumns[next.id]) {\n keyColumns = {...keyColumns};\n keyColumns[moved.id] = 1;\n this.setKeyColumns(keyColumns);\n }\n } else {\n const prev = order[newIndex - 1];\n if (keyColumns[moved.id] && !keyColumns[prev.id]) {\n keyColumns = {...keyColumns};\n delete keyColumns[moved.id];\n this.setKeyColumns(keyColumns);\n }\n }\n this.setOrderedTabItems(order);\n };\n\n toggleKeyColumn = (item: TabItem, value?: CWState['keyColumns']['']) => {\n const keyColumns = {...this.state.keyColumns};\n if (!value) {\n delete keyColumns[item.id];\n } else {\n keyColumns[item.id] = value;\n }\n\n const orderedTabItems = sortBy_(this.state.orderedTabItems, ({id}) => !keyColumns[id]);\n this.setKeyColumns(keyColumns);\n this.setOrderedTabItems(orderedTabItems);\n };\n\n onCloneColumn = () => {\n // The timeout is required to select the tab by click\n setTimeout(() => {\n const {onAddColumn} = this.props;\n onAddColumn(false, {duplicate: true});\n }, 1);\n };\n\n renderKeyIcon = (node: React.ReactNode, item: TabItem) => {\n const {keyColumns} = this.state;\n const current = keyColumns[item.id];\n\n const {icon, title} = (\n !current\n ? {icon: 'sort-alt', title: 'Unordered'}\n : current === DESCENDING\n ? {icon: 'sort-amount-up', title: 'Descending'}\n : {icon: 'sort-amount-down-alt', title: 'Ascending'}\n ) as {icon: IconName; title: string};\n\n return (\n <React.Fragment>\n {node}\n <Tooltip content={'Clone'}>\n <Button view={'flat'} onClick={this.onCloneColumn}>\n <Icon awesome={'clone'} />\n </Button>\n </Tooltip>\n <DropdownMenu\n items={[\n {\n icon: <Icon awesome={'sort-alt'} />,\n active: !current,\n text: 'Unordered',\n action: () => this.toggleKeyColumn(item, undefined),\n },\n {\n icon: <Icon awesome={'sort-amount-up'} />,\n active: current === DESCENDING,\n text: 'Descending',\n action: () => this.toggleKeyColumn(item, DESCENDING),\n },\n {\n icon: <Icon awesome={'sort-amount-down-alt'} />,\n active: current === ASCENDING,\n text: 'Ascending',\n action: () => this.toggleKeyColumn(item, ASCENDING),\n },\n ]}\n switcher={\n <Tooltip content={title}>\n <Button view={'flat'}>\n <Icon awesome={icon} className={block('sort-icon')} />\n </Button>\n </Tooltip>\n }\n />\n </React.Fragment>\n );\n };\n\n onMoveTab = ({oldIndex, newIndex}: {oldIndex: number; newIndex: number}) => {\n const newTabItems = [...this.state.orderedTabItems];\n\n const itemToMove = newTabItems[oldIndex];\n newTabItems.splice(oldIndex, 1);\n newTabItems.splice(newIndex, 0, itemToMove);\n\n this.onOrderChanged(newTabItems, newIndex, oldIndex);\n };\n\n render() {\n const {activeTab, ...rest} = this.props;\n const {orderedTabItems} = this.state;\n\n return (\n <TabFieldVertical\n {...rest}\n activeTab={activeTab}\n tabItems={orderedTabItems}\n size={'m'}\n sortable={true}\n onOrderChanged={this.onMoveTab}\n wrapTo={this.renderKeyIcon}\n />\n );\n }\n}\n\nconst mapDispatchToProps = {\n setKeyColumns: setCreateTableKeyColumns,\n setColumnsOrder: setCreateTableColumnsOrder,\n};\n\nconst ColumnsWrapperConnected = connect(null, mapDispatchToProps)(ColumnsWrapper);\n\ntype Props = TabFieldVerticalProps;\n\nexport default class CreateTableTabField extends React.Component<Props> {\n static isTabControl = true as const;\n static isTabControlVertical = true;\n\n onAddColumn = (active = true, {duplicate}: {duplicate?: boolean} = {}) => {\n const {onCreateTab = () => {}} = this.props;\n onCreateTab('columns', active, {userOptions: {duplicate}});\n };\n\n renderAddColumnRow() {\n return (\n <div className={block('add-column')}>\n <span className={block('add-column-label')}>Columns</span>\n <Button onClick={() => this.onAddColumn()}>\n <Icon awesome={'plus'} />\n Add\n </Button>\n </div>\n );\n }\n\n render() {\n const {className, activeTab, tabItems, ...rest} = this.props;\n const [tableSettings, ...restItems] = tabItems;\n\n return (\n <div className={block(null, className)}>\n {this.renderAddColumnRow()}\n <ColumnsWrapperConnected\n className={block('columns')}\n {...rest}\n tabItems={restItems}\n activeTab={activeTab}\n onAddColumn={this.onAddColumn}\n />\n <TabFieldVertical\n className={block('table-settings')}\n activeTab={activeTab}\n tabItems={[tableSettings]}\n {...rest}\n virtualized={false}\n />\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport sortBy_ from 'lodash/sortBy';\nimport toLower_ from 'lodash/toLower';\n\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../../store/reducers';\nimport axios, {CancelTokenSource} from 'axios';\n\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport ypath from '../../../../common/thor/ypath';\nimport {\n USE_SKIP_ERROR_FN_NODE_DOES_NOT_EXIST,\n getBatchError,\n wrapApiPromiseByToaster,\n} from '../../../../utils/utils';\nimport {loadPoolTreesIfNotLoaded} from '../../../../store/actions/global';\nimport {OperationShortInfo} from '../../../../pages/components/OperationShortInfo/OperationShortInfo';\nimport {AppStoreProvider} from '../../../../containers/App/AppStoreProvider';\nimport {CypressNodeTypes, makeUiMarker} from '../../../../utils/cypress-attributes';\nimport {Page} from '../../../../constants';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {\n PathAttribute,\n changeAttribute,\n setModalPartial,\n} from '../../../reducers/navigation/modals/tableMergeSortModalSlice';\nimport {Action} from 'redux';\nimport {getNavigationTableOutputPathAttributes} from '../../../selectors/navigation/modals/table-merge-sort-modal';\n\ntype TableMergeSortThunkAction<T = void> = ThunkAction<T, RootState, any, Action>;\n\nexport function showTableSortModal(paths: Array<string>): TableMergeSortThunkAction<Promise<void>> {\n return (dispatch) => {\n return dispatch(loadPoolTreesIfNotLoaded()).finally(() => {\n dispatch(setModalPartial({sortVisible: true, paths}));\n dispatch(tableSortModalLoadColumns(paths));\n });\n };\n}\n\nexport function hideTableSortModal() {\n return setModalPartial({sortVisible: false, paths: []});\n}\n\nexport function showTableMergeModal(\n paths: Array<string>,\n): ThunkAction<Promise<void>, RootState, any, Action> {\n return (dispatch) => {\n return dispatch(loadPoolTreesIfNotLoaded()).finally(() => {\n dispatch(\n setModalPartial({\n mergeVisible: true,\n paths,\n }),\n );\n dispatch(tableSortModalLoadColumns(paths));\n });\n };\n}\n\nexport function hideTableMergeModal() {\n return setModalPartial({mergeVisible: false, paths: []});\n}\n\nexport function tableSortModalLoadColumns(\n paths: Array<string>,\n): ThunkAction<any, RootState, any, Action> {\n return (dispatch) => {\n if (!paths?.length) {\n return undefined;\n }\n const requests = map_(paths, (path) => {\n return {\n command: 'get' as const,\n parameters: {path: `${path}/@schema`},\n };\n });\n return ytApiV3Id\n .executeBatch(YTApiId.navigationTableSortLoadColumns, {requests})\n .then((results: Array<any>) => {\n const error = getBatchError(\n results,\n 'Column names cannot be loaded, autocompletion might not work properly',\n );\n if (error) {\n dispatch(setModalPartial({error}));\n return;\n }\n const columns: {[name: string]: boolean} = {};\n forEach_(results, ({output}) => {\n forEach_(ypath.getValue(output), ({name}) => {\n columns[name] = true;\n });\n });\n dispatch(\n setModalPartial({\n suggestColumns: sortBy_(\n map_(columns, (_v, name) => name),\n (name) => toLower_(name),\n ),\n }),\n );\n })\n .catch((error: any) => {\n return dispatch(\n setModalPartial({\n error,\n }),\n );\n });\n };\n}\n\ninterface SortParams {\n input_table_paths: Array<string>;\n output_table_path: {$value: string; $attributes: Record<string, string>};\n sort_by: Array<{name: string; sort_order: 'ascending' | 'descending'}>;\n pool?: string;\n}\n\nexport function runTableSort(spec: SortParams): TableMergeSortThunkAction {\n return () => {\n const parameters = {\n spec,\n ...makeUiMarker(`${Page.NAVIGATION}:sort`),\n };\n return wrapApiPromiseByToaster(yt.v3.sort(parameters), {\n toasterName: 'table_sort_' + spec.output_table_path,\n successContent(res: string) {\n const opId = JSON.parse(res);\n return (\n <AppStoreProvider>\n <OperationShortInfo\n id={opId}\n type={'sort'}\n output_attribute_name={'/spec/output_table_path'}\n />\n </AppStoreProvider>\n );\n },\n successTitle: 'Sort operation is started',\n errorTitle: 'Sort operation is failed',\n autoHide: false,\n });\n };\n}\n\nexport const loadStorageAttributes =\n (path: string): TableMergeSortThunkAction =>\n async (dispatch, getState) => {\n const state = getState();\n const outputPathAttributes = getNavigationTableOutputPathAttributes(state);\n\n const response: Record<PathAttribute, string> = await wrapApiPromiseByToaster(\n ytApiV3Id.get(YTApiId.attributesEditorGetAttrs, {\n parameters: {\n path: path + '/@',\n attributes: [\n PathAttribute.OPTIMIZE_FOR,\n PathAttribute.COMPRESSION_CODEC,\n PathAttribute.ERASURE_CODEC,\n ],\n },\n }),\n {\n toasterName: 'get_table_attributes',\n errorTitle: 'Get table attributes request is failed',\n autoHide: false,\n skipSuccessToast: true,\n ...USE_SKIP_ERROR_FN_NODE_DOES_NOT_EXIST,\n },\n );\n\n Object.entries(outputPathAttributes).forEach(([key, attribute]) => {\n dispatch(changeAttribute({...attribute, value: response[key as PathAttribute]}));\n });\n };\n\ninterface MergeParams {\n pool: string;\n pool_trees: Array<string>;\n input_table_paths: Array<string>;\n output_table_path: string;\n merge_by: Array<string>;\n mode: 'unordered' | 'sorted' | 'ordered';\n}\n\nexport function runTableMerge(spec: MergeParams): TableMergeSortThunkAction {\n return () => {\n const parameters = {\n spec,\n ...makeUiMarker(`${Page.NAVIGATION}:merge`),\n };\n return wrapApiPromiseByToaster(yt.v3.merge(parameters), {\n toasterName: 'table_merge_' + spec.output_table_path,\n successContent(res: string) {\n const opId = JSON.parse(res);\n return (\n <AppStoreProvider>\n <OperationShortInfo\n id={opId}\n type={'merge'}\n output_attribute_name={'/spec/output_table_path'}\n />\n </AppStoreProvider>\n );\n },\n successTitle: 'Merge operation is started',\n errorTitle: 'Merge operation is failed',\n autoHide: false,\n });\n };\n}\n\nlet cancelTokenSrc: Pick<CancelTokenSource, 'cancel'> = {cancel: () => {}};\n\nexport function isPathStaticTable(path: string) {\n if (!path) return;\n\n cancelTokenSrc.cancel();\n return ytApiV3Id\n .get(\n YTApiId.navigationIsStaticTable,\n {\n path,\n attributes: ['type', 'dynamic'],\n },\n (cancelSrc: CancelTokenSource) => {\n cancelTokenSrc = cancelSrc;\n },\n )\n .then((d: any) => {\n const type = ypath.getValue(d, '/@type');\n const isDynamic = ypath.getValue(d, '/@dynamic');\n return type !== CypressNodeTypes.TABLE || isDynamic\n ? 'Please make sure the destination is an existing static table'\n : undefined;\n })\n .catch((e: any) => {\n if (axios.isCancel(e)) {\n return undefined;\n }\n return e?.message || 'Cannot get type of node';\n });\n}\n","import map_ from 'lodash/map';\n\nimport {createSelector} from 'reselect';\n\nexport const getCreateTableModalState = (state) => state.navigation.modals.createTable;\nexport const isCreateTableModalVisible = (state) => state.navigation.modals.createTable.showModal;\nexport const getCreateTableLockSuggestions = (state) =>\n state.navigation.modals.createTable.columnLockSuggestions;\nexport const getCreateTableGroupSuggestions = (state) =>\n state.navigation.modals.createTable.columnGroupSuggestions;\n\nexport const getColumnLockSuggestions = createSelector([getCreateTableLockSuggestions], (locks) => {\n const res = map_(locks, (item) => item);\n return res;\n});\n\nexport const getColumnGroupSuggestions = createSelector(\n [getCreateTableGroupSuggestions],\n (groups) => {\n const res = map_(groups, (item) => item);\n return res;\n },\n);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport Icon from '../Icon/Icon';\n\nimport './ErrorMessage.scss';\n\nconst b = block('error-message');\n\nfunction ErrorMessage({message, className}) {\n return (\n <div className={b(null, className)}>\n <Icon awesome=\"exclamation-circle\" />\n\n <span className={b('message-text')}>{message}</span>\n </div>\n );\n}\n\nErrorMessage.propTypes = {\n message: PropTypes.string.isRequired,\n className: PropTypes.string,\n};\n\nexport default ErrorMessage;\n","import React, {Component, FocusEvent, Key, KeyboardEvent, MouseEvent} from 'react';\nimport {connect} from 'react-redux';\nimport ReactList from 'react-list';\nimport block from 'bem-cn-lite';\n\nimport debounce_ from 'lodash/debounce';\nimport find_ from 'lodash/find';\nimport isEmpty_ from 'lodash/isEmpty';\n\nimport {Popup, TextInput} from '@gravity-ui/uikit';\n\nimport thorYPath from '../../common/thor/ypath';\n\nimport Icon from '../../components/Icon/Icon';\nimport ErrorMessage from '../../components/ErrorMessage/ErrorMessage';\n\nimport {\n filterByCurrentPath,\n getCompletedPath,\n getIconNameForType,\n getNextSelectedIndex,\n getPrevSelectedIndex,\n} from '../../utils/navigation/path-editor';\nimport {\n loadSuggestionsList,\n removeActiveRequests,\n} from '../../store/actions/navigation/path-editor/path-editor';\nimport {RootState} from '../../store/reducers';\nimport {KeyCode} from '../../constants/index';\nimport {UseHotkeysScope} from '../../hooks/use-hotkeysjs-scope';\n\nimport './PathEditor.scss';\n\ninterface Suggestion {\n parentPath: string;\n childPath: string;\n path: string;\n targetPathBroken?: boolean;\n type?: string;\n dynamic?: unknown;\n}\n\ntype SuggestionFilter = (suggestions: Suggestion[]) => Suggestion[];\n\nexport interface EventPayload {\n path: string;\n}\n\nexport interface PathEditorProps {\n suggestions: Suggestion[];\n suggestionsError?: boolean;\n errorMessage?: string;\n loadSuggestionsList: (path: string, customFilter?: SuggestionFilter) => void;\n removeActiveRequests: () => void;\n // from parent component\n className?: string;\n placeholder?: string;\n defaultPath?: string;\n disabled?: boolean;\n autoFocus?: boolean;\n hasClear?: boolean;\n showErrors?: boolean;\n customFilter?: SuggestionFilter;\n onChange?: (newPath: string) => void;\n onFocus?: (e: FocusEvent<HTMLInputElement>, payload: EventPayload) => void;\n onBlur?: (path: string) => void;\n onApply?: (newPath: string) => void;\n onCancel?: () => void;\n}\n\ninterface PathEditorState {\n path: string;\n actualSuggestions: Suggestion[];\n inputFocus: boolean;\n inputChange: boolean;\n selectedIndex: number;\n}\n\nconst debounceTime = 300;\nconst b = block('path-editor');\n\nexport class PathEditor extends Component<PathEditorProps, PathEditorState> {\n static defaultProps: Partial<PathEditorProps> = {\n errorMessage: 'Oops, something went wrong',\n placeholder: 'Enter the path...',\n suggestionsError: false,\n autoFocus: false,\n showErrors: true,\n defaultPath: undefined,\n disabled: false,\n hasClear: false,\n };\n\n static getDerivedStateFromProps(props: PathEditorProps, state: PathEditorState) {\n const res = {};\n if (state.inputFocus && state.inputChange) {\n Object.assign(res, {\n actualSuggestions: props.suggestions.length\n ? filterByCurrentPath(state.path, props.suggestions)\n : [],\n });\n }\n\n if (state.path === undefined && props.defaultPath !== undefined) {\n Object.assign(res, {\n path: props.defaultPath,\n });\n }\n\n return isEmpty_(res) ? null : res;\n }\n\n state: PathEditorState;\n\n private suggestionsList = React.createRef<HTMLDivElement>();\n private input = React.createRef<HTMLInputElement>();\n\n constructor(props: PathEditorProps) {\n super(props);\n\n this.debounceLoading = debounce_(this.debounceLoading, debounceTime);\n\n this.state = {\n path: props.defaultPath ?? '',\n actualSuggestions: [],\n inputFocus: false,\n inputChange: false,\n selectedIndex: -1,\n };\n }\n\n componentDidMount() {\n const {loadSuggestionsList, customFilter, autoFocus} = this.props;\n const {path} = this.state;\n\n if (path) {\n loadSuggestionsList(path, customFilter);\n }\n if (autoFocus) {\n this._setFocus();\n }\n }\n\n componentDidUpdate(prevProps: PathEditorProps) {\n if (prevProps.disabled && !this.props.disabled && this.input.current) {\n this._setFocus();\n }\n }\n\n componentWillUnmount() {\n this.props.removeActiveRequests();\n }\n\n _setFocus() {\n this.input.current?.focus();\n }\n\n get inputWidth() {\n // Is there a way to avoid using private _control property?\n return this.input.current && this.input.current.offsetWidth - 2;\n }\n\n /**\n * @deprecated Please replace usages of it to direct call.\\\n * For example: use `onFocus?.(event, payload)` instead `callCallback(onFocus, [event, payload])`.\\\n * Also, pass event as first agument of callback.\n */\n callCallback<T extends unknown[] = unknown[]>(\n cb: undefined | ((...args: T) => unknown),\n ...params: T\n ) {\n if (typeof cb === 'function') {\n return cb(...params);\n }\n\n return undefined;\n }\n\n debounceLoading(path: string) {\n const {loadSuggestionsList, customFilter, onChange} = this.props;\n\n loadSuggestionsList(path, customFilter);\n this.callCallback(onChange, path);\n }\n\n hideSuggestions = () => {\n this.setState({inputFocus: false, selectedIndex: -1});\n };\n\n selectPrevSuggestion() {\n const {selectedIndex, actualSuggestions} = this.state;\n\n const prevIndex = getPrevSelectedIndex(actualSuggestions, selectedIndex);\n this.setState({selectedIndex: prevIndex});\n }\n\n selectNextSuggestion() {\n const {selectedIndex, actualSuggestions} = this.state;\n\n const nextIndex = getNextSelectedIndex(actualSuggestions, selectedIndex);\n this.setState({selectedIndex: nextIndex});\n }\n\n handleInputChange = (path: string) => {\n this.setState({path, selectedIndex: -1, inputChange: true});\n this.debounceLoading(path);\n };\n\n handleInputFocus = (e: FocusEvent<HTMLInputElement>) => {\n const {onFocus} = this.props;\n const {path} = this.state;\n\n this.setState({inputFocus: true});\n onFocus?.(e, {path});\n };\n\n handleInputBlur = () => {\n const {onBlur} = this.props;\n const {path} = this.state;\n\n this.hideSuggestions();\n this.callCallback(onBlur, path);\n };\n\n handleEnterClick(event: KeyboardEvent<HTMLInputElement>) {\n event.preventDefault();\n\n const {selectedIndex, actualSuggestions} = this.state;\n const {onApply} = this.props;\n const inputPath = event.currentTarget.value;\n\n if (selectedIndex === -1) {\n this.setState({path: inputPath, selectedIndex: -1});\n this.callCallback(onApply, inputPath);\n } else {\n const suggestion = find_(actualSuggestions, (_, index) => index === selectedIndex);\n const completedPath = getCompletedPath(suggestion);\n\n this.handleInputChange(completedPath);\n }\n }\n\n handleEscClick() {\n const {onCancel} = this.props;\n\n this.input.current?.blur();\n this.callCallback(onCancel);\n }\n\n handleTabClick(event: KeyboardEvent<HTMLInputElement>) {\n event.preventDefault();\n const {actualSuggestions} = this.state;\n\n if (actualSuggestions.length === 1) {\n const completedPath = getCompletedPath(actualSuggestions[0]);\n\n this.handleInputChange(completedPath);\n } else if (actualSuggestions.length > 1) {\n this.selectNextSuggestion();\n }\n }\n\n handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n const key = event.keyCode;\n\n switch (key) {\n case KeyCode.ARROW_DOWN:\n this.selectNextSuggestion();\n break;\n case KeyCode.ARROW_UP:\n this.selectPrevSuggestion();\n break;\n case KeyCode.ENTER:\n this.handleEnterClick(event);\n break;\n case KeyCode.ESCAPE:\n this.handleEscClick();\n break;\n case KeyCode.TAB:\n this.handleTabClick(event);\n break;\n }\n };\n\n renderInput() {\n const {placeholder, autoFocus, hasClear, disabled} = this.props;\n const {path} = this.state;\n\n return (\n <TextInput\n onKeyDown={this.handleKeyDown}\n onUpdate={this.handleInputChange}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n placeholder={placeholder}\n hasClear={hasClear}\n autoFocus={autoFocus}\n disabled={disabled}\n controlRef={this.input}\n value={path}\n />\n );\n }\n\n renderItem = (index: number, key: Key) => {\n const {selectedIndex, actualSuggestions} = this.state;\n\n const item = actualSuggestions[index];\n const {type, dynamic} = item;\n const iconType = type === 'table' && dynamic ? 'table_dynamic' : type;\n const completedPath = getCompletedPath(item);\n const isSelected = index === selectedIndex ? 'yes' : 'no';\n const iconName = getIconNameForType(iconType, item.targetPathBroken);\n\n const mouseDownHandler = (event: MouseEvent<HTMLDivElement>) => {\n this.handleInputChange(completedPath);\n event.preventDefault();\n };\n\n let lastFragment: string | undefined = '';\n try {\n const {fragments} = new thorYPath.YPath(item.path, 'absolute');\n lastFragment = fragments[fragments.length - 1]?.name;\n } catch {}\n\n return (\n <div\n key={key}\n onMouseDown={mouseDownHandler}\n className={b('item', {selected: isSelected})}\n >\n <Icon awesome={iconName} />\n\n <span className={b('item-path')}>\n {lastFragment ? `\\u2026/${lastFragment}` : item.path}\n </span>\n </div>\n );\n };\n\n renderSuggestions() {\n const {actualSuggestions} = this.state;\n\n return actualSuggestions.length ? (\n <ReactList\n itemRenderer={this.renderItem}\n length={actualSuggestions.length}\n type=\"simple\"\n />\n ) : null;\n }\n\n renderError() {\n const {errorMessage} = this.props;\n\n if (!errorMessage) {\n return;\n }\n\n return <ErrorMessage className={b('item', {error: true})} message={errorMessage} />;\n }\n\n renderPopup() {\n const {suggestionsError, showErrors} = this.props;\n const {actualSuggestions, inputFocus} = this.state;\n\n const width = this.inputWidth || 0;\n const isVisible = Boolean(\n (actualSuggestions.length || (suggestionsError && showErrors)) && inputFocus,\n );\n const content =\n suggestionsError && showErrors ? this.renderError() : this.renderSuggestions();\n\n return (\n <Popup\n className={b('popup')}\n placement={['bottom-start', 'top-start']}\n onClose={this.hideSuggestions}\n anchorRef={this.input}\n open={isVisible}\n offset={[0, 0]}\n >\n <div className={b('items')} style={{width}} ref={this.suggestionsList}>\n {content}\n </div>\n </Popup>\n );\n }\n\n render() {\n return (\n <div className={b(null, this.props.className)}>\n {this.renderInput()}\n {this.renderPopup()}\n <UseHotkeysScope scope={'path-editor'} visible={this.state.inputFocus} />\n </div>\n );\n }\n}\n\nconst mapStateToProps = ({navigation}: RootState) => ({\n suggestions: navigation.pathEditor.suggestions,\n suggestionsError: navigation.pathEditor.suggestionsError,\n errorMessage: navigation.pathEditor.errorMessage,\n});\n\nexport default connect(mapStateToProps, {\n loadSuggestionsList,\n removeActiveRequests,\n})(PathEditor);\n","import {FETCH_SUGGESTIONS} from '../../../../constants/navigation/path-editor';\nimport {\n loadSuggestions,\n pathEditorRequests,\n preparePath,\n} from '../../../../utils/navigation/path-editor';\n\nexport function loadSuggestionsList(path, customFilter) {\n return (dispatch, getState) => {\n const {suggestionsPath, suggestionsLoaded} = getState().navigation.pathEditor;\n let currentParentPath;\n\n try {\n currentParentPath = preparePath(path);\n } catch (error) {\n return dispatch({\n type: FETCH_SUGGESTIONS.FAILURE,\n data: {message: error.message},\n });\n }\n\n if (suggestionsPath === currentParentPath && suggestionsLoaded) {\n return;\n }\n dispatch({type: FETCH_SUGGESTIONS.REQUEST});\n\n return loadSuggestions(path, customFilter)\n .then((suggestions) => {\n dispatch({\n type: FETCH_SUGGESTIONS.SUCCESS,\n data: {suggestions, path, currentParentPath},\n });\n })\n .catch((error) => {\n dispatch({\n type: FETCH_SUGGESTIONS.FAILURE,\n data: {message: error.message},\n });\n });\n };\n}\n\nexport function removeActiveRequests() {\n return (dispatch) => {\n pathEditorRequests.removeAllRequests();\n dispatch({type: FETCH_SUGGESTIONS.CANCELLED});\n };\n}\n","import {CancelTokenSource} from 'axios';\n\nimport CancelHelper, {isCancelled} from '../../../../../utils/cancel-helper';\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {GET_TABLET_ERRORS} from '../../../../../constants/navigation/tabs/tablet-errors';\nimport {YTApiId, ytApiV3Id, ytApiV4Id} from '../../../../../rum/rum-wrap-api';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../../../store/reducers';\nimport {\n NavigationTabletErrorsMode,\n TabletErrorsAction,\n} from '../../../../../store/reducers/navigation/tabs/tablet-errors/tablet-errors-background';\nimport {wrapApiPromiseByToaster} from '../../../../../utils/utils';\n\nimport {loadReplicas} from '../../content/replicated-table';\nimport {TYPED_OUTPUT_FORMAT} from '../../../../../constants';\n\nconst requests = new CancelHelper();\n\ntype TabletErrorsThunkAction<T = unknown> = ThunkAction<T, RootState, unknown, TabletErrorsAction>;\n\nexport function getTabletErrors(): TabletErrorsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n\n dispatch({type: GET_TABLET_ERRORS.REQUEST});\n\n dispatch(loadReplicas());\n\n ytApiV4Id\n .getTabletErrors(YTApiId.navigationTabletErrors, {\n parameters: {path, output_format: TYPED_OUTPUT_FORMAT},\n cancellation: requests.removeAllAndSave,\n })\n .then((tabletErrors) => {\n dispatch({\n type: GET_TABLET_ERRORS.SUCCESS,\n data: {tabletErrors, tabletErrorsPath: path},\n });\n })\n .catch((error) => {\n if (isCancelled(error)) {\n dispatch({type: GET_TABLET_ERRORS.CANCELLED});\n } else {\n dispatch({\n type: GET_TABLET_ERRORS.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\ninterface LoadTabletErrorOptions {\n path: string;\n saveCancelTokenSource: (tokenSource: CancelTokenSource) => void;\n}\n\nexport function loadTabletErrorsCount(options: LoadTabletErrorOptions): TabletErrorsThunkAction {\n const {path} = options;\n return (dispatch) => {\n return wrapApiPromiseByToaster(\n ytApiV3Id.executeBatch(YTApiId.navigationTypeDynamic, {\n parameters: {\n requests: [\n {\n command: 'get',\n parameters: {path: `${path}/@type`},\n },\n {\n command: 'get',\n parameters: {path: `${path}/@dynamic`},\n },\n ],\n },\n cancellation: options.saveCancelTokenSource,\n }),\n {\n toasterName: 'get_type_dynamic',\n skipSuccessToast: true,\n },\n ).then(([{output: type}, {output: dynamic}]) => {\n if (dynamic && (type === 'table' || type === 'replication_log_table')) {\n return dispatch(loadTabletErrorsCountOfDynamicTable(options));\n }\n\n if (type === 'replicated_table') {\n return dispatch(loadTabletErrorsCountOfReplicatedTable(options));\n }\n\n return undefined;\n });\n };\n}\n\nfunction loadTabletErrorsCountOfDynamicTable({\n path,\n saveCancelTokenSource,\n}: LoadTabletErrorOptions): TabletErrorsThunkAction {\n return (dispatch) => {\n return wrapApiPromiseByToaster(\n ytApiV3Id.get(YTApiId.navigationTabletErrorsCountDynTable, {\n parameters: {\n path: `${path}/@tablet_error_count`,\n },\n cancellation: saveCancelTokenSource,\n }),\n {\n toasterName: 'tablet_erros_count',\n skipSuccessToast: true,\n },\n ).then((errorsCount: number) => {\n dispatch(updateTabletErrrosCount(errorsCount, path));\n });\n };\n}\n\nfunction loadTabletErrorsCountOfReplicatedTable({\n path,\n saveCancelTokenSource,\n}: LoadTabletErrorOptions): TabletErrorsThunkAction {\n return (dispatch) => {\n return wrapApiPromiseByToaster(\n ytApiV3Id.executeBatch<number>(YTApiId.navigationTabletErrorsCountReplicatedTable, {\n requests: [\n {\n command: 'get',\n parameters: {\n path: `${path}/@replicas/@error_count`,\n },\n },\n {command: 'get', parameters: {path: `${path}/@tablet_error_count`}},\n ],\n cancellation: saveCancelTokenSource,\n }),\n {\n toasterName: 'tablet_errors_count',\n skipSuccessToast: true,\n },\n ).then((results) => {\n const count = results.reduce((acc, {output = 0}) => acc + output, 0);\n dispatch(updateTabletErrrosCount(count, path));\n });\n };\n}\n\nexport function updateTabletErrrosCount(\n errorsCount: number,\n errorsCountPath: string,\n): TabletErrorsAction {\n return {type: GET_TABLET_ERRORS.PARTITION, data: {errorsCountPath, errorsCount}};\n}\n\nexport function updateTabletErrorsViewMode(viewMode?: NavigationTabletErrorsMode) {\n return {type: GET_TABLET_ERRORS.PARTITION, data: {viewMode}};\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","import compact_ from 'lodash/compact';\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\n\nimport {createSelector} from 'reselect';\n\nimport ypath from '../../../common/thor/ypath';\nimport unipika from '../../../common/thor/unipika';\n\nimport type {RootState} from '../../../store/reducers';\nimport type {ValueOf, YTError} from '../../../types';\nimport {getAttributes, getParsedPath, getPath, getTransaction} from './index';\nimport {ParsedPath, prepareNavigationState} from '../../../utils/navigation';\nimport {Tab} from '../../../constants/navigation/index';\n\nimport {getTableMountConfigHasData} from '../../../store/selectors/navigation/content/table-mount-config';\nimport {getAccessLogBasePath} from '../../../config';\nimport {getTabletErrorsBackgroundCount} from '../../../store/selectors/navigation/tabs/tablet-errors-background';\nimport UIFactory from '../../../UIFactory';\nimport {getConfigData} from '../../../config/ui-settings';\nimport {getCluster} from '../global';\n\nexport function getNavigationPathAttributesLoadState(state: RootState) {\n return state.navigation.navigation.loadState;\n}\n\nexport const getNavigationPathAttributes = (state: RootState) =>\n state.navigation.navigation.attributes as any;\nexport const getNavigationIsWritable = (state: RootState) =>\n state.navigation.navigation.isWriteable as boolean;\nexport const getNavigationIsAccountUsable = (state: RootState) =>\n state.navigation.navigation.isAccountUsable as boolean;\nexport const getNavigationCheckPermissionsError = (state: RootState) =>\n state.navigation.navigation.checkPermissionsError as YTError | undefined;\nexport const getMode = (state: RootState) => state.navigation.navigation.mode;\n\nexport const getNavigationPathAccount = createSelector(\n [getNavigationPathAttributes],\n (attrs) => attrs.account,\n);\n\nexport const getNavigationBreadcrumbs = createSelector(\n [getPath, getParsedPath, getTransaction],\n (path: string, parsedPath?: ParsedPath, transaction?: string) => {\n if (parsedPath) {\n return map_(parsedPath?.fragments, (item, index) => {\n return {\n text: item.name,\n state: prepareNavigationState(parsedPath, transaction, index),\n };\n });\n } else {\n return [\n {\n text: prepareBrokenPath(path),\n state: prepareNavigationState(path, transaction),\n },\n ];\n }\n },\n);\n\nfunction prepareBrokenPath(path: string): string {\n return unipika.prettyprint(path, {\n break: false,\n indent: 0,\n binaryAsHex: false,\n });\n}\n\nexport const getNavigationRestorePath = createSelector([getNavigationPathAttributes], (attrs) => {\n return ypath.getValue(attrs, '/_restore_path');\n});\n\nexport const getNavigationOriginatingQueuePath = (state: RootState) =>\n state.navigation.navigation.originatingQueuePath;\n\nexport const getSupportedTabs = createSelector(\n [\n getNavigationPathAttributes,\n getTableMountConfigHasData,\n getTabletErrorsBackgroundCount,\n getNavigationOriginatingQueuePath,\n ],\n (attributes, mountConfigHasData, tabletErrorsCount, originatingQueuePath) => {\n const isDynamic = attributes.dynamic === true;\n const isPipeline = attributes.pipeline_format_version !== undefined;\n const mountConfigVisible = mountConfigHasData || isDynamic;\n const alwaysSupportedTabs = compact_([\n Tab.CONTENT,\n isPipeline && Tab.FLOW,\n Tab.ATTRIBUTES,\n Tab.USER_ATTRIBUTES,\n mountConfigVisible && Tab.MOUNT_CONFIG,\n Tab.ACL,\n Boolean(getAccessLogBasePath()) && Tab.ACCESS_LOG,\n ]);\n const supportedByAttribute = filter_<ValueOf<typeof Tab>>(\n [Tab.SCHEMA, Tab.LOCKS],\n // eslint-disable-next-line no-prototype-builtins\n (name) => attributes?.hasOwnProperty(name),\n );\n\n if (\n (attributes?.type === 'table' && attributes?.dynamic === true) ||\n attributes?.type === 'replicated_table' ||\n attributes?.type === 'replication_log_table'\n ) {\n supportedByAttribute.push(Tab.TABLETS);\n }\n\n if (\n attributes?.dynamic === true &&\n attributes?.sorted === false &&\n (attributes?.type === 'table' ||\n attributes?.type === 'replicated_table' ||\n attributes?.type === 'chaos_replicated_table')\n ) {\n supportedByAttribute.push(Tab.QUEUE);\n }\n\n if (attributes?.type == 'queue_consumer' || attributes?.treat_as_queue_consumer == true) {\n supportedByAttribute.push(Tab.CONSUMER);\n }\n\n if (originatingQueuePath) {\n supportedByAttribute.push(Tab.ORIGINATING_QUEUE);\n }\n\n let supportedTabletErrors: Array<ValueOf<typeof Tab>> = [];\n if (\n tabletErrorsCount > 0 ||\n (getConfigData().allowTabletErrorsAPI && attributes.tablet_error_count >= 0)\n ) {\n supportedTabletErrors = [Tab.TABLET_ERRORS];\n }\n\n const supportedTabs = new Set<string>([\n ...alwaysSupportedTabs,\n ...supportedByAttribute,\n ...supportedTabletErrors,\n ]);\n\n UIFactory.getNavigationExtraTabs().forEach((tab) => {\n if (tab.isSupported(attributes)) {\n supportedTabs.add(tab.value);\n }\n });\n\n return supportedTabs;\n },\n);\n\nexport const getTabs = createSelector(\n [\n getSupportedTabs,\n getTabletErrorsBackgroundCount,\n getAttributes,\n getNavigationOriginatingQueuePath,\n getCluster,\n ],\n (supportedTabs, tabletErrorsCount, attributes, originatingQueuePath, cluster) => {\n const isACO = attributes?.type === 'access_control_object';\n\n const tabs: {\n value: string;\n title: string;\n hotkey?: {\n keys: string;\n tab: string;\n scope: string;\n }[];\n text?: string;\n caption?: string;\n counter?: number;\n url?: string;\n external?: boolean;\n routed?: false;\n }[] = [\n {\n value: Tab.CONSUMER,\n title: 'Go to consumer [Alt+R]',\n hotkey: [\n {\n keys: 'alt+r',\n tab: Tab.CONSUMER,\n scope: 'all',\n },\n ],\n },\n {\n value: Tab.CONTENT,\n title: 'Go to content [Alt+C]',\n text: isACO ? 'Principal ACL' : undefined,\n hotkey: [\n {\n keys: 'alt+c',\n tab: Tab.CONTENT,\n scope: 'all',\n },\n ],\n },\n {\n value: Tab.QUEUE,\n title: 'Go to queue [Alt+Q]',\n hotkey: [\n {\n keys: 'alt+q',\n tab: Tab.QUEUE,\n scope: 'all',\n },\n ],\n },\n {\n value: Tab.ATTRIBUTES,\n title: 'Go to attributes [Alt+A]',\n hotkey: [\n {\n keys: 'alt+a',\n tab: Tab.ATTRIBUTES,\n scope: 'all',\n },\n ],\n caption: 'Attributes',\n },\n {\n value: Tab.USER_ATTRIBUTES,\n title: 'Go to user attributes [Alt+U]',\n hotkey: [\n {\n keys: 'alt+u',\n tab: Tab.USER_ATTRIBUTES,\n scope: 'all',\n },\n ],\n caption: 'User Attributes',\n },\n {\n value: Tab.MOUNT_CONFIG,\n title: 'Go to mount config',\n hotkey: [\n {\n keys: 'alt+m',\n tab: Tab.MOUNT_CONFIG,\n scope: 'all',\n },\n ],\n },\n {\n value: Tab.ACL,\n title: 'Go to ACL [Alt+P]',\n hotkey: [\n {\n keys: 'alt+p',\n tab: Tab.ACL,\n scope: 'all',\n },\n ],\n caption: 'ACL',\n },\n {\n value: Tab.ACCESS_LOG,\n title: 'Access log',\n },\n {\n value: Tab.FLOW,\n title: 'Go to content [Alt+F]',\n text: 'Flow',\n hotkey: [\n {\n keys: 'alt+f',\n tab: Tab.FLOW,\n scope: 'all',\n },\n ],\n },\n {\n value: Tab.LOCKS,\n title: 'Go to locks [Alt+L]',\n hotkey: [\n {\n keys: 'alt+l',\n tab: Tab.LOCKS,\n scope: 'all',\n },\n ],\n counter: ypath.getValue(attributes, '/lock_count'),\n },\n {\n value: Tab.ANNOTATION,\n title: 'Go to annotation [Alt+N]',\n hotkey: [\n {\n keys: 'alt+n',\n tab: Tab.ACL,\n scope: 'all',\n },\n ],\n caption: 'Annotation',\n },\n {\n value: Tab.SCHEMA,\n title: 'Go to schema [Alt+S]',\n hotkey: [\n {\n keys: 'alt+s',\n tab: Tab.SCHEMA,\n scope: 'all',\n },\n ],\n },\n {\n value: Tab.TABLETS,\n title: 'Go to tablets [Alt+T]',\n hotkey: [\n {\n keys: 'alt+t',\n tab: Tab.TABLETS,\n scope: 'all',\n },\n ],\n },\n {\n value: Tab.TABLET_ERRORS,\n title: 'Go to tablets errors',\n counter: tabletErrorsCount > 0 ? tabletErrorsCount : undefined,\n },\n {\n value: Tab.ORIGINATING_QUEUE,\n title: 'Originating queue',\n url: `${window.location.origin}/${cluster}/navigation?path=${originatingQueuePath}`,\n external: true,\n routed: false,\n },\n ];\n\n UIFactory.getNavigationExtraTabs().forEach((extraTab) => {\n for (let i = 0; i < tabs.length; i++) {\n let indexOffset = 0;\n let tabToFind;\n\n if ('before' in extraTab.position) {\n tabToFind = extraTab.position.before;\n }\n\n if ('after' in extraTab.position) {\n tabToFind = extraTab.position.after;\n indexOffset = 1;\n }\n\n if (tabs[i].value === tabToFind) {\n const newTab = {\n value: extraTab.value,\n title: extraTab.title,\n hotkey: extraTab.hotkey\n ? [{keys: extraTab.hotkey, tab: extraTab.value, scope: 'all'}]\n : undefined,\n text: extraTab.text,\n caption: extraTab.caption,\n };\n tabs.splice(i + indexOffset, 0, newTab);\n break;\n }\n }\n });\n\n return tabs.filter((tab) => supportedTabs.has(tab.value));\n },\n);\n\nexport const getEffectiveMode = createSelector([getMode, getTabs], (mode, tabs) => {\n const [firstTab] = tabs;\n\n return mode === Tab.AUTO ? firstTab.value : mode;\n});\n","import {createSelector} from 'reselect';\nimport {RootState} from '../../../../store/reducers';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\nimport {getPath} from '../../../../store/selectors/navigation/index';\n\nimport reduce_ from 'lodash/reduce';\n\nimport {ValueOf, YTError} from '../../../../types';\nimport ypath from '../../../../common/thor/ypath';\n\nconst getTabletErrorsErrorCount = (state: RootState) =>\n state.navigation.tabs.tabletErrorsBackground.errorsCount;\nconst getTabletErrorsErrorCountPath = (state: RootState) =>\n state.navigation.tabs.tabletErrorsBackground.errorsCountPath;\nconst getTabletErrorsRaw = (state: RootState) =>\n state.navigation.tabs.tabletErrorsBackground.tabletErrors;\nconst getTabletErrorsPathRaw = (state: RootState) =>\n state.navigation.tabs.tabletErrorsBackground.tabletErrorsPath;\n\nexport const getTabletErrorsViewMode = (state: RootState) =>\n state.navigation.tabs.tabletErrorsBackground.viewMode;\n\nexport const getTabletErrorsLoadingStatus = createSelector(\n [\n (state: RootState) => state.navigation.tabs.tabletErrorsBackground.loading,\n (state: RootState) => state.navigation.tabs.tabletErrorsBackground.loaded,\n (state: RootState) => state.navigation.tabs.tabletErrorsBackground.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n\nexport const getTabletErrorsBackgroundCount = createSelector(\n [getPath, getTabletErrorsErrorCountPath, getTabletErrorsErrorCount],\n (path, errorCountPath, errorCount) => {\n if (path !== errorCountPath) {\n return 0;\n }\n\n return errorCount;\n },\n);\n\nexport const getTabletErrors = createSelector(\n [getPath, getTabletErrorsPathRaw, getTabletErrorsRaw],\n (path, errPath, errors) => {\n if (path !== errPath) {\n return undefined;\n }\n\n return errors;\n },\n);\n\nexport const getTabletErrorsBackgroundCountNoticeVisbile = createSelector(\n [getTabletErrorsBackgroundCount, getTabletErrors],\n (count, data) => {\n const {tablet_errors, replication_errors} = data || {};\n const tabletErrorsCount = calculateSubitemsCount(tablet_errors);\n const replicationErrorsCount = calculateSubitemsCount(replication_errors);\n\n return count !== tabletErrorsCount + replicationErrorsCount;\n },\n);\n\nfunction calculateSubitemsCount(items?: Record<string, Array<unknown>>) {\n return reduce_(\n items,\n (acc, subItems) => {\n return acc + subItems.length;\n },\n 0,\n );\n}\n\ntype ReplicaId = string;\ntype TabletId = string;\n\nexport const getTabletErrorsReplicationErrors = createSelector([getTabletErrors], (data) => {\n return reduce_(\n data?.replication_errors,\n (acc, errors, replicaId) => {\n const errorsByTablet = reduce_(\n errors,\n (errAcc, error) => {\n const tablet_id = ypath.getValue(error.attributes, '/tablet_id');\n if (!errAcc[tablet_id]) {\n errAcc[tablet_id] = [];\n }\n errAcc[tablet_id].push(error);\n return errAcc;\n },\n {} as ValueOf<typeof acc>,\n );\n acc[replicaId] = errorsByTablet;\n return acc;\n },\n {} as Record<ReplicaId, Record<TabletId, Array<YTError>>>,\n );\n});\n","import React from 'react';\nimport {useDispatch} from 'react-redux';\n\nimport {loadPoolTreesIfNotLoaded} from '../store/actions/global';\nimport {loadDefaultPoolTree} from '../utils/poolTrees';\n\nexport function usePoolTreesLoaded() {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadPoolTreesIfNotLoaded());\n }, [dispatch]);\n}\n\nexport function PoolTreesLoader() {\n usePoolTreesLoaded();\n return null;\n}\n\nexport function useDefaultPoolTree() {\n const [defaultPoolTree, setDefaultPoolTree] = React.useState<string | undefined>();\n\n React.useEffect(() => {\n loadDefaultPoolTree().then((value) => {\n setDefaultPoolTree(value);\n });\n }, []);\n\n return defaultPoolTree;\n}\n\nexport function WaitForDefaultPoolTree({\n children,\n}: {\n children: ({defaultPoolTree}: {defaultPoolTree: string}) => React.ReactNode;\n}) {\n const defaultPoolTree = useDefaultPoolTree();\n\n return defaultPoolTree ? children({defaultPoolTree}) : null;\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import {ThunkAction} from 'redux-thunk';\n\n// @ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {getMetrics} from '../../../common/utils/metrics';\nimport {navigationTrackVisit} from '../../../store/actions/favourites';\nimport {RumWrapper, YTApiId, ytApiV3, ytApiV3Id} from '../../../rum/rum-wrap-api';\nimport {RumMeasureTypes} from '../../../rum/rum-measure-types';\n\nimport {isPathAutoCorrectionSettingEnabled} from '../../../store/selectors/settings';\nimport {getPath, getTransaction} from '../../../store/selectors/navigation';\n\nimport {\n autoCorrectPath,\n cancelRequests,\n getParentPath,\n prepareRequest,\n saveRequestCancellation,\n} from '../../../utils/navigation';\nimport {prepareAttributes} from '../../../utils/index';\nimport {getBatchError} from '../../../utils/utils';\nimport {getPermissionDeniedError} from '../../../utils/errors';\n\nimport {GENERIC_ERROR_MESSAGE, TYPED_OUTPUT_FORMAT} from '../../../constants/index';\nimport {\n CLEAR_TRANSACTION,\n NAVIGATION_PARTIAL,\n SET_MODE,\n SET_TRANSACTION,\n Tab,\n UPDATE_PATH,\n UPDATE_VIEW,\n} from '../../../constants/navigation/index';\nimport {getCluster, getCurrentUserName} from '../../../store/selectors/global';\nimport {fetchTableMountConfig} from '../../../store/actions/navigation/content/table/table-mount-config';\nimport {checkPermissions} from '../../../utils/acl/acl-api';\nimport {loadTabletErrorsCount} from './tabs/tablet-errors/tablet-errors-background';\nimport {getTabs} from '../../../store/selectors/navigation/navigation';\nimport UIFactory from '../../../UIFactory';\nimport {RootState} from '../../../store/reducers';\nimport {NavigationAction, NavigationState} from '../../../store/reducers/navigation/navigation';\nimport {fetchOriginatingQueuePath} from './tabs/queue/exports';\n\ntype NavigationThunk<T = void> = ThunkAction<T, RootState, unknown, NavigationAction>;\n\nexport function updateView(settings: {trackVisit?: boolean} = {}): NavigationThunk {\n return (dispatch, getState) => {\n const state = getState();\n const currentPath = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: UPDATE_VIEW.REQUEST});\n // Update path for use default path and auto correct path\n const path = dispatch(updatePath(currentPath, false));\n cancelRequests();\n\n dispatch(loadTabletErrorsCount({path, saveCancelTokenSource: saveRequestCancellation}));\n\n const requestParams = {\n path,\n transaction,\n };\n\n const cluster = getCluster(state);\n\n const id = new RumWrapper(cluster, RumMeasureTypes.NAVIGATION_PRELOAD);\n\n return id\n .fetch(\n YTApiId.navigationAttributes,\n ytApiV3Id.executeBatch(\n YTApiId.navigationAttributes,\n {\n requests: [\n {\n command: 'get' as const,\n parameters: {\n ...prepareRequest('/@', requestParams),\n attributes: getAttributesToLoad(),\n },\n },\n ],\n output_format: TYPED_OUTPUT_FORMAT,\n },\n saveRequestCancellation,\n ),\n )\n .then((results) => {\n const [attrs] = results;\n\n const error = getBatchError(results, 'Failed to get navigation attributes');\n if (error) {\n throw error;\n }\n\n return attrs.output;\n })\n .then((attributes) => {\n const preparedAttributes = prepareAttributes(attributes, {\n asHTML: false,\n }) as {account: string; type: string};\n\n if (settings.trackVisit) {\n dispatch(navigationTrackVisit(path));\n }\n\n getMetrics().countEvent('navigation_path', {type: preparedAttributes.type});\n\n const user = getCurrentUserName(state);\n const {account} = preparedAttributes;\n\n dispatch({\n type: UPDATE_VIEW.SUCCESS,\n data: {\n attributesWithTypes: attributes,\n attributes: preparedAttributes,\n },\n });\n\n const dispatchAccountPermissions = ({\n isWriteable,\n isAccountUsable,\n checkPermissionsError,\n }: Pick<\n Partial<NavigationState>,\n 'isWriteable' | 'isAccountUsable' | 'checkPermissionsError'\n >) => {\n dispatch({\n type: NAVIGATION_PARTIAL,\n data: {isWriteable, isAccountUsable, checkPermissionsError},\n });\n };\n\n dispatch(fetchTableMountConfig(path));\n dispatch(fetchOriginatingQueuePath());\n\n if (!account) {\n /**\n * If account is not defined we just pretend that everything is awesome\n * and the code works the same as there are no any checks of permissions.\n */\n return dispatchAccountPermissions({\n isWriteable: true,\n isAccountUsable: true,\n });\n }\n\n checkPermissions(\n [\n {\n user,\n permission: 'write',\n path,\n transaction_id: transaction,\n },\n {\n user,\n permission: 'use',\n path: `//sys/accounts/${account}`,\n transaction_id: transaction,\n },\n ],\n YTApiId.navigationCheckPermissions,\n )\n .then(([{action: writeAction}, {action: useAction}]) => {\n dispatchAccountPermissions({\n isWriteable: writeAction === 'allow',\n isAccountUsable: useAction === 'allow',\n });\n })\n .catch((checkPermissionsError) => {\n dispatchAccountPermissions({checkPermissionsError});\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({\n type: UPDATE_VIEW.CANCELLED,\n });\n } else {\n const permissionDeniedError = getPermissionDeniedError(error);\n const message = ['Error occurred when loading path.'];\n if (!permissionDeniedError) message.push(GENERIC_ERROR_MESSAGE);\n\n ytApiV3\n .exists({path: '//sys/idm/lock'})\n .catch(() => false)\n .then((isIdmSupported) => {\n dispatch({\n type: UPDATE_VIEW.FAILURE,\n data: {\n message: message.join(' '),\n details: error,\n isIdmSupported,\n },\n });\n });\n }\n });\n };\n}\n\nexport function setMode(mode: NavigationState['mode']): NavigationThunk {\n return (dispatch, getState) => {\n const [firstTab] = getTabs(getState());\n\n dispatch({\n type: SET_MODE,\n data: mode === firstTab?.value ? Tab.AUTO : mode,\n });\n };\n}\n\nexport function onTransactionChange(): NavigationThunk {\n return (dispatch) => {\n dispatch(updateView({trackVisit: true}));\n // Need to update breadcrumbs dimensions after transaction change\n window.dispatchEvent(new Event('resize'));\n };\n}\n\nexport function setTransaction(transaction?: string): NavigationThunk {\n return (dispatch) => {\n dispatch({\n type: SET_TRANSACTION,\n data: transaction,\n });\n dispatch(onTransactionChange());\n };\n}\n\nexport function clearTransaction(): NavigationThunk {\n return (dispatch) => {\n dispatch({\n type: CLEAR_TRANSACTION,\n });\n dispatch(onTransactionChange());\n };\n}\n\nexport function updatePath(path: string, shouldUpdateContentMode = true): NavigationThunk<string> {\n return (dispatch, getState) => {\n const autoCorrectionEnabled = isPathAutoCorrectionSettingEnabled(getState());\n\n const correctedPath = autoCorrectionEnabled ? autoCorrectPath(path) : path;\n\n dispatch({\n type: UPDATE_PATH,\n data: {\n path: correctedPath,\n shouldUpdateContentMode,\n },\n });\n\n return correctedPath;\n };\n}\n\nexport function navigateParent(): NavigationThunk {\n return (dispatch, getState) => {\n const {path} = getState().navigation.navigation;\n const nextPath = getParentPath(path);\n dispatch(updatePath(nextPath));\n };\n}\n\nconst attributesToLoad = [\n '_format',\n '_read_schema',\n '_restore_path',\n '_yql_key_meta',\n '_yql_op_id',\n '_yql_row_spec',\n '_yql_subkey_meta',\n '_yql_type',\n '_yql_value_meta',\n 'access_time',\n 'account',\n 'acl',\n 'atomicity',\n 'broken',\n 'chunk_count',\n 'chunk_row_count',\n 'cluster_name',\n 'compressed_data_size',\n 'compression_codec',\n 'compression_ratio',\n 'creation_time',\n 'data_weight',\n 'default_disk_space',\n 'disk_space',\n 'dynamic',\n 'effective_expiration',\n 'enable_dynamic_store_read',\n 'erasure_codec',\n 'expiration_time',\n 'expiration_timeout',\n 'id',\n 'in_memory_mode',\n 'key',\n 'key_columns',\n 'leader_controller_address',\n 'lock_count',\n 'lock_mode',\n 'locks',\n 'mode',\n 'modification_time',\n 'monitoring_cluster',\n 'monitoring_project',\n 'optimize_for',\n 'owner',\n 'path',\n 'pipeline_format_version',\n 'primary_medium',\n 'queue_static_export_destination',\n 'remount_needed_tablet_count',\n 'replica_path',\n 'replicated_table_options',\n 'replication_factor',\n 'resource_usage',\n 'schema',\n 'schema_mode',\n 'security_tags',\n 'sorted',\n 'sorted_by',\n 'start_time',\n 'state',\n 'tablet_cell_bundle',\n 'tablet_count',\n 'tablet_error_count',\n 'tablet_state',\n 'target_path',\n 'timeout',\n 'title',\n 'treat_as_queue_consumer',\n 'type',\n 'uncompressed_data_size',\n];\n\nfunction getAttributesToLoad() {\n const additionalAttributes: Array<string> = [];\n\n UIFactory.getNavigationExtraTabs().forEach((extraTab) => {\n additionalAttributes.push(...extraTab.additionalAttributes);\n });\n\n const attributesSet = new Set([...attributesToLoad, ...additionalAttributes]);\n\n return [...attributesSet];\n}\n\nexport function setNavigationSidePanelMode(\n sidePanelMode: NavigationState['sidePanelMode'],\n): NavigationAction {\n return {type: NAVIGATION_PARTIAL, data: {sidePanelMode}};\n}\n","// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {TABLE_MOUNT_CONFIG} from '../../../../../constants/navigation/content/table';\nimport {ThunkAction} from 'redux-thunk';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport {RootState} from '../../../../../store/reducers';\nimport {TableMountConfigAction} from '../../../../../store/reducers/navigation/content/table/table-mount-config';\nimport {isCancelled} from '../../../../../utils/cancel-helper';\n\ntype TableMountConfigThunkAction = ThunkAction<unknown, RootState, unknown, TableMountConfigAction>;\n\nexport function fetchTableMountConfig(path: string): TableMountConfigThunkAction {\n return (dispatch) => {\n dispatch({type: TABLE_MOUNT_CONFIG.REQUEST});\n\n return ytApiV3Id\n .executeBatch(YTApiId.navigationTableMountConfig, {\n requests: [{command: 'get', parameters: {path: `${path}/@mount_config`}}],\n })\n .then(([{output, error}]) => {\n if (error && error?.code !== yt.codes.NODE_DOES_NOT_EXIST) {\n dispatch({type: TABLE_MOUNT_CONFIG.FAILURE, data: {error}});\n return;\n }\n\n dispatch({\n type: TABLE_MOUNT_CONFIG.SUCCESS,\n data: {data: output},\n });\n })\n .catch((error: any) => {\n if (isCancelled(error)) {\n dispatch({type: TABLE_MOUNT_CONFIG.CANCELLED});\n } else {\n dispatch({type: TABLE_MOUNT_CONFIG.FAILURE, data: {error}});\n }\n });\n };\n}\n","import {ThunkAction, UnknownAction} from '@reduxjs/toolkit';\nimport ypath from '../../../../../common/thor/ypath';\n\nimport {RootState} from '../../../../reducers';\nimport {getAttributes} from '../../../../selectors/navigation';\n\nimport {ytApiV3} from '../../../../../rum/rum-wrap-api';\nimport {SET_ORIGINATING_QUEUE_PATH} from '../../../../../constants/navigation';\ntype AsyncAction<R = void> = ThunkAction<R, RootState, unknown, UnknownAction>;\n\nexport function fetchOriginatingQueuePath(): AsyncAction {\n return async (dispatch, getState) => {\n const state = getState();\n const attributes = getAttributes(state);\n const queueId = ypath.getValue(\n attributes,\n '/queue_static_export_destination/originating_queue_id',\n );\n try {\n const originatingPath = await ytApiV3.executeBatch({\n parameters: {\n requests: [\n {\n command: 'get' as const,\n parameters: {\n path: `#${queueId}/@path`,\n },\n },\n ],\n },\n });\n dispatch({\n type: SET_ORIGINATING_QUEUE_PATH,\n data: originatingPath[0].output,\n });\n } catch (error: any) {}\n };\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n"],"names":["getNavigationTableMountConfig","state","navigation","content","tableMountConfig","getTableMountConfigHasData","createSelector","data","error","isEmpty_","openCreateTableModal","parentDirectory","dispatch","type","CREATE_TABLE_MODAL_DATA_FIELDS","_objectSpread","initialState","showModal","closeCreateTableModal","toaster","Toaster","createTable","path","attributes","getState","params","what","dynamic","cluster","getCluster","yt","create","then","updateView","add","name","timeout","theme","title","_jsxs","React","children","_jsx","Link","url","genNavigationUrl","axios","isCancel","_error$response","response","code","message","concat","actions","label","onClick","showErrorPopup","Promise","reject","setCreateTableKeyColumns","keyColumns","setCreateTableColumnsOrder","columnsOrder","setCreateTableLockSuggestions","allColumnLockValues","arguments","length","undefined","columnLockSuggestions","uniq_","sort","setCreateTableGroupSuggestions","allColumnGroups","columnGroupSuggestions","block","cn","OperationShortInfo","props","id","output_attribute_name","_React$useState","_React$useState2","_slicedToArray","operation","setOperation","finishTimeRaw","ypath","getValue","timerId","setInterval","getOperation","output_format","TYPED_OUTPUT_FORMAT","operation_id","clearInterval","useSelector","output","startTime","moment","diff","className","MetaTable","items","key","value","_toConsumableArray","format","TimeDuration","OperationState","ClickableText","_ref","getNavigationTableSortPaths","modals","tableMergeSortModal","paths","getNavigationTableOutputPathAttributes","outputPathAttributes","getNavigationTableAttributesValues","result","Object","prototype","hasOwnProperty","call","getNavigationTableSortError","getNavigationTableSortVisible","sortVisible","getNavigationTableMergeVisible","mergeVisible","getNavigationTableSortSuggestColumns","suggestColumns","requests","CancelHelper","loadReplicas","getPath","transaction","getTransaction","LOAD_REPLICAS_REQUEST","removeAllRequests","ytApiV3Id","get","YTApiId","navigationRTReplicas","parameters","prepareRequest","cancellation","saveCancelToken","replicas","hammer","utils","mapToYSONList","LOAD_REPLICAS_SUCCESS","sortBy_","CANCELLED","LOAD_REPLICAS_CANCELLED","LOAD_REPLICAS_FAILURE","performReplicaAction","mode","auto_replica_tracker","replica","prevMode","prevState","prevAutoReplicaTracker","actionName","filter","Boolean","join","resolve","getMetrics","countEvent","replica_id","enabled","enable_replicated_table_tracker","ytApiV3","alterTableReplica","abortAndReset","updateEnableReplicatedTableTracker","set","useEvent","callback","fnRef","current","memoFn","_fnRef$current","_len","args","Array","_key","apply","useInternalLayoutEffect","window","document","createElement","useLayoutUpdateEffect","deps","firstMountRef","useLayoutEffect","firstMount","useSafeState","defaultValue","destroyRef","setValue","updater","ignoreDestroy","hasValue","warned","preWarningFns","warning","valid","note","method","warningOnce","preMessage","fn","push","resetWarned","noteOnce","getOffset","min","max","getDirectionStyle","direction","offset","positionStyle","right","transform","bottom","top","left","getIndex","index","isArray","KeyCode","MAC_ENTER","BACKSPACE","TAB","NUM_CENTER","ENTER","SHIFT","CTRL","ALT","PAUSE","CAPS_LOCK","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","PRINT_SCREEN","INSERT","DELETE","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","QUESTION_MARK","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","META","WIN_KEY_RIGHT","CONTEXT_MENU","NUM_ZERO","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","NUM_MULTIPLY","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NUMLOCK","SEMICOLON","DASH","EQUALS","COMMA","PERIOD","SLASH","APOSTROPHE","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","WIN_KEY","MAC_FF_META","WIN_IME","isTextModifyingKeyEvent","e","keyCode","altKey","ctrlKey","metaKey","isCharacterKey","navigator","userAgent","indexOf","step","includedStart","includedEnd","tabIndex","keyboard","styles","classNames","_excluded","Handle","ref","_getIndex","prefixCls","valueIndex","onStartMove","style","render","dragging","onOffsetChange","onChangeComplete","onFocus","onMouseEnter","restProps","_React$useContext","disabled","range","ariaLabelForHandle","ariaLabelledByForHandle","ariaValueTextFormatterForHandle","handlePrefixCls","onInternalStartMove","divProps","role","onMouseDown","onTouchStart","onKeyDown","which","preventDefault","onKeyUp","handleNode","handle","values","handleRender","activeHandleRender","draggingIndex","handlesRef","focus","_handlesRef$current$i","activeIndex","setActiveIndex","handleProps","map","node","pointerEvents","_onClick","included","textCls","stopPropagation","marks","markPrefixCls","activeStyle","dotClassName","active","mergedStyle","dots","stepDots","dotSet","Set","forEach","mark","from","dotValue","start","end","replaceCls","trackPrefixCls","offsetStart","offsetEnd","width","height","track","startPoint","trackList","startValue","endValue","Math","list","i","tracksNode","tracks","getPosition","obj","touches","pageX","pageY","Reflect","keys","ownKeys","Slider","_props$prefixCls","_props$disabled","_props$keyboard","autoFocus","onBlur","_props$min","_props$max","_props$step","count","onChange","onBeforeChange","onAfterChange","_props$allowCross","allowCross","_props$pushable","pushable","draggableTrack","reverse","vertical","_props$included","trackStyle","handleStyle","railStyle","dotStyle","activeDotStyle","_props$tabIndex","containerRef","mergedMin","isFinite","mergedMax","mergedStep","mergedPush","markList","markObj","Number","a","b","_useOffset","formatRangeValue","val","formatStepValue","stepValue","round","getDecimal","num","String","split","maxDecimal","fixedValue","toFixed","formatValue","formatNextValue","alignValues","closeValue","closeDist","alignValue","dist","abs","offsetValue","nextValue","originValue","targetDistValue","potentialValues","sign","compareValue","valueDist","potentialValue","cloneValues","offsetChangedValue","changed","needPush","nextValues","pushNum","_offsetChangedValue","_i","_changed","_offsetChangedValue2","_i2","_changed2","_offsetChangedValue3","_i3","_changed3","_offsetChangedValue4","useOffset","_useOffset2","offsetValues","_useMergedState","defaultStateValue","option","postState","_useState","_useState2","innerValue","setInnerValue","mergedValue","postMergedValue","onChangeFn","_useState3","_useState4","prevValue","setPrevValue","prev","useMergedState","_useMergedState2","rawValues","valueList","_valueList$","returnValues","pointCount","slice","_returnValues","rawValuesRef","getTriggerValue","triggerValues","triggerChange","cloneNextValues","obj1","obj2","shallow","refSet","deepEqual","level","circular","has","newLevel","every","finishChange","finishValue","_useDrag","draggingValue","setDraggingValue","_React$useState3","_React$useState4","setDraggingIndex","_React$useState5","_React$useState6","cacheValues","setCacheValues","_React$useState7","_React$useState8","originValues","setOriginValues","mouseMoveEventRef","mouseUpEventRef","removeEventListener","flushValues","some","updateCacheValue","offsetPercent","maxStartOffset","maxEndOffset","formatStartValue","cloneCacheValues","offsetDist","next","sourceValues","targetValues","startValues","initialValues","_getPosition","startX","startY","onMouseMove","event","offSetPercent","_getPosition2","moveX","moveY","offsetX","offsetY","_containerRef$current","getBoundingClientRect","onMouseUp","addEventListener","_useDrag2","onStartDrag","changeToCloseValue","newValue","_document$activeEleme","_document$activeEleme2","activeElement","blur","keyboardValue","setKeyboardValue","mergedDraggableTrack","lastIndexOf","sortedCacheValues","_React$useMemo","_React$useMemo2","_containerRef$current2","contains","context","Provider","percent","clientX","clientY","rail","prepareValue","_ref$value","_ref$min","_ref$max","getParsedValue","textValue","parse","parseFloat","getTextValue","toString","getClosestValue","low","hi","mid","floor","LEFT_INFO_POINT_STYLE","position","marginLeft","display","verticalAlign","textAlign","RIGHT_INFO_POINT_STYLE","flexDirection","RangeInputPicker","_Component","_this","_classCallCheck","_callSuper","wrapperRef","sliderRef","textInputInnerRef","debouncedCallOnUpdate","debouncedHandleOnAfterUpdate","callOnUpdate","onUpdate","currentValue","prepareChange","_this$state","isNaN","actualValue","handleOnAfterUpdate","onAfterUpdate","handleInputBlur","setState","focused","getDisplayTextValue","handleInputFocus","_this$props","handleInputUpdate","patternRegex","test","handleKeyDown","_this$props2","onSubmit","handleSliderChange","_this$state2","handleWrapperClick","slider","target","handleInfoPointClick","_this$props3","_this$props4","handleOutsideClick","onOutsideClick","_this$state3","wrapper","renderItem","renderRangeItem","renderRangeInfoItems","_this$props5","_this$props5$infoPoin","infoPointsCount","_this$props5$minValue","minValue","_this$props5$maxValue","maxValue","infoItems","point","pointWidth","pointsRange","assign","renderInfoItems","_this$props$infoPoint","_this$state4","points","_ref2","mapInfoPoints","el","arr","ceil","range_","getInfoPoints","reduce","acc","debounce_","debounceDelay","getPreparedState","_inherits","_createClass","this","cancel","rangeInfoItems","rcSliderInfoItems","_this$props6","placeholder","readOnly","size","pattern","controlProps","_this$state5","TextInput","controlRef","RegExp","displayFormat","currentState","availableValues","_props$minValue","_props$maxValue","_ref$focused","_ref$textValue","v1","v2","prepareAvailableValues","prevProps","nextProps","Component","defaultProps","ASCENDING","DESCENDING","ColumnsWrapper","_React$Component","tabItems","orderedTabItems","onOrderChanged","order","newIndex","oldIndex","moved","setKeyColumns","setOrderedTabItems","toggleKeyColumn","item","onCloneColumn","setTimeout","onAddColumn","duplicate","renderKeyIcon","icon","Tooltip","Button","view","Icon","awesome","DropdownMenu","text","action","switcher","onMoveTab","_ref3","newTabItems","itemToMove","splice","setColumnsOrder","activeTab","rest","_objectWithoutProperties","TabFieldVertical","sortable","wrapTo","prevTabItems","prevOrderedTabItems","res","tabItemsMap","forEach_","itemsToAdd","differenceBy_","_ref4","idsToRemove","_ref5","filtered","filter_","_ref6","map_","_ref7","mapDispatchToProps","ColumnsWrapperConnected","connect","CreateTableTabField","_React$Component2","_this2","_len2","_key2","_this2$props$onCreate","onCreateTab","userOptions","_this3","_excluded2","_tabItems","_toArray","tableSettings","restItems","renderAddColumnRow","virtualized","isTabControl","isTabControlVertical","showTableSortModal","loadPoolTreesIfNotLoaded","setModalPartial","tableSortModalLoadColumns","hideTableSortModal","showTableMergeModal","hideTableMergeModal","command","executeBatch","navigationTableSortLoadColumns","results","getBatchError","columns","_v","toLower_","runTableSort","spec","makeUiMarker","Page","NAVIGATION","wrapApiPromiseByToaster","toasterName","output_table_path","successContent","opId","JSON","AppStoreProvider","successTitle","errorTitle","autoHide","loadStorageAttributes","_asyncToGenerator","_regeneratorRuntime","_callee","wrap","_context","attributesEditorGetAttrs","PathAttribute","OPTIMIZE_FOR","COMPRESSION_CODEC","ERASURE_CODEC","skipSuccessToast","USE_SKIP_ERROR_FN_NODE_DOES_NOT_EXIST","sent","entries","attribute","changeAttribute","stop","_x","_x2","runTableMerge","merge","cancelTokenSrc","isPathStaticTable","navigationIsStaticTable","cancelSrc","d","isDynamic","CypressNodeTypes","TABLE","getCreateTableModalState","isCreateTableModalVisible","getColumnLockSuggestions","locks","getColumnGroupSuggestions","groups","PathEditor","_props$defaultPath","suggestionsList","input","hideSuggestions","inputFocus","selectedIndex","handleInputChange","inputChange","debounceLoading","callCallback","ARROW_DOWN","selectNextSuggestion","ARROW_UP","selectPrevSuggestion","handleEnterClick","ESCAPE","handleEscClick","handleTabClick","actualSuggestions","iconType","completedPath","getCompletedPath","isSelected","iconName","getIconNameForType","targetPathBroken","lastFragment","_fragments","fragments","thorYPath","YPath","_unused","selected","defaultPath","loadSuggestionsList","customFilter","_setFocus","removeActiveRequests","_this$input$current","offsetWidth","cb","prevIndex","getPrevSelectedIndex","nextIndex","getNextSelectedIndex","onApply","inputPath","currentTarget","suggestion","find_","_","_this$input$current2","onCancel","hasClear","ReactList","itemRenderer","errorMessage","ErrorMessage","suggestionsError","showErrors","inputWidth","isVisible","renderError","renderSuggestions","Popup","placement","onClose","anchorRef","open","renderInput","renderPopup","UseHotkeysScope","scope","visible","suggestions","filterByCurrentPath","pathEditor","currentParentPath","_getState$navigation$","suggestionsPath","suggestionsLoaded","preparePath","FETCH_SUGGESTIONS","FAILURE","REQUEST","loadSuggestions","SUCCESS","pathEditorRequests","getTabletErrors","GET_TABLET_ERRORS","ytApiV4Id","navigationTabletErrors","removeAllAndSave","tabletErrors","tabletErrorsPath","isCancelled","loadTabletErrorsCount","options","navigationTypeDynamic","saveCancelTokenSource","navigationTabletErrorsCountReplicatedTable","_ref5$output","updateTabletErrrosCount","loadTabletErrorsCountOfReplicatedTable","navigationTabletErrorsCountDynTable","errorsCount","loadTabletErrorsCountOfDynamicTable","errorsCountPath","PARTITION","updateTabletErrorsViewMode","viewMode","Symbol","for","getNavigationPathAttributesLoadState","loadState","getNavigationPathAttributes","getNavigationIsWritable","isWriteable","getNavigationIsAccountUsable","isAccountUsable","getNavigationCheckPermissionsError","checkPermissionsError","getMode","getNavigationPathAccount","attrs","account","getNavigationBreadcrumbs","getParsedPath","parsedPath","prepareNavigationState","prepareBrokenPath","unipika","prettyprint","break","indent","binaryAsHex","getNavigationRestorePath","getNavigationOriginatingQueuePath","originatingQueuePath","getSupportedTabs","getTabletErrorsBackgroundCount","mountConfigHasData","tabletErrorsCount","isPipeline","pipeline_format_version","mountConfigVisible","alwaysSupportedTabs","compact_","Tab","CONTENT","FLOW","ATTRIBUTES","USER_ATTRIBUTES","MOUNT_CONFIG","ACL","getAccessLogBasePath","ACCESS_LOG","supportedByAttribute","SCHEMA","LOCKS","TABLETS","sorted","QUEUE","treat_as_queue_consumer","CONSUMER","ORIGINATING_QUEUE","supportedTabletErrors","getConfigData","allowTabletErrorsAPI","tablet_error_count","TABLET_ERRORS","supportedTabs","UIFactory","getNavigationExtraTabs","tab","isSupported","getTabs","getAttributes","isACO","tabs","hotkey","caption","counter","ANNOTATION","location","origin","external","routed","extraTab","indexOffset","tabToFind","before","after","newTab","getEffectiveMode","firstTab","AUTO","getTabletErrorsViewMode","tabletErrorsBackground","getTabletErrorsLoadingStatus","loading","loaded","calculateLoadingStatus","errorCountPath","errorCount","errPath","errors","getTabletErrorsBackgroundCountNoticeVisbile","tablet_errors","replication_errors","calculateSubitemsCount","reduce_","subItems","getTabletErrorsReplicationErrors","replicaId","errorsByTablet","errAcc","tablet_id","usePoolTreesLoaded","useDispatch","PoolTreesLoader","useDefaultPoolTree","defaultPoolTree","setDefaultPoolTree","loadDefaultPoolTree","WaitForDefaultPoolTree","hasOwn","classes","arg","argType","inner","includes","module","exports","default","settings","currentPath","UPDATE_VIEW","updatePath","cancelRequests","saveRequestCancellation","requestParams","RumWrapper","RumMeasureTypes","NAVIGATION_PRELOAD","fetch","navigationAttributes","getAttributesToLoad","preparedAttributes","prepareAttributes","asHTML","trackVisit","navigationTrackVisit","user","getCurrentUserName","attributesWithTypes","dispatchAccountPermissions","NAVIGATION_PARTIAL","TABLE_MOUNT_CONFIG","navigationTableMountConfig","_ref2$","NODE_DOES_NOT_EXIST","fetchTableMountConfig","queueId","originatingPath","SET_ORIGINATING_QUEUE_PATH","t0","checkPermissions","permission","transaction_id","navigationCheckPermissions","writeAction","useAction","permissionDeniedError","getPermissionDeniedError","GENERIC_ERROR_MESSAGE","exists","isIdmSupported","details","setMode","_getTabs","SET_MODE","onTransactionChange","dispatchEvent","Event","setTransaction","SET_TRANSACTION","clearTransaction","CLEAR_TRANSACTION","shouldUpdateContentMode","correctedPath","isPathAutoCorrectionSettingEnabled","autoCorrectPath","UPDATE_PATH","navigateParent","getParentPath","attributesToLoad","additionalAttributes","attributesSet","setNavigationSidePanelMode","sidePanelMode"],"sourceRoot":""}
|