@ytsaurus/ui 1.41.2 → 1.42.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/server/components/yt-auth.js +2 -1
- package/build/cjs/server/components/yt-auth.js.map +1 -1
- package/build/cjs/server/controllers/clusters.js +1 -2
- package/build/cjs/server/controllers/clusters.js.map +1 -1
- package/build/cjs/server/controllers/login.js +1 -1
- package/build/cjs/server/controllers/login.js.map +1 -1
- package/build/cjs/server/middlewares/yt-auth.js +2 -1
- package/build/cjs/server/middlewares/yt-auth.js.map +1 -1
- package/build/cjs/server/utils/index.d.ts +1 -0
- package/build/cjs/server/utils/index.js +6 -1
- package/build/cjs/server/utils/index.js.map +1 -1
- package/build/cjs/ui/UIFactory.d.ts +1 -0
- package/build/cjs/ui/UIFactory.js +3 -0
- package/build/cjs/ui/UIFactory.js.map +1 -1
- package/build/cjs/ui/containers/ClusterPage/ClusterPage.css +3 -0
- package/build/cjs/ui/containers/ClusterPage/ClusterPage.css.map +1 -1
- package/build/cjs/ui/containers/ClusterPage/ClusterPage.js +5 -2
- package/build/cjs/ui/containers/ClusterPage/ClusterPage.js.map +1 -1
- package/build/cjs/ui/containers/ClustersMenu/ClustersMenu.js +2 -1
- package/build/cjs/ui/containers/ClustersMenu/ClustersMenu.js.map +1 -1
- package/build/cjs/ui/containers/RootPage/RootPage.css +1 -0
- package/build/cjs/ui/containers/RootPage/RootPage.css.map +1 -1
- package/build/cjs/ui/containers/RootPage/RootPage.js +2 -1
- package/build/cjs/ui/containers/RootPage/RootPage.js.map +1 -1
- package/build/esm/server/components/yt-auth.js +2 -1
- package/build/esm/server/components/yt-auth.js.map +1 -1
- package/build/esm/server/controllers/clusters.js +2 -3
- package/build/esm/server/controllers/clusters.js.map +1 -1
- package/build/esm/server/controllers/login.js +2 -2
- package/build/esm/server/controllers/login.js.map +1 -1
- package/build/esm/server/middlewares/yt-auth.js +2 -1
- package/build/esm/server/middlewares/yt-auth.js.map +1 -1
- package/build/esm/server/utils/index.d.ts +1 -0
- package/build/esm/server/utils/index.js +4 -0
- package/build/esm/server/utils/index.js.map +1 -1
- package/build/esm/ui/UIFactory.d.ts +1 -0
- package/build/esm/ui/UIFactory.js +3 -0
- package/build/esm/ui/UIFactory.js.map +1 -1
- package/build/esm/ui/containers/ClusterPage/ClusterPage.css +3 -0
- package/build/esm/ui/containers/ClusterPage/ClusterPage.css.map +1 -1
- package/build/esm/ui/containers/ClusterPage/ClusterPage.js +5 -2
- package/build/esm/ui/containers/ClusterPage/ClusterPage.js.map +1 -1
- package/build/esm/ui/containers/ClusterPage/ClusterPage.scss +4 -0
- package/build/esm/ui/containers/ClustersMenu/ClustersMenu.js +2 -1
- package/build/esm/ui/containers/ClustersMenu/ClustersMenu.js.map +1 -1
- package/build/esm/ui/containers/RootPage/RootPage.css +1 -0
- package/build/esm/ui/containers/RootPage/RootPage.css.map +1 -1
- package/build/esm/ui/containers/RootPage/RootPage.js +2 -1
- package/build/esm/ui/containers/RootPage/RootPage.js.map +1 -1
- package/build/esm/ui/containers/RootPage/RootPage.scss +1 -0
- package/dist/public/build/assets-manifest.json +7 -7
- package/dist/public/build/css/{main.72c3782f.css → main.419150a6.css} +2 -2
- package/dist/public/build/css/main.419150a6.css.map +1 -0
- package/dist/public/build/js/main.62803f34.js +3 -0
- package/dist/public/build/js/{main.8367a5da.js.map → main.62803f34.js.map} +1 -1
- package/dist/public/build/manifest.json +4 -4
- package/dist/server/components/yt-auth.js +2 -1
- package/dist/server/controllers/clusters.js +1 -2
- package/dist/server/controllers/login.js +1 -1
- package/dist/server/middlewares/yt-auth.js +2 -1
- package/dist/server/utils/index.d.ts +1 -0
- package/dist/server/utils/index.js +6 -1
- package/package.json +3 -3
- package/dist/public/build/css/main.72c3782f.css.map +0 -1
- package/dist/public/build/js/main.8367a5da.js +0 -3
- /package/dist/public/build/js/{main.8367a5da.js.LICENSE.txt → main.62803f34.js.LICENSE.txt} +0 -0
@@ -212,6 +212,9 @@ var uiFactory = {
|
|
212
212
|
getNodeNannyUrl: function getNodeNannyUrl() {
|
213
213
|
return undefined;
|
214
214
|
},
|
215
|
+
renderAppFooter: function renderAppFooter() {
|
216
|
+
return null;
|
217
|
+
},
|
215
218
|
renderAppNavigation: function renderAppNavigation(props) {
|
216
219
|
return /*#__PURE__*/_jsx(AppNavigationPageLayout, _objectSpread({}, props));
|
217
220
|
},
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","AppNavigationPageLayout","defaultAclApi","SupportComponent","YTUserSuggest","docsUrls","YTSubjectSuggest","RoleActions","OperationDetailMonitorLinks","PERMISSIONS_SETTINGS","uiSettings","YT","DefaultSubjectCard","jsx","_jsx","experimentalPages","uiFactory","getClusterAppearance","cluster","_YT$clusters","clusters","urls","isWatchMen","makeUrlForTransferTask","undefined","makeUrlForNodeIO","makeUrlForTabletCellBundleDashboard","makeUrlForMonitoringDescriptor","makeUrlForUserDashboard","getExtaClusterPages","getExtraRootPages","getExtraReducersAndUrlMapping","getSchedulingExtraTabs","_uiSettings$schedulin","schedulingMonitoring","urlTemplate","_uiSettings$schedulin2","_uiSettings$schedulin3","title","name","getSystemMonitoringTab","systemMonitoring","getVersionMonitoringLink","componentVersionsMonitoring","getMonitoringForAccounts","_uiSettings$accountsM","accountsMonitoring","_uiSettings$accountsM2","getMonitoringForBundle","_uiSettings$bundlesMo","bundlesMonitoring","_uiSettings$bundlesMo2","getMonitoringForOperation","params","_uiSettings$operation","_params$pools","operationsMonitoring","_uiSettings$operation2","hasPoolParameter","indexOf","pools","length","component","getMonitorComponentForJob","getMonitoringComponentForChyt","_uiSettings$chytMonit","_ref","chytMonitoring","getStatisticsComponentForAccount","getStatisticsComponentForBundle","renderNavigationExtraActions","renderSchedulingLastDayMaximum","renderComponentsNodeCardTop","getExtraMetaTableItemsForComponentsNode","getExtraMetaTableItemsForPool","getExtraMetaTableItemsForBundle","getComponentsNodeDashboardUrl","renderTransferQuotaNoticeForPool","renderTransferQuotaNoticeForAccount","renderTopRowExtraControlsForAccount","renderTopRowExtraControlsForPool","renderTopRowExtraControlsForBundle","renderAccountsTableItemExtraControls","renderSchedulingTableItemExtraControls","renderBundlesTableItemExtraControls","renderControlAbcService","renderSubjectCard","props","_objectSpread","makeSupportContent","_x","makeContent","reportBugUrl","getComponentForConsumerMetrics","getComonentForQueueMetrics","renderTableCellBundleEditorNotice","getNodeDeployUrl","getNodeNannyUrl","renderAppNavigation","createNotificationUrl","wrapApp","app","externalSchemaDescriptionSetup","load","_cluster","_path","Promise","resolve","getAclApi","renderAclSubjectsSuggestControl","renderRolesLink","getCustomQueryResultTab","getExternalSettings","renderUserSuggest","getExperimentalPages","getAllowedExperimentalPages","getComponentForAclRoleActions","getAclPermissionsSettings","onChytAliasSqlClick","configureUIFactoryItem","k","redefinition","configureUIFactory","overrides","_forEach","_v","key","Proxy","set","Error","isAbcAllowed","abc","onChange","value","id","slug","Boolean"],"sources":["UIFactory.tsx"],"sourcesContent":["import {SVGIconData} from '@gravity-ui/uikit/build/esm/components/Icon/types';\nimport {MetaTableItem} from './components/MetaTable/MetaTable';\nimport _ from 'lodash';\nimport React from 'react';\nimport {Reducer} from 'redux';\nimport {PathParameters} from './store/location';\nimport {TabletBundle} from './store/reducers/tablet_cell_bundles';\nimport {PoolInfo} from './store/selectors/scheduling/scheduling-pools';\nimport {ClusterConfig, ClusterUiConfig} from '../shared/yt-types';\nimport {ClusterAppearance} from './appearance';\nimport AppNavigationPageLayout, {\n AppNavigationProps,\n} from './containers/AppNavigation/AppNavigationPageLayout';\nimport {ExternalSchemaDescription} from './pages/navigation/tabs/Schema/ExternalDescription/ExternalDescription';\nimport {AclApi, defaultAclApi} from './utils/acl/external-acl-api';\nimport {SubjectsControlProps} from './containers/ACL/SubjectsControl/SubjectsControl';\nimport {SettingsPage} from './containers/SettingsPanel/settings-description';\nimport {SupportComponent} from './containers/SupportComponent/SupportComponent';\nimport {UserSuggestProps} from './containers/UserSuggest/UserSuggest';\nimport {YTUserSuggest} from './containers/UserSuggest/YTUserSuggest';\nimport {DocsUrls, docsUrls} from './constants/docsUrls';\nimport {YTSubjectSuggest} from './containers/ACL/SubjectsControl/YTSubjectSuggest';\nimport RoleActions, {Props as RoleActionsProps} from './containers/ACL/RoleActions';\nimport OperationDetailMonitorLinks from './pages/operations/OperationDetail/tabs/monitor/OperationDetailsMonitorLinks';\nimport {PERMISSIONS_SETTINGS} from './constants/acl';\nimport {uiSettings} from './config/ui-settings';\nimport YT from './config/yt-config';\nimport {PreparedAclSubject} from './utils/acl/acl-types';\nimport {PreparedRole} from './utils/acl';\nimport {UISettingsMonitoring} from '../shared/ui-settings';\nimport {DefaultSubjectCard, type SubjectCardProps} from './components/SubjectLink/SubjectLink';\nimport type {QueryItem} from './pages/query-tracker/module/api';\n\ntype HeaderItemOrPage =\n | {\n href: string;\n\n pageId?: undefined;\n reactComponent?: undefined;\n reducers?: undefined;\n urlMapping?: undefined;\n }\n | {\n pageId?: string;\n reactComponent?: React.ComponentType<any>; // used as component for <Route ... component={reactComponent} />\n reducers?: Record<string, Reducer>;\n urlMapping?: Record<string, PathParameters>;\n\n href?: undefined;\n };\n\nexport type UIFactoryRootPageInfo = HeaderItemOrPage & {\n title: string;\n getVisible?: () => Promise<boolean>;\n};\n\nexport interface UIFactoryClusterPageInfo {\n title: string;\n pageId: string; // also used as urlMatch for <Route path={`/:cluster/${pageId}`} ... />\n svgIcon?: SVGIconData;\n reducers?: Record<string, Reducer<any, any>>;\n reactComponent: React.ComponentType<any>; // used as component for <Route ... component={reactComponent} />\n topRowComponent?: React.ComponentType<any>; // used as component for <Route ... component={topRowComponent} />\n urlMapping?: Record<string, PathParameters>;\n}\n\nexport interface ExternalSchemaDescriptionResponse {\n url?: string;\n externalSchema?: Map<string, ExternalSchemaDescription>;\n}\n\nexport interface ReducersAndUrlMapping {\n reducers?: Record<string, Reducer<any, any>>;\n urlMapping?: Record<string, PathParameters>;\n}\n\nexport interface SchedulingExtraTab {\n name: string;\n title?: string;\n component?: React.ComponentType<any>;\n /**\n * Allows to redefine link of corresponding tab\n * Example: https://grafana.mydomain.com?var-pool={ytPool}&var-tree={ytPoolTree}&var-cluster={ytCluster}\n */\n urlTemplate?: string;\n}\n\nexport interface OperationMonitoringTabProps {\n cluster: string;\n operation: {\n id: string;\n startTime?: string;\n finishTime?: string;\n pools?: Array<{pool: string; tree: string; slotIndex?: number}>;\n };\n}\n\nexport type AclRoleActionsType = Partial<Omit<PreparedAclSubject | PreparedRole, 'type'>> & {\n type?: string;\n};\n\nexport interface UIFactory {\n getClusterAppearance(cluster?: string): undefined | ClusterAppearance;\n\n isWatchMen(login: string): boolean;\n\n makeUrlForTransferTask(operation: unknown): string | undefined;\n makeUrlForNodeIO(cluster: string, host?: string): string | undefined;\n makeUrlForTabletCellBundleDashboard(cluster: string, bundle: string): string | undefined;\n makeUrlForMonitoringDescriptor(\n cluster: string,\n timeRange: {from: string; to?: string},\n monitoring_descriptor?: string,\n ): string | undefined;\n makeUrlForUserDashboard(cluster: string, user: string): string | undefined;\n\n getExtaClusterPages(): Array<UIFactoryClusterPageInfo>;\n getExtraRootPages(): Array<UIFactoryRootPageInfo>;\n\n getExtraReducersAndUrlMapping(): undefined | ReducersAndUrlMapping;\n getSchedulingExtraTabs(params: {\n cluster: string;\n pool: string;\n tree: string;\n extraOptions: {\n isRoot?: boolean;\n isEphemeral?: boolean | undefined;\n };\n }): Array<SchedulingExtraTab>;\n getSystemMonitoringTab():\n | {\n title?: string;\n urlTemplate: string;\n }\n | {\n title?: string;\n component: React.ComponentType<any>;\n }\n | undefined;\n getVersionMonitoringLink(cluster: string): UISettingsMonitoring | undefined;\n\n getMonitoringForAccounts():\n | undefined\n | {\n component: React.ComponentType<{cluster: string; account: string}>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitoringForBundle():\n | undefined\n | {\n component: React.ComponentType<{\n cluster: string;\n tablet_cell_bundle: string;\n bundleData: any;\n }>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitoringForOperation(params: OperationMonitoringTabProps['operation']):\n | undefined\n | {\n component: React.ComponentType<OperationMonitoringTabProps>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitorComponentForJob():\n | undefined\n | React.ComponentType<{\n cluster: string;\n job_descriptor: string;\n from?: number;\n to?: number;\n }>;\n\n getMonitoringComponentForChyt():\n | undefined\n | {\n component?: React.ComponentType<{cluster: string; alias: string}>;\n urlTemplate?: string;\n title?: string;\n };\n\n getStatisticsComponentForAccount():\n | undefined\n | React.ComponentType<{\n cluster: string;\n account: string;\n accountSubtreeAllNames: Array<string>;\n theme: string;\n }>;\n\n getStatisticsComponentForBundle():\n | undefined\n | React.ComponentType<{cluster: string; bundle: string; theme: string}>;\n\n renderNavigationExtraActions(params: {\n className?: string;\n cluster: string;\n path: string;\n type: string;\n attributes: unknown;\n }): React.ReactNode;\n\n renderSchedulingLastDayMaximum(props: {\n className?: string;\n cluster: string;\n tree: string;\n title?: string;\n sensor: 'max_operation_count' | 'max_running_operation_count';\n format?(sensorValue?: number): string;\n current?: {value: string; title: string};\n showHint?: boolean;\n showAsLink?: boolean;\n }): React.ReactNode;\n\n renderComponentsNodeCardTop(props: {\n className?: string;\n clusterConfig: ClusterConfig;\n host: string;\n physicalHost: string;\n }): React.ReactNode;\n\n getComponentsNodeDashboardUrl(props: {cluster: string; host: string}): {\n url?: string;\n title?: string;\n };\n\n renderTransferQuotaNoticeForPool(props: {\n className?: string;\n pool?: PoolInfo;\n parentPool?: PoolInfo;\n clusterUiConfig?: ClusterUiConfig;\n isTopLevel?: boolean;\n }): React.ReactNode;\n\n renderTransferQuotaNoticeForAccount(props: {\n className?: string;\n isTopLevel?: boolean;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForAccount(props: {\n className?: string;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForPool(props: {\n itemClassName?: string;\n pool?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForBundle(props: {\n itemClassName?: string;\n bundle?: TabletBundle;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n getExtraMetaTableItemsForComponentsNode(props: {\n clusterConfig: ClusterConfig;\n host: string;\n physicalHost: string;\n }): undefined | Array<MetaTableItem>;\n\n getExtraMetaTableItemsForPool(props: {\n pool: PoolInfo;\n clusterUiConfig?: ClusterUiConfig;\n }): undefined | Array<MetaTableItem>;\n\n getExtraMetaTableItemsForBundle(props: {\n bundle: TabletBundle;\n clusterUiConfig: ClusterUiConfig;\n }): undefined | Array<MetaTableItem>;\n\n renderAccountsTableItemExtraControls(props: {\n itemClassName?: string;\n cluster: string;\n account: string;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderSchedulingTableItemExtraControls(props: {\n itemClassName?: string;\n cluster: string;\n pool: unknown;\n clusterUiConfig: ClusterUiConfig;\n }): React.ReactNode;\n\n renderBundlesTableItemExtraControls(props: {\n itemClassName?: string;\n bundle?: TabletBundle;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderControlAbcService<T extends {slug: string; id?: number}>(props: {\n className?: string;\n value?: T;\n onChange: (v?: T) => void;\n placeholder?: string;\n disabled?: boolean;\n }): React.ReactNode;\n\n renderSubjectCard(props: SubjectCardProps): React.ReactNode;\n\n makeSupportContent(\n params: {login: string; cluster?: string; buttonToWrap?: React.ReactNode},\n makeContent: (params: {\n supportContent?: React.ReactNode;\n onSupportClick: () => void;\n }) => React.ReactNode,\n ): React.ReactNode;\n\n getComponentForConsumerMetrics():\n | undefined\n | React.ComponentType<{\n cluster: string;\n path: string;\n targetQueue?: string;\n }>;\n\n getComonentForQueueMetrics(): undefined | React.ComponentType<{cluster: string; path: string}>;\n\n renderTableCellBundleEditorNotice(props: {\n bundleData?: {$attributes: unknown};\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n getNodeDeployUrl(ypCluster?: string, podId?: string): string | undefined;\n getNodeNannyUrl(params: {\n pod_id?: string;\n nanny_service?: string;\n yp_cluster?: string;\n }): string | undefined;\n\n renderAppNavigation(props: AppNavigationProps): React.ReactElement;\n\n createNotificationUrl(clusterConfig?: ClusterConfig): string | undefined;\n\n wrapApp(app: React.ReactElement): React.ReactElement;\n\n externalSchemaDescriptionSetup: {\n columns?: Record<keyof ExternalSchemaDescription['glossaryEntity'], string>;\n load(cluster: string, path: string): Promise<ExternalSchemaDescriptionResponse>;\n };\n\n getAclApi(): AclApi;\n\n renderAclSubjectsSuggestControl(props: SubjectsControlProps): React.ReactNode;\n\n renderRolesLink(params: {cluster: string; login: string; className?: string}): React.ReactNode;\n\n getCustomQueryResultTab():\n | undefined\n | {\n title: string;\n renderContent: (params: {query: QueryItem}) => React.ReactNode;\n };\n\n getExternalSettings(params: {\n cluster: string;\n login: string;\n isAdmin: boolean;\n }): Array<SettingsPage>;\n\n renderUserSuggest(props: UserSuggestProps): React.ReactNode;\n\n yqlWidgetSetup?: {\n renderButton(props: {className?: string; isSplit?: string}): React.ReactNode;\n renderWidget(props: {cluster: string; path: string; attributes: unknown}): React.ReactNode;\n renderYqlOperationLink(yqlOperationId: string): React.ReactNode;\n };\n\n getExperimentalPages(): string[];\n getAllowedExperimentalPages(login: string): Promise<Array<string>>;\n\n docsUrls: DocsUrls;\n\n getComponentForAclRoleActions(): undefined | React.ComponentType<RoleActionsProps>;\n\n getAclPermissionsSettings(): typeof PERMISSIONS_SETTINGS;\n\n onChytAliasSqlClick(params: {alias: string; cluster: string}): void;\n}\n\nconst experimentalPages: string[] = [];\n\nconst uiFactory: UIFactory = {\n getClusterAppearance(cluster) {\n return YT.clusters[cluster!]?.urls;\n },\n isWatchMen() {\n return false;\n },\n makeUrlForTransferTask() {\n return undefined;\n },\n makeUrlForNodeIO() {\n return undefined;\n },\n makeUrlForTabletCellBundleDashboard() {\n return undefined;\n },\n makeUrlForMonitoringDescriptor() {\n return undefined;\n },\n makeUrlForUserDashboard() {\n return undefined;\n },\n\n getExtaClusterPages() {\n return [];\n },\n getExtraRootPages() {\n return [];\n },\n\n getExtraReducersAndUrlMapping() {\n return undefined;\n },\n\n getSchedulingExtraTabs() {\n if (!uiSettings.schedulingMonitoring?.urlTemplate) {\n return [];\n }\n\n const {urlTemplate, title = 'Monitoring'} = uiSettings.schedulingMonitoring;\n\n return [\n {\n name: 'monitoring',\n title,\n urlTemplate,\n },\n ];\n },\n getSystemMonitoringTab() {\n if (!uiSettings?.systemMonitoring) return undefined;\n return uiSettings.systemMonitoring;\n },\n getVersionMonitoringLink() {\n if (!uiSettings?.componentVersionsMonitoring) return undefined;\n return uiSettings.componentVersionsMonitoring;\n },\n getMonitoringForAccounts() {\n if (!uiSettings?.accountsMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.accountsMonitoring;\n return {urlTemplate, title};\n },\n getMonitoringForBundle() {\n if (!uiSettings.bundlesMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.bundlesMonitoring;\n return {urlTemplate, title};\n },\n getMonitoringForOperation(params) {\n if (!uiSettings.operationsMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.operationsMonitoring;\n\n const hasPoolParameter =\n urlTemplate.indexOf('{ytPool}') !== -1 || urlTemplate.indexOf('{ytPoolTree}') !== -1;\n\n if (hasPoolParameter && params.pools?.length! > 1) {\n return {component: OperationDetailMonitorLinks};\n }\n\n return {urlTemplate, title};\n },\n getMonitorComponentForJob() {\n return undefined;\n },\n getMonitoringComponentForChyt() {\n const {urlTemplate, title} = uiSettings.chytMonitoring ?? {};\n if (!urlTemplate) {\n return undefined;\n }\n\n return {urlTemplate, title};\n },\n getStatisticsComponentForAccount() {\n return undefined;\n },\n getStatisticsComponentForBundle() {\n return undefined;\n },\n\n renderNavigationExtraActions() {\n return null;\n },\n\n renderSchedulingLastDayMaximum() {\n return undefined;\n },\n\n renderComponentsNodeCardTop() {\n return undefined;\n },\n\n getExtraMetaTableItemsForComponentsNode() {\n return undefined;\n },\n\n getExtraMetaTableItemsForPool() {\n return undefined;\n },\n\n getExtraMetaTableItemsForBundle() {\n return undefined;\n },\n\n getComponentsNodeDashboardUrl() {\n return {};\n },\n\n renderTransferQuotaNoticeForPool() {\n return undefined;\n },\n\n renderTransferQuotaNoticeForAccount() {\n return undefined;\n },\n\n renderTopRowExtraControlsForAccount() {\n return undefined;\n },\n\n renderTopRowExtraControlsForPool() {\n return undefined;\n },\n\n renderTopRowExtraControlsForBundle() {\n return undefined;\n },\n\n renderAccountsTableItemExtraControls() {\n return undefined;\n },\n\n renderSchedulingTableItemExtraControls() {\n return undefined;\n },\n\n renderBundlesTableItemExtraControls() {\n return undefined;\n },\n\n renderControlAbcService() {\n return undefined;\n },\n\n renderSubjectCard(props: SubjectCardProps): React.ReactNode {\n return <DefaultSubjectCard {...props} />;\n },\n\n makeSupportContent(_x, makeContent) {\n const {reportBugUrl} = uiSettings;\n if (!reportBugUrl) {\n return undefined;\n }\n\n return <SupportComponent makeContent={makeContent} />;\n },\n\n getComponentForConsumerMetrics() {\n return undefined;\n },\n\n getComonentForQueueMetrics() {\n return undefined;\n },\n\n renderTableCellBundleEditorNotice() {\n return undefined;\n },\n\n getNodeDeployUrl() {\n return undefined;\n },\n\n getNodeNannyUrl() {\n return undefined;\n },\n\n renderAppNavigation(props) {\n return <AppNavigationPageLayout {...props} />;\n },\n\n createNotificationUrl() {\n return undefined;\n },\n\n wrapApp(app) {\n return app;\n },\n\n externalSchemaDescriptionSetup: {\n load(_cluster: string, _path: string) {\n return Promise.resolve({});\n },\n },\n\n getAclApi() {\n return defaultAclApi;\n },\n\n renderAclSubjectsSuggestControl(props) {\n return <YTSubjectSuggest {...props} />;\n },\n\n renderRolesLink() {\n return undefined;\n },\n\n getCustomQueryResultTab() {\n return undefined;\n },\n\n getExternalSettings() {\n return [];\n },\n\n renderUserSuggest(props) {\n return <YTUserSuggest {...props} />;\n },\n\n getExperimentalPages() {\n return experimentalPages;\n },\n\n getAllowedExperimentalPages() {\n return Promise.resolve([]);\n },\n\n docsUrls: docsUrls,\n\n getComponentForAclRoleActions() {\n return RoleActions;\n },\n\n getAclPermissionsSettings() {\n return PERMISSIONS_SETTINGS;\n },\n\n onChytAliasSqlClick() {},\n};\n\nfunction configureUIFactoryItem<K extends keyof UIFactory>(k: K, redefinition: UIFactory[K]) {\n uiFactory[k] = redefinition;\n}\n\nexport function configureUIFactory(overrides: Partial<UIFactory>) {\n _.forEach(overrides, (_v, k) => {\n const key = k as keyof UIFactory;\n configureUIFactoryItem(key, overrides[key]!);\n });\n}\n\nexport default new Proxy(uiFactory, {\n set: () => {\n throw new Error('Use configureUIFactory(...) method instead of direct modifications');\n },\n});\n\nexport function isAbcAllowed() {\n const abc = uiFactory.renderControlAbcService({\n onChange: () => {},\n value: {id: 123, slug: '123'},\n });\n return Boolean(abc);\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["React","AppNavigationPageLayout","defaultAclApi","SupportComponent","YTUserSuggest","docsUrls","YTSubjectSuggest","RoleActions","OperationDetailMonitorLinks","PERMISSIONS_SETTINGS","uiSettings","YT","DefaultSubjectCard","jsx","_jsx","experimentalPages","uiFactory","getClusterAppearance","cluster","_YT$clusters","clusters","urls","isWatchMen","makeUrlForTransferTask","undefined","makeUrlForNodeIO","makeUrlForTabletCellBundleDashboard","makeUrlForMonitoringDescriptor","makeUrlForUserDashboard","getExtaClusterPages","getExtraRootPages","getExtraReducersAndUrlMapping","getSchedulingExtraTabs","_uiSettings$schedulin","schedulingMonitoring","urlTemplate","_uiSettings$schedulin2","_uiSettings$schedulin3","title","name","getSystemMonitoringTab","systemMonitoring","getVersionMonitoringLink","componentVersionsMonitoring","getMonitoringForAccounts","_uiSettings$accountsM","accountsMonitoring","_uiSettings$accountsM2","getMonitoringForBundle","_uiSettings$bundlesMo","bundlesMonitoring","_uiSettings$bundlesMo2","getMonitoringForOperation","params","_uiSettings$operation","_params$pools","operationsMonitoring","_uiSettings$operation2","hasPoolParameter","indexOf","pools","length","component","getMonitorComponentForJob","getMonitoringComponentForChyt","_uiSettings$chytMonit","_ref","chytMonitoring","getStatisticsComponentForAccount","getStatisticsComponentForBundle","renderNavigationExtraActions","renderSchedulingLastDayMaximum","renderComponentsNodeCardTop","getExtraMetaTableItemsForComponentsNode","getExtraMetaTableItemsForPool","getExtraMetaTableItemsForBundle","getComponentsNodeDashboardUrl","renderTransferQuotaNoticeForPool","renderTransferQuotaNoticeForAccount","renderTopRowExtraControlsForAccount","renderTopRowExtraControlsForPool","renderTopRowExtraControlsForBundle","renderAccountsTableItemExtraControls","renderSchedulingTableItemExtraControls","renderBundlesTableItemExtraControls","renderControlAbcService","renderSubjectCard","props","_objectSpread","makeSupportContent","_x","makeContent","reportBugUrl","getComponentForConsumerMetrics","getComonentForQueueMetrics","renderTableCellBundleEditorNotice","getNodeDeployUrl","getNodeNannyUrl","renderAppFooter","renderAppNavigation","createNotificationUrl","wrapApp","app","externalSchemaDescriptionSetup","load","_cluster","_path","Promise","resolve","getAclApi","renderAclSubjectsSuggestControl","renderRolesLink","getCustomQueryResultTab","getExternalSettings","renderUserSuggest","getExperimentalPages","getAllowedExperimentalPages","getComponentForAclRoleActions","getAclPermissionsSettings","onChytAliasSqlClick","configureUIFactoryItem","k","redefinition","configureUIFactory","overrides","_forEach","_v","key","Proxy","set","Error","isAbcAllowed","abc","onChange","value","id","slug","Boolean"],"sources":["UIFactory.tsx"],"sourcesContent":["import {SVGIconData} from '@gravity-ui/uikit/build/esm/components/Icon/types';\nimport {MetaTableItem} from './components/MetaTable/MetaTable';\nimport _ from 'lodash';\nimport React from 'react';\nimport {Reducer} from 'redux';\nimport {PathParameters} from './store/location';\nimport {TabletBundle} from './store/reducers/tablet_cell_bundles';\nimport {PoolInfo} from './store/selectors/scheduling/scheduling-pools';\nimport {ClusterConfig, ClusterUiConfig} from '../shared/yt-types';\nimport {ClusterAppearance} from './appearance';\nimport AppNavigationPageLayout, {\n AppNavigationProps,\n} from './containers/AppNavigation/AppNavigationPageLayout';\nimport {ExternalSchemaDescription} from './pages/navigation/tabs/Schema/ExternalDescription/ExternalDescription';\nimport {AclApi, defaultAclApi} from './utils/acl/external-acl-api';\nimport {SubjectsControlProps} from './containers/ACL/SubjectsControl/SubjectsControl';\nimport {SettingsPage} from './containers/SettingsPanel/settings-description';\nimport {SupportComponent} from './containers/SupportComponent/SupportComponent';\nimport {UserSuggestProps} from './containers/UserSuggest/UserSuggest';\nimport {YTUserSuggest} from './containers/UserSuggest/YTUserSuggest';\nimport {DocsUrls, docsUrls} from './constants/docsUrls';\nimport {YTSubjectSuggest} from './containers/ACL/SubjectsControl/YTSubjectSuggest';\nimport RoleActions, {Props as RoleActionsProps} from './containers/ACL/RoleActions';\nimport OperationDetailMonitorLinks from './pages/operations/OperationDetail/tabs/monitor/OperationDetailsMonitorLinks';\nimport {PERMISSIONS_SETTINGS} from './constants/acl';\nimport {uiSettings} from './config/ui-settings';\nimport YT from './config/yt-config';\nimport {PreparedAclSubject} from './utils/acl/acl-types';\nimport {PreparedRole} from './utils/acl';\nimport {UISettingsMonitoring} from '../shared/ui-settings';\nimport {DefaultSubjectCard, type SubjectCardProps} from './components/SubjectLink/SubjectLink';\nimport type {QueryItem} from './pages/query-tracker/module/api';\n\ntype HeaderItemOrPage =\n | {\n href: string;\n\n pageId?: undefined;\n reactComponent?: undefined;\n reducers?: undefined;\n urlMapping?: undefined;\n }\n | {\n pageId?: string;\n reactComponent?: React.ComponentType<any>; // used as component for <Route ... component={reactComponent} />\n reducers?: Record<string, Reducer>;\n urlMapping?: Record<string, PathParameters>;\n\n href?: undefined;\n };\n\nexport type UIFactoryRootPageInfo = HeaderItemOrPage & {\n title: string;\n getVisible?: () => Promise<boolean>;\n};\n\nexport interface UIFactoryClusterPageInfo {\n title: string;\n pageId: string; // also used as urlMatch for <Route path={`/:cluster/${pageId}`} ... />\n svgIcon?: SVGIconData;\n reducers?: Record<string, Reducer<any, any>>;\n reactComponent: React.ComponentType<any>; // used as component for <Route ... component={reactComponent} />\n topRowComponent?: React.ComponentType<any>; // used as component for <Route ... component={topRowComponent} />\n urlMapping?: Record<string, PathParameters>;\n}\n\nexport interface ExternalSchemaDescriptionResponse {\n url?: string;\n externalSchema?: Map<string, ExternalSchemaDescription>;\n}\n\nexport interface ReducersAndUrlMapping {\n reducers?: Record<string, Reducer<any, any>>;\n urlMapping?: Record<string, PathParameters>;\n}\n\nexport interface SchedulingExtraTab {\n name: string;\n title?: string;\n component?: React.ComponentType<any>;\n /**\n * Allows to redefine link of corresponding tab\n * Example: https://grafana.mydomain.com?var-pool={ytPool}&var-tree={ytPoolTree}&var-cluster={ytCluster}\n */\n urlTemplate?: string;\n}\n\nexport interface OperationMonitoringTabProps {\n cluster: string;\n operation: {\n id: string;\n startTime?: string;\n finishTime?: string;\n pools?: Array<{pool: string; tree: string; slotIndex?: number}>;\n };\n}\n\nexport type AclRoleActionsType = Partial<Omit<PreparedAclSubject | PreparedRole, 'type'>> & {\n type?: string;\n};\n\nexport interface UIFactory {\n getClusterAppearance(cluster?: string): undefined | ClusterAppearance;\n\n isWatchMen(login: string): boolean;\n\n makeUrlForTransferTask(operation: unknown): string | undefined;\n makeUrlForNodeIO(cluster: string, host?: string): string | undefined;\n makeUrlForTabletCellBundleDashboard(cluster: string, bundle: string): string | undefined;\n makeUrlForMonitoringDescriptor(\n cluster: string,\n timeRange: {from: string; to?: string},\n monitoring_descriptor?: string,\n ): string | undefined;\n makeUrlForUserDashboard(cluster: string, user: string): string | undefined;\n\n getExtaClusterPages(): Array<UIFactoryClusterPageInfo>;\n getExtraRootPages(): Array<UIFactoryRootPageInfo>;\n\n getExtraReducersAndUrlMapping(): undefined | ReducersAndUrlMapping;\n getSchedulingExtraTabs(params: {\n cluster: string;\n pool: string;\n tree: string;\n extraOptions: {\n isRoot?: boolean;\n isEphemeral?: boolean | undefined;\n };\n }): Array<SchedulingExtraTab>;\n getSystemMonitoringTab():\n | {\n title?: string;\n urlTemplate: string;\n }\n | {\n title?: string;\n component: React.ComponentType<any>;\n }\n | undefined;\n getVersionMonitoringLink(cluster: string): UISettingsMonitoring | undefined;\n\n getMonitoringForAccounts():\n | undefined\n | {\n component: React.ComponentType<{cluster: string; account: string}>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitoringForBundle():\n | undefined\n | {\n component: React.ComponentType<{\n cluster: string;\n tablet_cell_bundle: string;\n bundleData: any;\n }>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitoringForOperation(params: OperationMonitoringTabProps['operation']):\n | undefined\n | {\n component: React.ComponentType<OperationMonitoringTabProps>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitorComponentForJob():\n | undefined\n | React.ComponentType<{\n cluster: string;\n job_descriptor: string;\n from?: number;\n to?: number;\n }>;\n\n getMonitoringComponentForChyt():\n | undefined\n | {\n component?: React.ComponentType<{cluster: string; alias: string}>;\n urlTemplate?: string;\n title?: string;\n };\n\n getStatisticsComponentForAccount():\n | undefined\n | React.ComponentType<{\n cluster: string;\n account: string;\n accountSubtreeAllNames: Array<string>;\n theme: string;\n }>;\n\n getStatisticsComponentForBundle():\n | undefined\n | React.ComponentType<{cluster: string; bundle: string; theme: string}>;\n\n renderNavigationExtraActions(params: {\n className?: string;\n cluster: string;\n path: string;\n type: string;\n attributes: unknown;\n }): React.ReactNode;\n\n renderSchedulingLastDayMaximum(props: {\n className?: string;\n cluster: string;\n tree: string;\n title?: string;\n sensor: 'max_operation_count' | 'max_running_operation_count';\n format?(sensorValue?: number): string;\n current?: {value: string; title: string};\n showHint?: boolean;\n showAsLink?: boolean;\n }): React.ReactNode;\n\n renderComponentsNodeCardTop(props: {\n className?: string;\n clusterConfig: ClusterConfig;\n host: string;\n physicalHost: string;\n }): React.ReactNode;\n\n getComponentsNodeDashboardUrl(props: {cluster: string; host: string}): {\n url?: string;\n title?: string;\n };\n\n renderTransferQuotaNoticeForPool(props: {\n className?: string;\n pool?: PoolInfo;\n parentPool?: PoolInfo;\n clusterUiConfig?: ClusterUiConfig;\n isTopLevel?: boolean;\n }): React.ReactNode;\n\n renderTransferQuotaNoticeForAccount(props: {\n className?: string;\n isTopLevel?: boolean;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForAccount(props: {\n className?: string;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForPool(props: {\n itemClassName?: string;\n pool?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForBundle(props: {\n itemClassName?: string;\n bundle?: TabletBundle;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n getExtraMetaTableItemsForComponentsNode(props: {\n clusterConfig: ClusterConfig;\n host: string;\n physicalHost: string;\n }): undefined | Array<MetaTableItem>;\n\n getExtraMetaTableItemsForPool(props: {\n pool: PoolInfo;\n clusterUiConfig?: ClusterUiConfig;\n }): undefined | Array<MetaTableItem>;\n\n getExtraMetaTableItemsForBundle(props: {\n bundle: TabletBundle;\n clusterUiConfig: ClusterUiConfig;\n }): undefined | Array<MetaTableItem>;\n\n renderAccountsTableItemExtraControls(props: {\n itemClassName?: string;\n cluster: string;\n account: string;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderSchedulingTableItemExtraControls(props: {\n itemClassName?: string;\n cluster: string;\n pool: unknown;\n clusterUiConfig: ClusterUiConfig;\n }): React.ReactNode;\n\n renderBundlesTableItemExtraControls(props: {\n itemClassName?: string;\n bundle?: TabletBundle;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderControlAbcService<T extends {slug: string; id?: number}>(props: {\n className?: string;\n value?: T;\n onChange: (v?: T) => void;\n placeholder?: string;\n disabled?: boolean;\n }): React.ReactNode;\n\n renderSubjectCard(props: SubjectCardProps): React.ReactNode;\n\n makeSupportContent(\n params: {login: string; cluster?: string; buttonToWrap?: React.ReactNode},\n makeContent: (params: {\n supportContent?: React.ReactNode;\n onSupportClick: () => void;\n }) => React.ReactNode,\n ): React.ReactNode;\n\n getComponentForConsumerMetrics():\n | undefined\n | React.ComponentType<{\n cluster: string;\n path: string;\n targetQueue?: string;\n }>;\n\n getComonentForQueueMetrics(): undefined | React.ComponentType<{cluster: string; path: string}>;\n\n renderTableCellBundleEditorNotice(props: {\n bundleData?: {$attributes: unknown};\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n getNodeDeployUrl(ypCluster?: string, podId?: string): string | undefined;\n getNodeNannyUrl(params: {\n pod_id?: string;\n nanny_service?: string;\n yp_cluster?: string;\n }): string | undefined;\n\n renderAppFooter(): React.ReactNode;\n\n renderAppNavigation(props: AppNavigationProps): React.ReactElement;\n\n createNotificationUrl(clusterConfig?: ClusterConfig): string | undefined;\n\n wrapApp(app: React.ReactElement): React.ReactElement;\n\n externalSchemaDescriptionSetup: {\n columns?: Record<keyof ExternalSchemaDescription['glossaryEntity'], string>;\n load(cluster: string, path: string): Promise<ExternalSchemaDescriptionResponse>;\n };\n\n getAclApi(): AclApi;\n\n renderAclSubjectsSuggestControl(props: SubjectsControlProps): React.ReactNode;\n\n renderRolesLink(params: {cluster: string; login: string; className?: string}): React.ReactNode;\n\n getCustomQueryResultTab():\n | undefined\n | {\n title: string;\n renderContent: (params: {query: QueryItem}) => React.ReactNode;\n };\n\n getExternalSettings(params: {\n cluster: string;\n login: string;\n isAdmin: boolean;\n }): Array<SettingsPage>;\n\n renderUserSuggest(props: UserSuggestProps): React.ReactNode;\n\n yqlWidgetSetup?: {\n renderButton(props: {className?: string; isSplit?: string}): React.ReactNode;\n renderWidget(props: {cluster: string; path: string; attributes: unknown}): React.ReactNode;\n renderYqlOperationLink(yqlOperationId: string): React.ReactNode;\n };\n\n getExperimentalPages(): string[];\n getAllowedExperimentalPages(login: string): Promise<Array<string>>;\n\n docsUrls: DocsUrls;\n\n getComponentForAclRoleActions(): undefined | React.ComponentType<RoleActionsProps>;\n\n getAclPermissionsSettings(): typeof PERMISSIONS_SETTINGS;\n\n onChytAliasSqlClick(params: {alias: string; cluster: string}): void;\n}\n\nconst experimentalPages: string[] = [];\n\nconst uiFactory: UIFactory = {\n getClusterAppearance(cluster) {\n return YT.clusters[cluster!]?.urls;\n },\n isWatchMen() {\n return false;\n },\n makeUrlForTransferTask() {\n return undefined;\n },\n makeUrlForNodeIO() {\n return undefined;\n },\n makeUrlForTabletCellBundleDashboard() {\n return undefined;\n },\n makeUrlForMonitoringDescriptor() {\n return undefined;\n },\n makeUrlForUserDashboard() {\n return undefined;\n },\n\n getExtaClusterPages() {\n return [];\n },\n getExtraRootPages() {\n return [];\n },\n\n getExtraReducersAndUrlMapping() {\n return undefined;\n },\n\n getSchedulingExtraTabs() {\n if (!uiSettings.schedulingMonitoring?.urlTemplate) {\n return [];\n }\n\n const {urlTemplate, title = 'Monitoring'} = uiSettings.schedulingMonitoring;\n\n return [\n {\n name: 'monitoring',\n title,\n urlTemplate,\n },\n ];\n },\n getSystemMonitoringTab() {\n if (!uiSettings?.systemMonitoring) return undefined;\n return uiSettings.systemMonitoring;\n },\n getVersionMonitoringLink() {\n if (!uiSettings?.componentVersionsMonitoring) return undefined;\n return uiSettings.componentVersionsMonitoring;\n },\n getMonitoringForAccounts() {\n if (!uiSettings?.accountsMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.accountsMonitoring;\n return {urlTemplate, title};\n },\n getMonitoringForBundle() {\n if (!uiSettings.bundlesMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.bundlesMonitoring;\n return {urlTemplate, title};\n },\n getMonitoringForOperation(params) {\n if (!uiSettings.operationsMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.operationsMonitoring;\n\n const hasPoolParameter =\n urlTemplate.indexOf('{ytPool}') !== -1 || urlTemplate.indexOf('{ytPoolTree}') !== -1;\n\n if (hasPoolParameter && params.pools?.length! > 1) {\n return {component: OperationDetailMonitorLinks};\n }\n\n return {urlTemplate, title};\n },\n getMonitorComponentForJob() {\n return undefined;\n },\n getMonitoringComponentForChyt() {\n const {urlTemplate, title} = uiSettings.chytMonitoring ?? {};\n if (!urlTemplate) {\n return undefined;\n }\n\n return {urlTemplate, title};\n },\n getStatisticsComponentForAccount() {\n return undefined;\n },\n getStatisticsComponentForBundle() {\n return undefined;\n },\n\n renderNavigationExtraActions() {\n return null;\n },\n\n renderSchedulingLastDayMaximum() {\n return undefined;\n },\n\n renderComponentsNodeCardTop() {\n return undefined;\n },\n\n getExtraMetaTableItemsForComponentsNode() {\n return undefined;\n },\n\n getExtraMetaTableItemsForPool() {\n return undefined;\n },\n\n getExtraMetaTableItemsForBundle() {\n return undefined;\n },\n\n getComponentsNodeDashboardUrl() {\n return {};\n },\n\n renderTransferQuotaNoticeForPool() {\n return undefined;\n },\n\n renderTransferQuotaNoticeForAccount() {\n return undefined;\n },\n\n renderTopRowExtraControlsForAccount() {\n return undefined;\n },\n\n renderTopRowExtraControlsForPool() {\n return undefined;\n },\n\n renderTopRowExtraControlsForBundle() {\n return undefined;\n },\n\n renderAccountsTableItemExtraControls() {\n return undefined;\n },\n\n renderSchedulingTableItemExtraControls() {\n return undefined;\n },\n\n renderBundlesTableItemExtraControls() {\n return undefined;\n },\n\n renderControlAbcService() {\n return undefined;\n },\n\n renderSubjectCard(props: SubjectCardProps): React.ReactNode {\n return <DefaultSubjectCard {...props} />;\n },\n\n makeSupportContent(_x, makeContent) {\n const {reportBugUrl} = uiSettings;\n if (!reportBugUrl) {\n return undefined;\n }\n\n return <SupportComponent makeContent={makeContent} />;\n },\n\n getComponentForConsumerMetrics() {\n return undefined;\n },\n\n getComonentForQueueMetrics() {\n return undefined;\n },\n\n renderTableCellBundleEditorNotice() {\n return undefined;\n },\n\n getNodeDeployUrl() {\n return undefined;\n },\n\n getNodeNannyUrl() {\n return undefined;\n },\n\n renderAppFooter() {\n return null;\n },\n\n renderAppNavigation(props) {\n return <AppNavigationPageLayout {...props} />;\n },\n\n createNotificationUrl() {\n return undefined;\n },\n\n wrapApp(app) {\n return app;\n },\n\n externalSchemaDescriptionSetup: {\n load(_cluster: string, _path: string) {\n return Promise.resolve({});\n },\n },\n\n getAclApi() {\n return defaultAclApi;\n },\n\n renderAclSubjectsSuggestControl(props) {\n return <YTSubjectSuggest {...props} />;\n },\n\n renderRolesLink() {\n return undefined;\n },\n\n getCustomQueryResultTab() {\n return undefined;\n },\n\n getExternalSettings() {\n return [];\n },\n\n renderUserSuggest(props) {\n return <YTUserSuggest {...props} />;\n },\n\n getExperimentalPages() {\n return experimentalPages;\n },\n\n getAllowedExperimentalPages() {\n return Promise.resolve([]);\n },\n\n docsUrls: docsUrls,\n\n getComponentForAclRoleActions() {\n return RoleActions;\n },\n\n getAclPermissionsSettings() {\n return PERMISSIONS_SETTINGS;\n },\n\n onChytAliasSqlClick() {},\n};\n\nfunction configureUIFactoryItem<K extends keyof UIFactory>(k: K, redefinition: UIFactory[K]) {\n uiFactory[k] = redefinition;\n}\n\nexport function configureUIFactory(overrides: Partial<UIFactory>) {\n _.forEach(overrides, (_v, k) => {\n const key = k as keyof UIFactory;\n configureUIFactoryItem(key, overrides[key]!);\n });\n}\n\nexport default new Proxy(uiFactory, {\n set: () => {\n throw new Error('Use configureUIFactory(...) method instead of direct modifications');\n },\n});\n\nexport function isAbcAllowed() {\n const abc = uiFactory.renderControlAbcService({\n onChange: () => {},\n value: {id: 123, slug: '123'},\n });\n return Boolean(abc);\n}\n"],"mappings":";;AAGA,OAAOA,KAAK,MAAM,OAAO;AAOzB,OAAOC,uBAAuB,MAEvB,oDAAoD;AAE3D,SAAgBC,aAAa,QAAO,8BAA8B;AAGlE,SAAQC,gBAAgB,QAAO,gDAAgD;AAE/E,SAAQC,aAAa,QAAO,wCAAwC;AACpE,SAAkBC,QAAQ,QAAO,sBAAsB;AACvD,SAAQC,gBAAgB,QAAO,mDAAmD;AAClF,OAAOC,WAAW,MAAmC,8BAA8B;AACnF,OAAOC,2BAA2B,MAAM,8EAA8E;AACtH,SAAQC,oBAAoB,QAAO,iBAAiB;AACpD,SAAQC,UAAU,QAAO,sBAAsB;AAC/C,OAAOC,EAAE,MAAM,oBAAoB;AAInC,SAAQC,kBAAkB,QAA8B,sCAAsC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AA2W/F,IAAMC,iBAA2B,GAAG,EAAE;AAEtC,IAAMC,SAAoB,GAAG;EACzBC,oBAAoB,WAAAA,qBAACC,OAAO,EAAE;IAAA,IAAAC,YAAA;IAC1B,QAAAA,YAAA,GAAOR,EAAE,CAACS,QAAQ,CAACF,OAAO,CAAE,cAAAC,YAAA,uBAArBA,YAAA,CAAuBE,IAAI;EACtC,CAAC;EACDC,UAAU,WAAAA,WAAA,EAAG;IACT,OAAO,KAAK;EAChB,CAAC;EACDC,sBAAsB,WAAAA,uBAAA,EAAG;IACrB,OAAOC,SAAS;EACpB,CAAC;EACDC,gBAAgB,WAAAA,iBAAA,EAAG;IACf,OAAOD,SAAS;EACpB,CAAC;EACDE,mCAAmC,WAAAA,oCAAA,EAAG;IAClC,OAAOF,SAAS;EACpB,CAAC;EACDG,8BAA8B,WAAAA,+BAAA,EAAG;IAC7B,OAAOH,SAAS;EACpB,CAAC;EACDI,uBAAuB,WAAAA,wBAAA,EAAG;IACtB,OAAOJ,SAAS;EACpB,CAAC;EAEDK,mBAAmB,WAAAA,oBAAA,EAAG;IAClB,OAAO,EAAE;EACb,CAAC;EACDC,iBAAiB,WAAAA,kBAAA,EAAG;IAChB,OAAO,EAAE;EACb,CAAC;EAEDC,6BAA6B,WAAAA,8BAAA,EAAG;IAC5B,OAAOP,SAAS;EACpB,CAAC;EAEDQ,sBAAsB,WAAAA,uBAAA,EAAG;IAAA,IAAAC,qBAAA;IACrB,IAAI,GAAAA,qBAAA,GAACvB,UAAU,CAACwB,oBAAoB,cAAAD,qBAAA,eAA/BA,qBAAA,CAAiCE,WAAW,GAAE;MAC/C,OAAO,EAAE;IACb;IAEA,IAAAC,sBAAA,GAA4C1B,UAAU,CAACwB,oBAAoB;MAApEC,WAAW,GAAAC,sBAAA,CAAXD,WAAW;MAAAE,sBAAA,GAAAD,sBAAA,CAAEE,KAAK;MAALA,KAAK,GAAAD,sBAAA,cAAG,YAAY,GAAAA,sBAAA;IAExC,OAAO,CACH;MACIE,IAAI,EAAE,YAAY;MAClBD,KAAK,EAALA,KAAK;MACLH,WAAW,EAAXA;IACJ,CAAC,CACJ;EACL,CAAC;EACDK,sBAAsB,WAAAA,uBAAA,EAAG;IACrB,IAAI,EAAC9B,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAE+B,gBAAgB,GAAE,OAAOjB,SAAS;IACnD,OAAOd,UAAU,CAAC+B,gBAAgB;EACtC,CAAC;EACDC,wBAAwB,WAAAA,yBAAA,EAAG;IACvB,IAAI,EAAChC,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEiC,2BAA2B,GAAE,OAAOnB,SAAS;IAC9D,OAAOd,UAAU,CAACiC,2BAA2B;EACjD,CAAC;EACDC,wBAAwB,WAAAA,yBAAA,EAAG;IAAA,IAAAC,qBAAA;IACvB,IAAI,EAACnC,UAAU,aAAVA,UAAU,gBAAAmC,qBAAA,GAAVnC,UAAU,CAAEoC,kBAAkB,cAAAD,qBAAA,eAA9BA,qBAAA,CAAgCV,WAAW,GAAE;MAC9C,OAAOX,SAAS;IACpB;IAEA,IAAAuB,sBAAA,GAA6BrC,UAAU,CAACoC,kBAAkB;MAAnDX,WAAW,GAAAY,sBAAA,CAAXZ,WAAW;MAAEG,KAAK,GAAAS,sBAAA,CAALT,KAAK;IACzB,OAAO;MAACH,WAAW,EAAXA,WAAW;MAAEG,KAAK,EAALA;IAAK,CAAC;EAC/B,CAAC;EACDU,sBAAsB,WAAAA,uBAAA,EAAG;IAAA,IAAAC,qBAAA;IACrB,IAAI,GAAAA,qBAAA,GAACvC,UAAU,CAACwC,iBAAiB,cAAAD,qBAAA,eAA5BA,qBAAA,CAA8Bd,WAAW,GAAE;MAC5C,OAAOX,SAAS;IACpB;IAEA,IAAA2B,sBAAA,GAA6BzC,UAAU,CAACwC,iBAAiB;MAAlDf,WAAW,GAAAgB,sBAAA,CAAXhB,WAAW;MAAEG,KAAK,GAAAa,sBAAA,CAALb,KAAK;IACzB,OAAO;MAACH,WAAW,EAAXA,WAAW;MAAEG,KAAK,EAALA;IAAK,CAAC;EAC/B,CAAC;EACDc,yBAAyB,WAAAA,0BAACC,MAAM,EAAE;IAAA,IAAAC,qBAAA,EAAAC,aAAA;IAC9B,IAAI,GAAAD,qBAAA,GAAC5C,UAAU,CAAC8C,oBAAoB,cAAAF,qBAAA,eAA/BA,qBAAA,CAAiCnB,WAAW,GAAE;MAC/C,OAAOX,SAAS;IACpB;IAEA,IAAAiC,sBAAA,GAA6B/C,UAAU,CAAC8C,oBAAoB;MAArDrB,WAAW,GAAAsB,sBAAA,CAAXtB,WAAW;MAAEG,KAAK,GAAAmB,sBAAA,CAALnB,KAAK;IAEzB,IAAMoB,gBAAgB,GAClBvB,WAAW,CAACwB,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAIxB,WAAW,CAACwB,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAExF,IAAID,gBAAgB,IAAI,EAAAH,aAAA,GAAAF,MAAM,CAACO,KAAK,cAAAL,aAAA,uBAAZA,aAAA,CAAcM,MAAM,IAAI,CAAC,EAAE;MAC/C,OAAO;QAACC,SAAS,EAAEtD;MAA2B,CAAC;IACnD;IAEA,OAAO;MAAC2B,WAAW,EAAXA,WAAW;MAAEG,KAAK,EAALA;IAAK,CAAC;EAC/B,CAAC;EACDyB,yBAAyB,WAAAA,0BAAA,EAAG;IACxB,OAAOvC,SAAS;EACpB,CAAC;EACDwC,6BAA6B,WAAAA,8BAAA,EAAG;IAAA,IAAAC,qBAAA;IAC5B,IAAAC,IAAA,IAAAD,qBAAA,GAA6BvD,UAAU,CAACyD,cAAc,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;MAArD9B,WAAW,GAAA+B,IAAA,CAAX/B,WAAW;MAAEG,KAAK,GAAA4B,IAAA,CAAL5B,KAAK;IACzB,IAAI,CAACH,WAAW,EAAE;MACd,OAAOX,SAAS;IACpB;IAEA,OAAO;MAACW,WAAW,EAAXA,WAAW;MAAEG,KAAK,EAALA;IAAK,CAAC;EAC/B,CAAC;EACD8B,gCAAgC,WAAAA,iCAAA,EAAG;IAC/B,OAAO5C,SAAS;EACpB,CAAC;EACD6C,+BAA+B,WAAAA,gCAAA,EAAG;IAC9B,OAAO7C,SAAS;EACpB,CAAC;EAED8C,4BAA4B,WAAAA,6BAAA,EAAG;IAC3B,OAAO,IAAI;EACf,CAAC;EAEDC,8BAA8B,WAAAA,+BAAA,EAAG;IAC7B,OAAO/C,SAAS;EACpB,CAAC;EAEDgD,2BAA2B,WAAAA,4BAAA,EAAG;IAC1B,OAAOhD,SAAS;EACpB,CAAC;EAEDiD,uCAAuC,WAAAA,wCAAA,EAAG;IACtC,OAAOjD,SAAS;EACpB,CAAC;EAEDkD,6BAA6B,WAAAA,8BAAA,EAAG;IAC5B,OAAOlD,SAAS;EACpB,CAAC;EAEDmD,+BAA+B,WAAAA,gCAAA,EAAG;IAC9B,OAAOnD,SAAS;EACpB,CAAC;EAEDoD,6BAA6B,WAAAA,8BAAA,EAAG;IAC5B,OAAO,CAAC,CAAC;EACb,CAAC;EAEDC,gCAAgC,WAAAA,iCAAA,EAAG;IAC/B,OAAOrD,SAAS;EACpB,CAAC;EAEDsD,mCAAmC,WAAAA,oCAAA,EAAG;IAClC,OAAOtD,SAAS;EACpB,CAAC;EAEDuD,mCAAmC,WAAAA,oCAAA,EAAG;IAClC,OAAOvD,SAAS;EACpB,CAAC;EAEDwD,gCAAgC,WAAAA,iCAAA,EAAG;IAC/B,OAAOxD,SAAS;EACpB,CAAC;EAEDyD,kCAAkC,WAAAA,mCAAA,EAAG;IACjC,OAAOzD,SAAS;EACpB,CAAC;EAED0D,oCAAoC,WAAAA,qCAAA,EAAG;IACnC,OAAO1D,SAAS;EACpB,CAAC;EAED2D,sCAAsC,WAAAA,uCAAA,EAAG;IACrC,OAAO3D,SAAS;EACpB,CAAC;EAED4D,mCAAmC,WAAAA,oCAAA,EAAG;IAClC,OAAO5D,SAAS;EACpB,CAAC;EAED6D,uBAAuB,WAAAA,wBAAA,EAAG;IACtB,OAAO7D,SAAS;EACpB,CAAC;EAED8D,iBAAiB,WAAAA,kBAACC,KAAuB,EAAmB;IACxD,oBAAOzE,IAAA,CAACF,kBAAkB,EAAA4E,aAAA,KAAKD,KAAK,CAAG,CAAC;EAC5C,CAAC;EAEDE,kBAAkB,WAAAA,mBAACC,EAAE,EAAEC,WAAW,EAAE;IAChC,IAAOC,YAAY,GAAIlF,UAAU,CAA1BkF,YAAY;IACnB,IAAI,CAACA,YAAY,EAAE;MACf,OAAOpE,SAAS;IACpB;IAEA,oBAAOV,IAAA,CAACX,gBAAgB;MAACwF,WAAW,EAAEA;IAAY,CAAE,CAAC;EACzD,CAAC;EAEDE,8BAA8B,WAAAA,+BAAA,EAAG;IAC7B,OAAOrE,SAAS;EACpB,CAAC;EAEDsE,0BAA0B,WAAAA,2BAAA,EAAG;IACzB,OAAOtE,SAAS;EACpB,CAAC;EAEDuE,iCAAiC,WAAAA,kCAAA,EAAG;IAChC,OAAOvE,SAAS;EACpB,CAAC;EAEDwE,gBAAgB,WAAAA,iBAAA,EAAG;IACf,OAAOxE,SAAS;EACpB,CAAC;EAEDyE,eAAe,WAAAA,gBAAA,EAAG;IACd,OAAOzE,SAAS;EACpB,CAAC;EAED0E,eAAe,WAAAA,gBAAA,EAAG;IACd,OAAO,IAAI;EACf,CAAC;EAEDC,mBAAmB,WAAAA,oBAACZ,KAAK,EAAE;IACvB,oBAAOzE,IAAA,CAACb,uBAAuB,EAAAuF,aAAA,KAAKD,KAAK,CAAG,CAAC;EACjD,CAAC;EAEDa,qBAAqB,WAAAA,sBAAA,EAAG;IACpB,OAAO5E,SAAS;EACpB,CAAC;EAED6E,OAAO,WAAAA,QAACC,GAAG,EAAE;IACT,OAAOA,GAAG;EACd,CAAC;EAEDC,8BAA8B,EAAE;IAC5BC,IAAI,WAAAA,KAACC,QAAgB,EAAEC,KAAa,EAAE;MAClC,OAAOC,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9B;EACJ,CAAC;EAEDC,SAAS,WAAAA,UAAA,EAAG;IACR,OAAO3G,aAAa;EACxB,CAAC;EAED4G,+BAA+B,WAAAA,gCAACvB,KAAK,EAAE;IACnC,oBAAOzE,IAAA,CAACR,gBAAgB,EAAAkF,aAAA,KAAKD,KAAK,CAAG,CAAC;EAC1C,CAAC;EAEDwB,eAAe,WAAAA,gBAAA,EAAG;IACd,OAAOvF,SAAS;EACpB,CAAC;EAEDwF,uBAAuB,WAAAA,wBAAA,EAAG;IACtB,OAAOxF,SAAS;EACpB,CAAC;EAEDyF,mBAAmB,WAAAA,oBAAA,EAAG;IAClB,OAAO,EAAE;EACb,CAAC;EAEDC,iBAAiB,WAAAA,kBAAC3B,KAAK,EAAE;IACrB,oBAAOzE,IAAA,CAACV,aAAa,EAAAoF,aAAA,KAAKD,KAAK,CAAG,CAAC;EACvC,CAAC;EAED4B,oBAAoB,WAAAA,qBAAA,EAAG;IACnB,OAAOpG,iBAAiB;EAC5B,CAAC;EAEDqG,2BAA2B,WAAAA,4BAAA,EAAG;IAC1B,OAAOT,OAAO,CAACC,OAAO,CAAC,EAAE,CAAC;EAC9B,CAAC;EAEDvG,QAAQ,EAAEA,QAAQ;EAElBgH,6BAA6B,WAAAA,8BAAA,EAAG;IAC5B,OAAO9G,WAAW;EACtB,CAAC;EAED+G,yBAAyB,WAAAA,0BAAA,EAAG;IACxB,OAAO7G,oBAAoB;EAC/B,CAAC;EAED8G,mBAAmB,WAAAA,oBAAA,EAAG,CAAC;AAC3B,CAAC;AAED,SAASC,sBAAsBA,CAA4BC,CAAI,EAAEC,YAA0B,EAAE;EACzF1G,SAAS,CAACyG,CAAC,CAAC,GAAGC,YAAY;AAC/B;AAEA,OAAO,SAASC,kBAAkBA,CAACC,SAA6B,EAAE;EAC9DC,QAAA,CAAUD,SAAS,EAAE,UAACE,EAAE,EAAEL,CAAC,EAAK;IAC5B,IAAMM,GAAG,GAAGN,CAAoB;IAChCD,sBAAsB,CAACO,GAAG,EAAEH,SAAS,CAACG,GAAG,CAAE,CAAC;EAChD,CAAC,CAAC;AACN;AAEA,eAAe,IAAIC,KAAK,CAAChH,SAAS,EAAE;EAChCiH,GAAG,EAAE,SAAAA,IAAA,EAAM;IACP,MAAM,IAAIC,KAAK,CAAC,oEAAoE,CAAC;EACzF;AACJ,CAAC,CAAC;AAEF,OAAO,SAASC,YAAYA,CAAA,EAAG;EAC3B,IAAMC,GAAG,GAAGpH,SAAS,CAACqE,uBAAuB,CAAC;IAC1CgD,QAAQ,EAAE,SAAAA,SAAA,EAAM,CAAC,CAAC;IAClBC,KAAK,EAAE;MAACC,EAAE,EAAE,GAAG;MAAEC,IAAI,EAAE;IAAK;EAChC,CAAC,CAAC;EACF,OAAOC,OAAO,CAACL,GAAG,CAAC;AACvB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["ClusterPage.scss"],"names":[],"mappings":"AAGI;EACI,oCAAA;EACA,iBAAA;AAFR;AAIQ;EACI,iBAAA;AAFZ;AAMI;EACI,cAAA;EACA,6BAAA;AAJR;AAMQ;EACI,cAAA;AAJZ;AAQI;EACI,WAAA;EACA,gBAAA;EACA,aAAA;EACA,sBAAA;
|
1
|
+
{"version":3,"sources":["ClusterPage.scss"],"names":[],"mappings":"AAGI;EACI,oCAAA;EACA,iBAAA;AAFR;AAIQ;EACI,iBAAA;AAFZ;AAMI;EACI,cAAA;EACA,6BAAA;AAJR;AAMQ;EACI,cAAA;AAJZ;AAQI;EACI,cAAA;AANR;AASI;EACI,WAAA;EACA,gBAAA;EACA,aAAA;EACA,sBAAA;AAPR;AASQ;EACI,cAAA;EACA,8CAAA;AAPZ;AAWI;EACI,kBAAA;EACA,yCAAA;EACA,aAAA;EACA,WAAA;EACA,kBAAA;AATR;AAYI;EACI,cAAA;AAVR","file":"ClusterPage.css","sourcesContent":["@import '../../styles/common';\n\n.cluster-page {\n &__panes-wrapper {\n margin-top: var(--app-header-height);\n overflow: visible;\n\n & .flex-split__pane {\n overflow: visible;\n }\n }\n\n &__panes-wrapper_with-pane {\n overflow: auto;\n max-width: calc(100vw - 56px);\n\n & .flex-split__pane {\n overflow: auto;\n }\n }\n\n &__panes-wrapper_with-footer {\n overflow: auto;\n }\n\n &__content-pane {\n width: 100%;\n max-width: 100vw;\n display: flex;\n flex-direction: column;\n\n &_split_yes {\n overflow: auto;\n height: calc(100vh - var(--app-header-height));\n }\n }\n\n &__warning-pane {\n text-align: center;\n background-color: var(--alert-background);\n padding: 15px;\n margin: 5px;\n border-radius: 5px;\n }\n\n &__error {\n margin: 0 20px;\n }\n}\n"],"sourceRoot":""}
|
@@ -49,6 +49,7 @@ import { makeExtraPageRoutes } from './ExtraClusterPageRoutes';
|
|
49
49
|
import { odinPageInfo } from '../../pages/odin';
|
50
50
|
import { hasOdinPage } from '../../config';
|
51
51
|
import "./ClusterPage.css";
|
52
|
+
import UIFactory from '../../UIFactory';
|
52
53
|
import { jsx as _jsx } from "react/jsx-runtime";
|
53
54
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
54
55
|
var b = cn('cluster-page');
|
@@ -282,6 +283,7 @@ var ClusterPage = /*#__PURE__*/function (_Component) {
|
|
282
283
|
cluster = _this$props3.cluster,
|
283
284
|
splitScreen = _this$props3.splitScreen,
|
284
285
|
clusters = _this$props3.clusters;
|
286
|
+
var footer = UIFactory.renderAppFooter();
|
285
287
|
|
286
288
|
// TODO: put current cluster config into redux state to avoid doing things like these here
|
287
289
|
var clusterConfig = getClusterConfig(clusters, cluster);
|
@@ -292,7 +294,8 @@ var ClusterPage = /*#__PURE__*/function (_Component) {
|
|
292
294
|
cluster: cluster
|
293
295
|
}), /*#__PURE__*/_jsx(ClusterPageHeader, {}), /*#__PURE__*/_jsxs(FlexSplitPane, {
|
294
296
|
className: b('panes-wrapper', {
|
295
|
-
'with-pane': splitScreen.isSplit
|
297
|
+
'with-pane': splitScreen.isSplit,
|
298
|
+
'with-footer': Boolean(footer)
|
296
299
|
}),
|
297
300
|
paneClassNames: splitScreen.paneClassNames,
|
298
301
|
direction: FlexSplitPane.HORIZONTAL,
|
@@ -311,7 +314,7 @@ var ClusterPage = /*#__PURE__*/function (_Component) {
|
|
311
314
|
}),
|
312
315
|
children: this.renderContent(clusterConfig)
|
313
316
|
}), null]
|
314
|
-
})]
|
317
|
+
}), footer]
|
315
318
|
});
|
316
319
|
}
|
317
320
|
}]);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","Component","Fragment","Redirect","Route","Switch","useLocation","connect","useSelector","cn","BanPage","MaintenancePage","HandleMaintenanceRedirect","Components","Operations","Accounts","Dashboard","System","Navigation","PathViewer","Tablet","TabletCellBundles","GroupsPage","UsersPage","Scheduling","QueryTracker","Job","ChytPage","ClusterPageHeader","PageTracker","PageHeadByCluster","ConnectionErrorRegion","GeneralErrorRegion","FlexSplitPane","ErrorBlock","LOADING_STATUS","LOAD_ERROR","Page","SPLIT_PANE_ID","joinMenuItemsAction","splitMenuItemsAction","trackVisit","setSetting","unmountCluster","updateCluster","updateTitle","getClusterUiConfig","isQueryTrackerAllowed","getClusterConfig","NAMESPACES","SettingName","getClusterPagePaneSizes","getStartingPage","SupportedFeaturesUpdater","useRumMeasureStart","useRumMeasureStop","RumMeasureTypes","useClusterFromLocation","makeExtraPageRoutes","odinPageInfo","hasOdinPage","jsx","_jsx","jsxs","_jsxs","b","RedirectToBanIfNeededMemo","memo","RedirectToBanIfNeeded","ClusterPage","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","state","width","contentPaneRef","createRef","onResize","splitScreen","props","toolbar","document","querySelector","isSplit","gutterWidth","offset","getElementById","clientWidth","style","right","window","dispatchEvent","Event","handleSplit","updateWidthModifier","onResizeEnd","sizes","NAVIGATION","CLUSTER_PAGE_PANE_SIZES","getInitialSizes","clusterPagePaneSizes","_createClass","key","value","componentDidMount","cluster","getSnapshotBeforeUpdate","prevProps","pageYOffset","current","scrollTop","componentDidUpdate","prevState","prevScroll","scrollBy","prevCluster","componentWillUnmount","path","page","_this$contentPaneRef$","currentWidth","Infinity","setState","renderError","clusterConfig","_ref","error","errorType","CONNECTION","id","AUTHENTICATION","message","GENERAL","isParamsLoading","_this$props","paramsCluster","renderContent","_this$props2","startingPage","isLoaded","hasError","paramsError","allowChyt","allowQueryTracker","children","to","BAN","component","MAINTENANCE","COMPONENTS","OPERATIONS","JOB","DASHBOARD","SYSTEM","ACCOUNTS","TABLET_CELL_BUNDLES","CHAOS_CELL_BUNDLES","PATH_VIEWER","TABLET","USERS","GROUPS","SCHEDULING","CHYT","QUERIES","pageId","reactComponent","from","VERSIONS","className","render","_this$props3","clusters","ClusterPageStopRumMeasure","paneClassNames","direction","HORIZONTAL","onSplit","onUnSplit","minSize","ref","split","mapStateToProps","_state$global","global","login","maintenancePageEvent","loadState","paramsLoading","clustersMenu","LOADED","ERROR","Boolean","chyt_controller_base_url","mapDispatchToProps","_ref2","_useSelector","blocked","banned","_useLocation","pathname","enableRedirect","endsWith","type","CLUSTER_PARAMS","subPage","allowStop","_ref3","_ref4","_slicedToArray","startDeps","_ref5","_ref6","stopDeps"],"sources":["ClusterPage.js"],"sourcesContent":["import React, {Component, Fragment} from 'react';\nimport {Redirect, Route, Switch, useLocation} from 'react-router';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport BanPage from '../BanPage/BanPage';\nimport MaintenancePage from '../MaintenancePage/MaintenancePage';\nimport HandleMaintenanceRedirect from '../MaintenancePage/HandleRedirect';\nimport Components from '../../pages/components/Components/Components';\nimport Operations from '../../pages/operations/Operations/Operations';\nimport Accounts from '../../pages/accounts/Accounts/Accounts';\nimport Dashboard from '../../pages/dashboard/Dashboard/Dashboard';\nimport {System} from '../../pages/system/System/System';\nimport Navigation from '../../pages/navigation/Navigation/Navigation';\nimport PathViewer from '../../pages/path-viewer/PathViewer';\nimport Tablet from '../../pages/tablet/Tablet';\nimport TabletCellBundles from '../../pages/tablet_cell_bundles/TabletCellBundles';\nimport GroupsPage from '../../pages/groups/GroupsPage';\nimport UsersPage from '../../pages/users/UsersPage';\nimport Scheduling from '../../pages/scheduling/Scheduling/Scheduling';\nimport QueryTracker from '../../pages/query-tracker/QueryTracker';\nimport Job from '../../pages/job/Job';\nimport {ChytPage} from '../../pages/chyt';\n\nimport ClusterPageHeader from '../ClusterPageHeader/ClusterPageHeader';\nimport PageTracker from './PageTracker';\n\nimport {PageHeadByCluster} from '../../components/PageHead/PageHead';\nimport ConnectionErrorRegion from '../../components/PreloaderErrors/ConnectionErrorRegion';\nimport GeneralErrorRegion from '../../components/PreloaderErrors/GeneralErrorRegion';\nimport FlexSplitPane from '../../components/FlexSplitPane/FlexSplitPane';\nimport ErrorBlock from '../../components/Error/Error';\n\nimport {LOADING_STATUS, LOAD_ERROR, Page, SPLIT_PANE_ID} from '../../constants/index';\nimport {joinMenuItemsAction, splitMenuItemsAction, trackVisit} from '../../store/actions/menu';\nimport {setSetting} from '../../store/actions/settings';\nimport {unmountCluster, updateCluster} from '../../store/actions/cluster-params';\nimport {updateTitle} from '../../store/actions/global';\nimport {getClusterUiConfig, isQueryTrackerAllowed} from '../../store/selectors/global';\nimport {getClusterConfig} from '../../utils';\nimport {NAMESPACES, SettingName} from '../../../shared/constants/settings';\nimport {getClusterPagePaneSizes, getStartingPage} from '../../store/selectors/settings';\nimport SupportedFeaturesUpdater from './SupportedFeaturesUpdater';\nimport {useRumMeasureStart, useRumMeasureStop} from '../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../rum/rum-measure-types';\nimport {useClusterFromLocation} from '../../hooks/use-cluster';\nimport {makeExtraPageRoutes} from './ExtraClusterPageRoutes';\nimport {odinPageInfo} from '../../pages/odin';\nimport {hasOdinPage} from '../../config';\n\nimport './ClusterPage.scss';\n\nconst b = cn('cluster-page');\n\nconst RedirectToBanIfNeededMemo = React.memo(RedirectToBanIfNeeded);\n\nclass ClusterPage extends Component {\n static propTypes = {\n cluster: PropTypes.string,\n\n // from connect\n clusters: PropTypes.object.isRequired,\n clusterPagePaneSizes: PropTypes.array,\n login: PropTypes.string,\n queriesPageAllowed: PropTypes.bool,\n maintenancePageEvent: PropTypes.object,\n startingPage: PropTypes.string.isRequired,\n isLoaded: PropTypes.bool.isRequired,\n hasError: PropTypes.bool.isRequired,\n error: PropTypes.shape({\n errorType: PropTypes.string,\n }).isRequired,\n paramsError: PropTypes.any,\n splitScreen: PropTypes.shape({\n isSplit: PropTypes.bool.isRequired,\n paneClassNames: PropTypes.array.isRequired,\n }).isRequired,\n\n splitMenuItemsAction: PropTypes.func.isRequired,\n setSetting: PropTypes.func.isRequired,\n joinMenuItemsAction: PropTypes.func.isRequired,\n updateCluster: PropTypes.func.isRequired,\n updateTitle: PropTypes.func.isRequired,\n unmountCluster: PropTypes.func.isRequired,\n trackVisit: PropTypes.func.isRequired,\n\n allowChyt: PropTypes.bool,\n allowQueryTracker: PropTypes.bool,\n };\n\n state = {\n width: 'large',\n };\n\n componentDidMount() {\n const {cluster} = this.props;\n this.props.updateCluster(cluster);\n }\n\n getSnapshotBeforeUpdate(prevProps) {\n if (prevProps.splitScreen.isSplit !== this.props.splitScreen.isSplit) {\n return this.props.splitScreen.isSplit\n ? window.pageYOffset\n : this.contentPaneRef.current.scrollTop;\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps, prevState, prevScroll) {\n if (prevScroll !== null) {\n if (this.props.splitScreen.isSplit) {\n this.contentPaneRef.current.scrollTop = prevScroll;\n }\n\n window.scrollBy(0, prevScroll);\n }\n\n const {cluster: prevCluster} = prevProps;\n const {cluster} = this.props;\n\n if (cluster !== prevCluster) {\n this.props.updateCluster(cluster);\n }\n }\n\n componentWillUnmount() {\n this.props.updateTitle({path: '', page: ''});\n this.props.unmountCluster();\n }\n\n contentPaneRef = React.createRef();\n\n onResize = () => {\n const {splitScreen} = this.props;\n const toolbar = document.querySelector('#elements-toolbar');\n\n if (splitScreen.isSplit && toolbar) {\n const gutterWidth = 10;\n const offset = document.getElementById(SPLIT_PANE_ID).clientWidth + gutterWidth;\n toolbar.style.right = `${offset}px`;\n } else if (toolbar) {\n toolbar.style.right = '0';\n }\n\n window.dispatchEvent(new Event('resize'));\n };\n\n handleSplit = () => {\n this.onResize();\n // fight the table toolbar becoming invisible after toggling YQLWidget and before first scroll\n window.dispatchEvent(new Event('scroll'));\n this.updateWidthModifier();\n };\n\n updateWidthModifier() {\n const currentWidth = this.contentPaneRef.current?.clientWidth || Infinity;\n if (currentWidth <= 720) {\n this.setState({width: 'small'});\n } else if (currentWidth <= 1024) {\n this.setState({width: 'medium'});\n } else {\n this.setState({width: 'large'});\n }\n }\n\n onResizeEnd = (sizes) => {\n this.props.setSetting(\n SettingName.NAVIGATION.CLUSTER_PAGE_PANE_SIZES,\n NAMESPACES.NAVIGATION,\n sizes,\n );\n this.updateWidthModifier();\n };\n\n getInitialSizes = () => {\n return this.props.clusterPagePaneSizes;\n };\n\n renderError(clusterConfig) {\n const {errorType} = this.props.error || {};\n\n switch (errorType) {\n case LOAD_ERROR.CONNECTION:\n return <ConnectionErrorRegion cluster={clusterConfig.id} />;\n case LOAD_ERROR.AUTHENTICATION:\n return (\n <GeneralErrorRegion\n cluster={clusterConfig.id}\n message={\n 'Could not fetch the XSRF token, therefore preventing further operations. Sometimes ' +\n 'token fetching fails due to the network issues. If the problem persists, please report it ' +\n 'via Bug Reporter.'\n }\n />\n );\n case LOAD_ERROR.GENERAL:\n return (\n <GeneralErrorRegion message=\"Unexpected error occurred. If problem persists please report it via Bug Reporter.\" />\n );\n }\n }\n\n isParamsLoading() {\n const {cluster, paramsCluster} = this.props;\n return cluster !== paramsCluster;\n }\n\n renderContent(clusterConfig) {\n const {\n cluster,\n startingPage,\n isLoaded,\n hasError,\n paramsError,\n allowChyt,\n allowQueryTracker,\n } = this.props;\n\n return isLoaded && !this.isParamsLoading() ? (\n <Fragment>\n <SupportedFeaturesUpdater />\n <HandleMaintenanceRedirect />\n <RedirectToBanIfNeededMemo to={`/${cluster}/${Page.BAN}`} />\n <Switch>\n <Route path={`/:cluster/${Page.BAN}`} component={BanPage} />\n <Route path={`/:cluster/${Page.MAINTENANCE}`} component={MaintenancePage} />\n <Route path={`/:cluster/${Page.COMPONENTS}`} component={Components} />\n <Route path={`/:cluster/${Page.OPERATIONS}`} component={Operations} />\n <Route path={`/:cluster/${Page.JOB}`} component={Job} />\n <Route path={`/:cluster/${Page.DASHBOARD}`} component={Dashboard} />\n <Route path={`/:cluster/${Page.SYSTEM}`} component={System} />\n <Route path={`/:cluster/${Page.ACCOUNTS}`} component={Accounts} />\n <Route\n path={[\n `/:cluster/${Page.TABLET_CELL_BUNDLES}`,\n `/:cluster/${Page.CHAOS_CELL_BUNDLES}`,\n ]}\n component={TabletCellBundles}\n />\n <Route path={`/:cluster/${Page.NAVIGATION}`} component={Navigation} />\n <Route path={`/:cluster/${Page.PATH_VIEWER}`} component={PathViewer} />\n <Route path={`/:cluster/${Page.TABLET}`} component={Tablet} />\n <Route path={`/:cluster/${Page.USERS}`} component={UsersPage} />\n <Route path={`/:cluster/${Page.GROUPS}`} component={GroupsPage} />\n <Route path={`/:cluster/${Page.SCHEDULING}`} component={Scheduling} />\n {allowChyt && <Route path={`/:cluster/${Page.CHYT}`} component={ChytPage} />}\n {allowQueryTracker && (\n <Route path={`/:cluster/${Page.QUERIES}`} component={QueryTracker} />\n )}\n {hasOdinPage() && (\n <Route\n path={`/:cluster/${odinPageInfo.pageId}`}\n component={odinPageInfo.reactComponent}\n />\n )}\n\n <Redirect\n from={`/:cluster/${Page.VERSIONS}`}\n to={`/:cluster/${Page.COMPONENTS}/versions`}\n />\n {makeExtraPageRoutes()}\n <Redirect from={`/${cluster}/`} to={`/${cluster}/${startingPage}`} />\n </Switch>\n\n <Route path=\"/:cluster/:page/:tab?\" component={PageTracker} />\n </Fragment>\n ) : (\n <React.Fragment>\n <div className=\"preloader\">\n {hasError ? (\n this.renderError(clusterConfig)\n ) : (\n <p className=\"preloader__loading\">Loading {clusterConfig?.id}...</p>\n )}\n </div>\n <div className={b('error')}>\n {paramsError && <ErrorBlock error={paramsError} />}\n </div>\n </React.Fragment>\n );\n }\n\n render() {\n const {cluster, splitScreen, clusters} = this.props;\n\n // TODO: put current cluster config into redux state to avoid doing things like these here\n const clusterConfig = getClusterConfig(clusters, cluster);\n\n // FIXME: handle case when clusterConfig is undefined due to wrong cluster name\n return (\n <Fragment>\n <ClusterPageStopRumMeasure />\n <PageHeadByCluster cluster={cluster} />\n\n <ClusterPageHeader />\n\n <FlexSplitPane\n className={b('panes-wrapper', {\n 'with-pane': splitScreen.isSplit,\n })}\n paneClassNames={splitScreen.paneClassNames}\n direction={FlexSplitPane.HORIZONTAL}\n onResize={this.onResize}\n onResizeEnd={this.onResizeEnd}\n onSplit={this.handleSplit}\n onUnSplit={this.handleSplit}\n minSize={600}\n getInitialSizes={this.getInitialSizes}\n id={SPLIT_PANE_ID}\n >\n <div\n ref={this.contentPaneRef}\n className={b('content-pane', {\n split: splitScreen.isSplit && 'yes',\n width: this.state.width,\n })}\n >\n {this.renderContent(clusterConfig)}\n </div>\n\n {null}\n </FlexSplitPane>\n </Fragment>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n const {\n login,\n maintenancePageEvent,\n splitScreen,\n loadState,\n error,\n paramsCluster,\n paramsLoading,\n paramsError,\n } = state.global;\n\n const clusters = state.clustersMenu.clusters;\n\n return {\n clusters,\n isLoaded: !paramsLoading && loadState === LOADING_STATUS.LOADED,\n hasError: loadState === LOADING_STATUS.ERROR,\n error,\n paramsError,\n login,\n splitScreen,\n maintenancePageEvent,\n clusterPagePaneSizes: getClusterPagePaneSizes(state),\n startingPage: getStartingPage(state),\n paramsCluster,\n allowQueryTracker: isQueryTrackerAllowed(state),\n allowChyt: Boolean(getClusterUiConfig(state).chyt_controller_base_url),\n };\n}\n\nconst mapDispatchToProps = {\n setSetting,\n trackVisit,\n splitMenuItemsAction,\n joinMenuItemsAction,\n updateTitle,\n updateCluster,\n unmountCluster,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ClusterPage);\n\nfunction RedirectToBanIfNeeded({to}) {\n const {blocked, banned} = useSelector((state) => state.global);\n const {pathname} = useLocation();\n const enableRedirect = (banned || blocked) && !pathname.endsWith('/ban');\n\n if (!enableRedirect) {\n return null;\n }\n\n return <Redirect to={to} />;\n}\n\nfunction ClusterPageStopRumMeasure() {\n const loadState = useSelector((state) => state.global.loadState);\n const paramsLoading = useSelector((state) => state.global.paramsLoading);\n\n const isLoaded =\n loadState === LOADING_STATUS.ERROR ||\n (!paramsLoading && loadState === LOADING_STATUS.LOADED);\n\n const cluster = useClusterFromLocation();\n\n useRumMeasureStart({\n type: RumMeasureTypes.CLUSTER_PARAMS,\n subPage: `ui.${cluster}`,\n allowStop: ([isLoaded]) => !isLoaded,\n startDeps: [isLoaded],\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.CLUSTER_PARAMS,\n allowStop: ([isLoaded]) => isLoaded,\n stopDeps: [isLoaded],\n });\n return null;\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["React","Component","Fragment","Redirect","Route","Switch","useLocation","connect","useSelector","cn","BanPage","MaintenancePage","HandleMaintenanceRedirect","Components","Operations","Accounts","Dashboard","System","Navigation","PathViewer","Tablet","TabletCellBundles","GroupsPage","UsersPage","Scheduling","QueryTracker","Job","ChytPage","ClusterPageHeader","PageTracker","PageHeadByCluster","ConnectionErrorRegion","GeneralErrorRegion","FlexSplitPane","ErrorBlock","LOADING_STATUS","LOAD_ERROR","Page","SPLIT_PANE_ID","joinMenuItemsAction","splitMenuItemsAction","trackVisit","setSetting","unmountCluster","updateCluster","updateTitle","getClusterUiConfig","isQueryTrackerAllowed","getClusterConfig","NAMESPACES","SettingName","getClusterPagePaneSizes","getStartingPage","SupportedFeaturesUpdater","useRumMeasureStart","useRumMeasureStop","RumMeasureTypes","useClusterFromLocation","makeExtraPageRoutes","odinPageInfo","hasOdinPage","UIFactory","jsx","_jsx","jsxs","_jsxs","b","RedirectToBanIfNeededMemo","memo","RedirectToBanIfNeeded","ClusterPage","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","state","width","contentPaneRef","createRef","onResize","splitScreen","props","toolbar","document","querySelector","isSplit","gutterWidth","offset","getElementById","clientWidth","style","right","window","dispatchEvent","Event","handleSplit","updateWidthModifier","onResizeEnd","sizes","NAVIGATION","CLUSTER_PAGE_PANE_SIZES","getInitialSizes","clusterPagePaneSizes","_createClass","key","value","componentDidMount","cluster","getSnapshotBeforeUpdate","prevProps","pageYOffset","current","scrollTop","componentDidUpdate","prevState","prevScroll","scrollBy","prevCluster","componentWillUnmount","path","page","_this$contentPaneRef$","currentWidth","Infinity","setState","renderError","clusterConfig","_ref","error","errorType","CONNECTION","id","AUTHENTICATION","message","GENERAL","isParamsLoading","_this$props","paramsCluster","renderContent","_this$props2","startingPage","isLoaded","hasError","paramsError","allowChyt","allowQueryTracker","children","to","BAN","component","MAINTENANCE","COMPONENTS","OPERATIONS","JOB","DASHBOARD","SYSTEM","ACCOUNTS","TABLET_CELL_BUNDLES","CHAOS_CELL_BUNDLES","PATH_VIEWER","TABLET","USERS","GROUPS","SCHEDULING","CHYT","QUERIES","pageId","reactComponent","from","VERSIONS","className","render","_this$props3","clusters","footer","renderAppFooter","ClusterPageStopRumMeasure","Boolean","paneClassNames","direction","HORIZONTAL","onSplit","onUnSplit","minSize","ref","split","mapStateToProps","_state$global","global","login","maintenancePageEvent","loadState","paramsLoading","clustersMenu","LOADED","ERROR","chyt_controller_base_url","mapDispatchToProps","_ref2","_useSelector","blocked","banned","_useLocation","pathname","enableRedirect","endsWith","type","CLUSTER_PARAMS","subPage","allowStop","_ref3","_ref4","_slicedToArray","startDeps","_ref5","_ref6","stopDeps"],"sources":["ClusterPage.js"],"sourcesContent":["import React, {Component, Fragment} from 'react';\nimport {Redirect, Route, Switch, useLocation} from 'react-router';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport BanPage from '../BanPage/BanPage';\nimport MaintenancePage from '../MaintenancePage/MaintenancePage';\nimport HandleMaintenanceRedirect from '../MaintenancePage/HandleRedirect';\nimport Components from '../../pages/components/Components/Components';\nimport Operations from '../../pages/operations/Operations/Operations';\nimport Accounts from '../../pages/accounts/Accounts/Accounts';\nimport Dashboard from '../../pages/dashboard/Dashboard/Dashboard';\nimport {System} from '../../pages/system/System/System';\nimport Navigation from '../../pages/navigation/Navigation/Navigation';\nimport PathViewer from '../../pages/path-viewer/PathViewer';\nimport Tablet from '../../pages/tablet/Tablet';\nimport TabletCellBundles from '../../pages/tablet_cell_bundles/TabletCellBundles';\nimport GroupsPage from '../../pages/groups/GroupsPage';\nimport UsersPage from '../../pages/users/UsersPage';\nimport Scheduling from '../../pages/scheduling/Scheduling/Scheduling';\nimport QueryTracker from '../../pages/query-tracker/QueryTracker';\nimport Job from '../../pages/job/Job';\nimport {ChytPage} from '../../pages/chyt';\n\nimport ClusterPageHeader from '../ClusterPageHeader/ClusterPageHeader';\nimport PageTracker from './PageTracker';\n\nimport {PageHeadByCluster} from '../../components/PageHead/PageHead';\nimport ConnectionErrorRegion from '../../components/PreloaderErrors/ConnectionErrorRegion';\nimport GeneralErrorRegion from '../../components/PreloaderErrors/GeneralErrorRegion';\nimport FlexSplitPane from '../../components/FlexSplitPane/FlexSplitPane';\nimport ErrorBlock from '../../components/Error/Error';\n\nimport {LOADING_STATUS, LOAD_ERROR, Page, SPLIT_PANE_ID} from '../../constants/index';\nimport {joinMenuItemsAction, splitMenuItemsAction, trackVisit} from '../../store/actions/menu';\nimport {setSetting} from '../../store/actions/settings';\nimport {unmountCluster, updateCluster} from '../../store/actions/cluster-params';\nimport {updateTitle} from '../../store/actions/global';\nimport {getClusterUiConfig, isQueryTrackerAllowed} from '../../store/selectors/global';\nimport {getClusterConfig} from '../../utils';\nimport {NAMESPACES, SettingName} from '../../../shared/constants/settings';\nimport {getClusterPagePaneSizes, getStartingPage} from '../../store/selectors/settings';\nimport SupportedFeaturesUpdater from './SupportedFeaturesUpdater';\nimport {useRumMeasureStart, useRumMeasureStop} from '../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../rum/rum-measure-types';\nimport {useClusterFromLocation} from '../../hooks/use-cluster';\nimport {makeExtraPageRoutes} from './ExtraClusterPageRoutes';\nimport {odinPageInfo} from '../../pages/odin';\nimport {hasOdinPage} from '../../config';\n\nimport './ClusterPage.scss';\nimport UIFactory from '../../UIFactory';\n\nconst b = cn('cluster-page');\n\nconst RedirectToBanIfNeededMemo = React.memo(RedirectToBanIfNeeded);\n\nclass ClusterPage extends Component {\n static propTypes = {\n cluster: PropTypes.string,\n\n // from connect\n clusters: PropTypes.object.isRequired,\n clusterPagePaneSizes: PropTypes.array,\n login: PropTypes.string,\n queriesPageAllowed: PropTypes.bool,\n maintenancePageEvent: PropTypes.object,\n startingPage: PropTypes.string.isRequired,\n isLoaded: PropTypes.bool.isRequired,\n hasError: PropTypes.bool.isRequired,\n error: PropTypes.shape({\n errorType: PropTypes.string,\n }).isRequired,\n paramsError: PropTypes.any,\n splitScreen: PropTypes.shape({\n isSplit: PropTypes.bool.isRequired,\n paneClassNames: PropTypes.array.isRequired,\n }).isRequired,\n\n splitMenuItemsAction: PropTypes.func.isRequired,\n setSetting: PropTypes.func.isRequired,\n joinMenuItemsAction: PropTypes.func.isRequired,\n updateCluster: PropTypes.func.isRequired,\n updateTitle: PropTypes.func.isRequired,\n unmountCluster: PropTypes.func.isRequired,\n trackVisit: PropTypes.func.isRequired,\n\n allowChyt: PropTypes.bool,\n allowQueryTracker: PropTypes.bool,\n };\n\n state = {\n width: 'large',\n };\n\n componentDidMount() {\n const {cluster} = this.props;\n this.props.updateCluster(cluster);\n }\n\n getSnapshotBeforeUpdate(prevProps) {\n if (prevProps.splitScreen.isSplit !== this.props.splitScreen.isSplit) {\n return this.props.splitScreen.isSplit\n ? window.pageYOffset\n : this.contentPaneRef.current.scrollTop;\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps, prevState, prevScroll) {\n if (prevScroll !== null) {\n if (this.props.splitScreen.isSplit) {\n this.contentPaneRef.current.scrollTop = prevScroll;\n }\n\n window.scrollBy(0, prevScroll);\n }\n\n const {cluster: prevCluster} = prevProps;\n const {cluster} = this.props;\n\n if (cluster !== prevCluster) {\n this.props.updateCluster(cluster);\n }\n }\n\n componentWillUnmount() {\n this.props.updateTitle({path: '', page: ''});\n this.props.unmountCluster();\n }\n\n contentPaneRef = React.createRef();\n\n onResize = () => {\n const {splitScreen} = this.props;\n const toolbar = document.querySelector('#elements-toolbar');\n\n if (splitScreen.isSplit && toolbar) {\n const gutterWidth = 10;\n const offset = document.getElementById(SPLIT_PANE_ID).clientWidth + gutterWidth;\n toolbar.style.right = `${offset}px`;\n } else if (toolbar) {\n toolbar.style.right = '0';\n }\n\n window.dispatchEvent(new Event('resize'));\n };\n\n handleSplit = () => {\n this.onResize();\n // fight the table toolbar becoming invisible after toggling YQLWidget and before first scroll\n window.dispatchEvent(new Event('scroll'));\n this.updateWidthModifier();\n };\n\n updateWidthModifier() {\n const currentWidth = this.contentPaneRef.current?.clientWidth || Infinity;\n if (currentWidth <= 720) {\n this.setState({width: 'small'});\n } else if (currentWidth <= 1024) {\n this.setState({width: 'medium'});\n } else {\n this.setState({width: 'large'});\n }\n }\n\n onResizeEnd = (sizes) => {\n this.props.setSetting(\n SettingName.NAVIGATION.CLUSTER_PAGE_PANE_SIZES,\n NAMESPACES.NAVIGATION,\n sizes,\n );\n this.updateWidthModifier();\n };\n\n getInitialSizes = () => {\n return this.props.clusterPagePaneSizes;\n };\n\n renderError(clusterConfig) {\n const {errorType} = this.props.error || {};\n\n switch (errorType) {\n case LOAD_ERROR.CONNECTION:\n return <ConnectionErrorRegion cluster={clusterConfig.id} />;\n case LOAD_ERROR.AUTHENTICATION:\n return (\n <GeneralErrorRegion\n cluster={clusterConfig.id}\n message={\n 'Could not fetch the XSRF token, therefore preventing further operations. Sometimes ' +\n 'token fetching fails due to the network issues. If the problem persists, please report it ' +\n 'via Bug Reporter.'\n }\n />\n );\n case LOAD_ERROR.GENERAL:\n return (\n <GeneralErrorRegion message=\"Unexpected error occurred. If problem persists please report it via Bug Reporter.\" />\n );\n }\n }\n\n isParamsLoading() {\n const {cluster, paramsCluster} = this.props;\n return cluster !== paramsCluster;\n }\n\n renderContent(clusterConfig) {\n const {\n cluster,\n startingPage,\n isLoaded,\n hasError,\n paramsError,\n allowChyt,\n allowQueryTracker,\n } = this.props;\n\n return isLoaded && !this.isParamsLoading() ? (\n <Fragment>\n <SupportedFeaturesUpdater />\n <HandleMaintenanceRedirect />\n <RedirectToBanIfNeededMemo to={`/${cluster}/${Page.BAN}`} />\n <Switch>\n <Route path={`/:cluster/${Page.BAN}`} component={BanPage} />\n <Route path={`/:cluster/${Page.MAINTENANCE}`} component={MaintenancePage} />\n <Route path={`/:cluster/${Page.COMPONENTS}`} component={Components} />\n <Route path={`/:cluster/${Page.OPERATIONS}`} component={Operations} />\n <Route path={`/:cluster/${Page.JOB}`} component={Job} />\n <Route path={`/:cluster/${Page.DASHBOARD}`} component={Dashboard} />\n <Route path={`/:cluster/${Page.SYSTEM}`} component={System} />\n <Route path={`/:cluster/${Page.ACCOUNTS}`} component={Accounts} />\n <Route\n path={[\n `/:cluster/${Page.TABLET_CELL_BUNDLES}`,\n `/:cluster/${Page.CHAOS_CELL_BUNDLES}`,\n ]}\n component={TabletCellBundles}\n />\n <Route path={`/:cluster/${Page.NAVIGATION}`} component={Navigation} />\n <Route path={`/:cluster/${Page.PATH_VIEWER}`} component={PathViewer} />\n <Route path={`/:cluster/${Page.TABLET}`} component={Tablet} />\n <Route path={`/:cluster/${Page.USERS}`} component={UsersPage} />\n <Route path={`/:cluster/${Page.GROUPS}`} component={GroupsPage} />\n <Route path={`/:cluster/${Page.SCHEDULING}`} component={Scheduling} />\n {allowChyt && <Route path={`/:cluster/${Page.CHYT}`} component={ChytPage} />}\n {allowQueryTracker && (\n <Route path={`/:cluster/${Page.QUERIES}`} component={QueryTracker} />\n )}\n {hasOdinPage() && (\n <Route\n path={`/:cluster/${odinPageInfo.pageId}`}\n component={odinPageInfo.reactComponent}\n />\n )}\n\n <Redirect\n from={`/:cluster/${Page.VERSIONS}`}\n to={`/:cluster/${Page.COMPONENTS}/versions`}\n />\n {makeExtraPageRoutes()}\n <Redirect from={`/${cluster}/`} to={`/${cluster}/${startingPage}`} />\n </Switch>\n\n <Route path=\"/:cluster/:page/:tab?\" component={PageTracker} />\n </Fragment>\n ) : (\n <React.Fragment>\n <div className=\"preloader\">\n {hasError ? (\n this.renderError(clusterConfig)\n ) : (\n <p className=\"preloader__loading\">Loading {clusterConfig?.id}...</p>\n )}\n </div>\n <div className={b('error')}>\n {paramsError && <ErrorBlock error={paramsError} />}\n </div>\n </React.Fragment>\n );\n }\n\n render() {\n const {cluster, splitScreen, clusters} = this.props;\n const footer = UIFactory.renderAppFooter();\n\n // TODO: put current cluster config into redux state to avoid doing things like these here\n const clusterConfig = getClusterConfig(clusters, cluster);\n\n // FIXME: handle case when clusterConfig is undefined due to wrong cluster name\n return (\n <Fragment>\n <ClusterPageStopRumMeasure />\n <PageHeadByCluster cluster={cluster} />\n\n <ClusterPageHeader />\n\n <FlexSplitPane\n className={b('panes-wrapper', {\n 'with-pane': splitScreen.isSplit,\n 'with-footer': Boolean(footer),\n })}\n paneClassNames={splitScreen.paneClassNames}\n direction={FlexSplitPane.HORIZONTAL}\n onResize={this.onResize}\n onResizeEnd={this.onResizeEnd}\n onSplit={this.handleSplit}\n onUnSplit={this.handleSplit}\n minSize={600}\n getInitialSizes={this.getInitialSizes}\n id={SPLIT_PANE_ID}\n >\n <div\n ref={this.contentPaneRef}\n className={b('content-pane', {\n split: splitScreen.isSplit && 'yes',\n width: this.state.width,\n })}\n >\n {this.renderContent(clusterConfig)}\n </div>\n\n {null}\n </FlexSplitPane>\n {footer}\n </Fragment>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n const {\n login,\n maintenancePageEvent,\n splitScreen,\n loadState,\n error,\n paramsCluster,\n paramsLoading,\n paramsError,\n } = state.global;\n\n const clusters = state.clustersMenu.clusters;\n\n return {\n clusters,\n isLoaded: !paramsLoading && loadState === LOADING_STATUS.LOADED,\n hasError: loadState === LOADING_STATUS.ERROR,\n error,\n paramsError,\n login,\n splitScreen,\n maintenancePageEvent,\n clusterPagePaneSizes: getClusterPagePaneSizes(state),\n startingPage: getStartingPage(state),\n paramsCluster,\n allowQueryTracker: isQueryTrackerAllowed(state),\n allowChyt: Boolean(getClusterUiConfig(state).chyt_controller_base_url),\n };\n}\n\nconst mapDispatchToProps = {\n setSetting,\n trackVisit,\n splitMenuItemsAction,\n joinMenuItemsAction,\n updateTitle,\n updateCluster,\n unmountCluster,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ClusterPage);\n\nfunction RedirectToBanIfNeeded({to}) {\n const {blocked, banned} = useSelector((state) => state.global);\n const {pathname} = useLocation();\n const enableRedirect = (banned || blocked) && !pathname.endsWith('/ban');\n\n if (!enableRedirect) {\n return null;\n }\n\n return <Redirect to={to} />;\n}\n\nfunction ClusterPageStopRumMeasure() {\n const loadState = useSelector((state) => state.global.loadState);\n const paramsLoading = useSelector((state) => state.global.paramsLoading);\n\n const isLoaded =\n loadState === LOADING_STATUS.ERROR ||\n (!paramsLoading && loadState === LOADING_STATUS.LOADED);\n\n const cluster = useClusterFromLocation();\n\n useRumMeasureStart({\n type: RumMeasureTypes.CLUSTER_PARAMS,\n subPage: `ui.${cluster}`,\n allowStop: ([isLoaded]) => !isLoaded,\n startDeps: [isLoaded],\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.CLUSTER_PARAMS,\n allowStop: ([isLoaded]) => isLoaded,\n stopDeps: [isLoaded],\n });\n return null;\n}\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAGC,SAAS,EAAEC,QAAQ,QAAO,OAAO;AAChD,SAAQC,QAAQ,EAAEC,KAAK,EAAEC,MAAM,EAAEC,WAAW,QAAO,cAAc;AACjE,SAAQC,OAAO,EAAEC,WAAW,QAAO,aAAa;AAEhD,OAAOC,EAAE,MAAM,aAAa;AAE5B,OAAOC,OAAO,MAAM,oBAAoB;AACxC,OAAOC,eAAe,MAAM,oCAAoC;AAChE,OAAOC,yBAAyB,MAAM,mCAAmC;AACzE,OAAOC,UAAU,MAAM,8CAA8C;AACrE,OAAOC,UAAU,MAAM,8CAA8C;AACrE,OAAOC,QAAQ,MAAM,wCAAwC;AAC7D,OAAOC,SAAS,MAAM,2CAA2C;AACjE,SAAQC,MAAM,QAAO,kCAAkC;AACvD,OAAOC,UAAU,MAAM,8CAA8C;AACrE,OAAOC,UAAU,MAAM,oCAAoC;AAC3D,OAAOC,MAAM,MAAM,2BAA2B;AAC9C,OAAOC,iBAAiB,MAAM,mDAAmD;AACjF,OAAOC,UAAU,MAAM,+BAA+B;AACtD,OAAOC,SAAS,MAAM,6BAA6B;AACnD,OAAOC,UAAU,MAAM,8CAA8C;AACrE,OAAOC,YAAY,MAAM,wCAAwC;AACjE,OAAOC,GAAG,MAAM,qBAAqB;AACrC,SAAQC,QAAQ,QAAO,kBAAkB;AAEzC,OAAOC,iBAAiB,MAAM,wCAAwC;AACtE,OAAOC,WAAW,MAAM,eAAe;AAEvC,SAAQC,iBAAiB,QAAO,oCAAoC;AACpE,OAAOC,qBAAqB,MAAM,wDAAwD;AAC1F,OAAOC,kBAAkB,MAAM,qDAAqD;AACpF,OAAOC,aAAa,MAAM,8CAA8C;AACxE,OAAOC,UAAU,MAAM,8BAA8B;AAErD,SAAQC,cAAc,EAAEC,UAAU,EAAEC,IAAI,EAAEC,aAAa,QAAO,uBAAuB;AACrF,SAAQC,mBAAmB,EAAEC,oBAAoB,EAAEC,UAAU,QAAO,0BAA0B;AAC9F,SAAQC,UAAU,QAAO,8BAA8B;AACvD,SAAQC,cAAc,EAAEC,aAAa,QAAO,oCAAoC;AAChF,SAAQC,WAAW,QAAO,4BAA4B;AACtD,SAAQC,kBAAkB,EAAEC,qBAAqB,QAAO,8BAA8B;AACtF,SAAQC,gBAAgB,QAAO,aAAa;AAC5C,SAAQC,UAAU,EAAEC,WAAW,QAAO,oCAAoC;AAC1E,SAAQC,uBAAuB,EAAEC,eAAe,QAAO,gCAAgC;AACvF,OAAOC,wBAAwB,MAAM,4BAA4B;AACjE,SAAQC,kBAAkB,EAAEC,iBAAiB,QAAO,wBAAwB;AAC5E,SAAQC,eAAe,QAAO,6BAA6B;AAC3D,SAAQC,sBAAsB,QAAO,yBAAyB;AAC9D,SAAQC,mBAAmB,QAAO,0BAA0B;AAC5D,SAAQC,YAAY,QAAO,kBAAkB;AAC7C,SAAQC,WAAW,QAAO,cAAc;AAExC,OAAO,mBAAoB;AAC3B,OAAOC,SAAS,MAAM,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAExC,IAAMC,CAAC,GAAGzD,EAAE,CAAC,cAAc,CAAC;AAE5B,IAAM0D,yBAAyB,gBAAGnE,KAAK,CAACoE,IAAI,CAACC,qBAAqB,CAAC;AAAC,IAE9DC,WAAW,0BAAAC,UAAA;EAAAC,SAAA,CAAAF,WAAA,EAAAC,UAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAJ,WAAA;EAAA,SAAAA,YAAA;IAAA,IAAAK,KAAA;IAAAC,eAAA,OAAAN,WAAA;IAAA,SAAAO,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IAAAP,KAAA,GAAAF,MAAA,CAAAU,IAAA,CAAAC,KAAA,CAAAX,MAAA,SAAAY,MAAA,CAAAL,IAAA;IAAAL,KAAA,CAkCbW,KAAK,GAAG;MACJC,KAAK,EAAE;IACX,CAAC;IAAAZ,KAAA,CAuCDa,cAAc,gBAAGxF,KAAK,CAACyF,SAAS,CAAC,CAAC;IAAAd,KAAA,CAElCe,QAAQ,GAAG,YAAM;MACb,IAAOC,WAAW,GAAIhB,KAAA,CAAKiB,KAAK,CAAzBD,WAAW;MAClB,IAAME,OAAO,GAAGC,QAAQ,CAACC,aAAa,CAAC,mBAAmB,CAAC;MAE3D,IAAIJ,WAAW,CAACK,OAAO,IAAIH,OAAO,EAAE;QAChC,IAAMI,WAAW,GAAG,EAAE;QACtB,IAAMC,MAAM,GAAGJ,QAAQ,CAACK,cAAc,CAAC7D,aAAa,CAAC,CAAC8D,WAAW,GAAGH,WAAW;QAC/EJ,OAAO,CAACQ,KAAK,CAACC,KAAK,MAAAjB,MAAA,CAAMa,MAAM,OAAI;MACvC,CAAC,MAAM,IAAIL,OAAO,EAAE;QAChBA,OAAO,CAACQ,KAAK,CAACC,KAAK,GAAG,GAAG;MAC7B;MAEAC,MAAM,CAACC,aAAa,CAAC,IAAIC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAAA9B,KAAA,CAED+B,WAAW,GAAG,YAAM;MAChB/B,KAAA,CAAKe,QAAQ,CAAC,CAAC;MACf;MACAa,MAAM,CAACC,aAAa,CAAC,IAAIC,KAAK,CAAC,QAAQ,CAAC,CAAC;MACzC9B,KAAA,CAAKgC,mBAAmB,CAAC,CAAC;IAC9B,CAAC;IAAAhC,KAAA,CAaDiC,WAAW,GAAG,UAACC,KAAK,EAAK;MACrBlC,KAAA,CAAKiB,KAAK,CAAClD,UAAU,CACjBQ,WAAW,CAAC4D,UAAU,CAACC,uBAAuB,EAC9C9D,UAAU,CAAC6D,UAAU,EACrBD,KACJ,CAAC;MACDlC,KAAA,CAAKgC,mBAAmB,CAAC,CAAC;IAC9B,CAAC;IAAAhC,KAAA,CAEDqC,eAAe,GAAG,YAAM;MACpB,OAAOrC,KAAA,CAAKiB,KAAK,CAACqB,oBAAoB;IAC1C,CAAC;IAAA,OAAAtC,KAAA;EAAA;EAAAuC,YAAA,CAAA5C,WAAA;IAAA6C,GAAA;IAAAC,KAAA,EAnFD,SAAAC,kBAAA,EAAoB;MAChB,IAAOC,OAAO,GAAI,IAAI,CAAC1B,KAAK,CAArB0B,OAAO;MACd,IAAI,CAAC1B,KAAK,CAAChD,aAAa,CAAC0E,OAAO,CAAC;IACrC;EAAC;IAAAH,GAAA;IAAAC,KAAA,EAED,SAAAG,wBAAwBC,SAAS,EAAE;MAC/B,IAAIA,SAAS,CAAC7B,WAAW,CAACK,OAAO,KAAK,IAAI,CAACJ,KAAK,CAACD,WAAW,CAACK,OAAO,EAAE;QAClE,OAAO,IAAI,CAACJ,KAAK,CAACD,WAAW,CAACK,OAAO,GAC/BO,MAAM,CAACkB,WAAW,GAClB,IAAI,CAACjC,cAAc,CAACkC,OAAO,CAACC,SAAS;MAC/C;MAEA,OAAO,IAAI;IACf;EAAC;IAAAR,GAAA;IAAAC,KAAA,EAED,SAAAQ,mBAAmBJ,SAAS,EAAEK,SAAS,EAAEC,UAAU,EAAE;MACjD,IAAIA,UAAU,KAAK,IAAI,EAAE;QACrB,IAAI,IAAI,CAAClC,KAAK,CAACD,WAAW,CAACK,OAAO,EAAE;UAChC,IAAI,CAACR,cAAc,CAACkC,OAAO,CAACC,SAAS,GAAGG,UAAU;QACtD;QAEAvB,MAAM,CAACwB,QAAQ,CAAC,CAAC,EAAED,UAAU,CAAC;MAClC;MAEA,IAAgBE,WAAW,GAAIR,SAAS,CAAjCF,OAAO;MACd,IAAOA,OAAO,GAAI,IAAI,CAAC1B,KAAK,CAArB0B,OAAO;MAEd,IAAIA,OAAO,KAAKU,WAAW,EAAE;QACzB,IAAI,CAACpC,KAAK,CAAChD,aAAa,CAAC0E,OAAO,CAAC;MACrC;IACJ;EAAC;IAAAH,GAAA;IAAAC,KAAA,EAED,SAAAa,qBAAA,EAAuB;MACnB,IAAI,CAACrC,KAAK,CAAC/C,WAAW,CAAC;QAACqF,IAAI,EAAE,EAAE;QAAEC,IAAI,EAAE;MAAE,CAAC,CAAC;MAC5C,IAAI,CAACvC,KAAK,CAACjD,cAAc,CAAC,CAAC;IAC/B;EAAC;IAAAwE,GAAA;IAAAC,KAAA,EA0BD,SAAAT,oBAAA,EAAsB;MAAA,IAAAyB,qBAAA;MAClB,IAAMC,YAAY,GAAG,EAAAD,qBAAA,OAAI,CAAC5C,cAAc,CAACkC,OAAO,cAAAU,qBAAA,uBAA3BA,qBAAA,CAA6BhC,WAAW,KAAIkC,QAAQ;MACzE,IAAID,YAAY,IAAI,GAAG,EAAE;QACrB,IAAI,CAACE,QAAQ,CAAC;UAAChD,KAAK,EAAE;QAAO,CAAC,CAAC;MACnC,CAAC,MAAM,IAAI8C,YAAY,IAAI,IAAI,EAAE;QAC7B,IAAI,CAACE,QAAQ,CAAC;UAAChD,KAAK,EAAE;QAAQ,CAAC,CAAC;MACpC,CAAC,MAAM;QACH,IAAI,CAACgD,QAAQ,CAAC;UAAChD,KAAK,EAAE;QAAO,CAAC,CAAC;MACnC;IACJ;EAAC;IAAA4B,GAAA;IAAAC,KAAA,EAeD,SAAAoB,YAAYC,aAAa,EAAE;MACvB,IAAAC,IAAA,GAAoB,IAAI,CAAC9C,KAAK,CAAC+C,KAAK,IAAI,CAAC,CAAC;QAAnCC,SAAS,GAAAF,IAAA,CAATE,SAAS;MAEhB,QAAQA,SAAS;QACb,KAAKxG,UAAU,CAACyG,UAAU;UACtB,oBAAO9E,IAAA,CAAChC,qBAAqB;YAACuF,OAAO,EAAEmB,aAAa,CAACK;UAAG,CAAE,CAAC;QAC/D,KAAK1G,UAAU,CAAC2G,cAAc;UAC1B,oBACIhF,IAAA,CAAC/B,kBAAkB;YACfsF,OAAO,EAAEmB,aAAa,CAACK,EAAG;YAC1BE,OAAO,EACH,qFAAqF,GACrF,6FAA6F,GAC7F;UACH,CACJ,CAAC;QAEV,KAAK5G,UAAU,CAAC6G,OAAO;UACnB,oBACIlF,IAAA,CAAC/B,kBAAkB;YAACgH,OAAO,EAAC;UAAmF,CAAE,CAAC;MAE9H;IACJ;EAAC;IAAA7B,GAAA;IAAAC,KAAA,EAED,SAAA8B,gBAAA,EAAkB;MACd,IAAAC,WAAA,GAAiC,IAAI,CAACvD,KAAK;QAApC0B,OAAO,GAAA6B,WAAA,CAAP7B,OAAO;QAAE8B,aAAa,GAAAD,WAAA,CAAbC,aAAa;MAC7B,OAAO9B,OAAO,KAAK8B,aAAa;IACpC;EAAC;IAAAjC,GAAA;IAAAC,KAAA,EAED,SAAAiC,cAAcZ,aAAa,EAAE;MACzB,IAAAa,YAAA,GAQI,IAAI,CAAC1D,KAAK;QAPV0B,OAAO,GAAAgC,YAAA,CAAPhC,OAAO;QACPiC,YAAY,GAAAD,YAAA,CAAZC,YAAY;QACZC,QAAQ,GAAAF,YAAA,CAARE,QAAQ;QACRC,QAAQ,GAAAH,YAAA,CAARG,QAAQ;QACRC,WAAW,GAAAJ,YAAA,CAAXI,WAAW;QACXC,SAAS,GAAAL,YAAA,CAATK,SAAS;QACTC,iBAAiB,GAAAN,YAAA,CAAjBM,iBAAiB;MAGrB,OAAOJ,QAAQ,IAAI,CAAC,IAAI,CAACN,eAAe,CAAC,CAAC,gBACtCjF,KAAA,CAAC/D,QAAQ;QAAA2J,QAAA,gBACL9F,IAAA,CAACV,wBAAwB,IAAE,CAAC,eAC5BU,IAAA,CAACnD,yBAAyB,IAAE,CAAC,eAC7BmD,IAAA,CAACI,yBAAyB;UAAC2F,EAAE,MAAAzE,MAAA,CAAMiC,OAAO,OAAAjC,MAAA,CAAIhD,IAAI,CAAC0H,GAAG;QAAG,CAAE,CAAC,eAC5D9F,KAAA,CAAC5D,MAAM;UAAAwJ,QAAA,gBACH9F,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAAC0H,GAAG,CAAG;YAACC,SAAS,EAAEtJ;UAAQ,CAAE,CAAC,eAC5DqD,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAAC4H,WAAW,CAAG;YAACD,SAAS,EAAErJ;UAAgB,CAAE,CAAC,eAC5EoD,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAAC6H,UAAU,CAAG;YAACF,SAAS,EAAEnJ;UAAW,CAAE,CAAC,eACtEkD,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAAC8H,UAAU,CAAG;YAACH,SAAS,EAAElJ;UAAW,CAAE,CAAC,eACtEiD,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAAC+H,GAAG,CAAG;YAACJ,SAAS,EAAEtI;UAAI,CAAE,CAAC,eACxDqC,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAACgI,SAAS,CAAG;YAACL,SAAS,EAAEhJ;UAAU,CAAE,CAAC,eACpE+C,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAACiI,MAAM,CAAG;YAACN,SAAS,EAAE/I;UAAO,CAAE,CAAC,eAC9D8C,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAACkI,QAAQ,CAAG;YAACP,SAAS,EAAEjJ;UAAS,CAAE,CAAC,eAClEgD,IAAA,CAAC3D,KAAK;YACF8H,IAAI,EAAE,cAAA7C,MAAA,CACWhD,IAAI,CAACmI,mBAAmB,gBAAAnF,MAAA,CACxBhD,IAAI,CAACoI,kBAAkB,EACtC;YACFT,SAAS,EAAE3I;UAAkB,CAChC,CAAC,eACF0C,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAACyE,UAAU,CAAG;YAACkD,SAAS,EAAE9I;UAAW,CAAE,CAAC,eACtE6C,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAACqI,WAAW,CAAG;YAACV,SAAS,EAAE7I;UAAW,CAAE,CAAC,eACvE4C,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAACsI,MAAM,CAAG;YAACX,SAAS,EAAE5I;UAAO,CAAE,CAAC,eAC9D2C,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAACuI,KAAK,CAAG;YAACZ,SAAS,EAAEzI;UAAU,CAAE,CAAC,eAChEwC,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAACwI,MAAM,CAAG;YAACb,SAAS,EAAE1I;UAAW,CAAE,CAAC,eAClEyC,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAACyI,UAAU,CAAG;YAACd,SAAS,EAAExI;UAAW,CAAE,CAAC,EACrEmI,SAAS,iBAAI5F,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAAC0I,IAAI,CAAG;YAACf,SAAS,EAAErI;UAAS,CAAE,CAAC,EAC3EiI,iBAAiB,iBACd7F,IAAA,CAAC3D,KAAK;YAAC8H,IAAI,eAAA7C,MAAA,CAAehD,IAAI,CAAC2I,OAAO,CAAG;YAAChB,SAAS,EAAEvI;UAAa,CAAE,CACvE,EACAmC,WAAW,CAAC,CAAC,iBACVG,IAAA,CAAC3D,KAAK;YACF8H,IAAI,eAAA7C,MAAA,CAAe1B,YAAY,CAACsH,MAAM,CAAG;YACzCjB,SAAS,EAAErG,YAAY,CAACuH;UAAe,CAC1C,CACJ,eAEDnH,IAAA,CAAC5D,QAAQ;YACLgL,IAAI,eAAA9F,MAAA,CAAehD,IAAI,CAAC+I,QAAQ,CAAG;YACnCtB,EAAE,eAAAzE,MAAA,CAAehD,IAAI,CAAC6H,UAAU;UAAY,CAC/C,CAAC,EACDxG,mBAAmB,CAAC,CAAC,eACtBK,IAAA,CAAC5D,QAAQ;YAACgL,IAAI,MAAA9F,MAAA,CAAMiC,OAAO,MAAI;YAACwC,EAAE,MAAAzE,MAAA,CAAMiC,OAAO,OAAAjC,MAAA,CAAIkE,YAAY;UAAG,CAAE,CAAC;QAAA,CACjE,CAAC,eAETxF,IAAA,CAAC3D,KAAK;UAAC8H,IAAI,EAAC,uBAAuB;UAAC8B,SAAS,EAAEnI;QAAY,CAAE,CAAC;MAAA,CACxD,CAAC,gBAEXoC,KAAA,CAACjE,KAAK,CAACE,QAAQ;QAAA2J,QAAA,gBACX9F,IAAA;UAAKsH,SAAS,EAAC,WAAW;UAAAxB,QAAA,EACrBJ,QAAQ,GACL,IAAI,CAACjB,WAAW,CAACC,aAAa,CAAC,gBAE/BxE,KAAA;YAAGoH,SAAS,EAAC,oBAAoB;YAAAxB,QAAA,GAAC,UAAQ,EAACpB,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEK,EAAE,EAAC,KAAG;UAAA,CAAG;QACtE,CACA,CAAC,eACN/E,IAAA;UAAKsH,SAAS,EAAEnH,CAAC,CAAC,OAAO,CAAE;UAAA2F,QAAA,EACtBH,WAAW,iBAAI3F,IAAA,CAAC7B,UAAU;YAACyG,KAAK,EAAEe;UAAY,CAAE;QAAC,CACjD,CAAC;MAAA,CACM,CACnB;IACL;EAAC;IAAAvC,GAAA;IAAAC,KAAA,EAED,SAAAkE,OAAA,EAAS;MACL,IAAAC,YAAA,GAAyC,IAAI,CAAC3F,KAAK;QAA5C0B,OAAO,GAAAiE,YAAA,CAAPjE,OAAO;QAAE3B,WAAW,GAAA4F,YAAA,CAAX5F,WAAW;QAAE6F,QAAQ,GAAAD,YAAA,CAARC,QAAQ;MACrC,IAAMC,MAAM,GAAG5H,SAAS,CAAC6H,eAAe,CAAC,CAAC;;MAE1C;MACA,IAAMjD,aAAa,GAAGzF,gBAAgB,CAACwI,QAAQ,EAAElE,OAAO,CAAC;;MAEzD;MACA,oBACIrD,KAAA,CAAC/D,QAAQ;QAAA2J,QAAA,gBACL9F,IAAA,CAAC4H,yBAAyB,IAAE,CAAC,eAC7B5H,IAAA,CAACjC,iBAAiB;UAACwF,OAAO,EAAEA;QAAQ,CAAE,CAAC,eAEvCvD,IAAA,CAACnC,iBAAiB,IAAE,CAAC,eAErBqC,KAAA,CAAChC,aAAa;UACVoJ,SAAS,EAAEnH,CAAC,CAAC,eAAe,EAAE;YAC1B,WAAW,EAAEyB,WAAW,CAACK,OAAO;YAChC,aAAa,EAAE4F,OAAO,CAACH,MAAM;UACjC,CAAC,CAAE;UACHI,cAAc,EAAElG,WAAW,CAACkG,cAAe;UAC3CC,SAAS,EAAE7J,aAAa,CAAC8J,UAAW;UACpCrG,QAAQ,EAAE,IAAI,CAACA,QAAS;UACxBkB,WAAW,EAAE,IAAI,CAACA,WAAY;UAC9BoF,OAAO,EAAE,IAAI,CAACtF,WAAY;UAC1BuF,SAAS,EAAE,IAAI,CAACvF,WAAY;UAC5BwF,OAAO,EAAE,GAAI;UACblF,eAAe,EAAE,IAAI,CAACA,eAAgB;UACtC8B,EAAE,EAAExG,aAAc;UAAAuH,QAAA,gBAElB9F,IAAA;YACIoI,GAAG,EAAE,IAAI,CAAC3G,cAAe;YACzB6F,SAAS,EAAEnH,CAAC,CAAC,cAAc,EAAE;cACzBkI,KAAK,EAAEzG,WAAW,CAACK,OAAO,IAAI,KAAK;cACnCT,KAAK,EAAE,IAAI,CAACD,KAAK,CAACC;YACtB,CAAC,CAAE;YAAAsE,QAAA,EAEF,IAAI,CAACR,aAAa,CAACZ,aAAa;UAAC,CACjC,CAAC,EAEL,IAAI;QAAA,CACM,CAAC,EACfgD,MAAM;MAAA,CACD,CAAC;IAEnB;EAAC;EAAA,OAAAnH,WAAA;AAAA,EAhRqBrE,SAAS;AAmRnC,SAASoM,eAAeA,CAAC/G,KAAK,EAAE;EAC5B,IAAAgH,aAAA,GASIhH,KAAK,CAACiH,MAAM;IARZC,KAAK,GAAAF,aAAA,CAALE,KAAK;IACLC,oBAAoB,GAAAH,aAAA,CAApBG,oBAAoB;IACpB9G,WAAW,GAAA2G,aAAA,CAAX3G,WAAW;IACX+G,SAAS,GAAAJ,aAAA,CAATI,SAAS;IACT/D,KAAK,GAAA2D,aAAA,CAAL3D,KAAK;IACLS,aAAa,GAAAkD,aAAA,CAAblD,aAAa;IACbuD,aAAa,GAAAL,aAAA,CAAbK,aAAa;IACbjD,WAAW,GAAA4C,aAAA,CAAX5C,WAAW;EAGf,IAAM8B,QAAQ,GAAGlG,KAAK,CAACsH,YAAY,CAACpB,QAAQ;EAE5C,OAAO;IACHA,QAAQ,EAARA,QAAQ;IACRhC,QAAQ,EAAE,CAACmD,aAAa,IAAID,SAAS,KAAKvK,cAAc,CAAC0K,MAAM;IAC/DpD,QAAQ,EAAEiD,SAAS,KAAKvK,cAAc,CAAC2K,KAAK;IAC5CnE,KAAK,EAALA,KAAK;IACLe,WAAW,EAAXA,WAAW;IACX8C,KAAK,EAALA,KAAK;IACL7G,WAAW,EAAXA,WAAW;IACX8G,oBAAoB,EAApBA,oBAAoB;IACpBxF,oBAAoB,EAAE9D,uBAAuB,CAACmC,KAAK,CAAC;IACpDiE,YAAY,EAAEnG,eAAe,CAACkC,KAAK,CAAC;IACpC8D,aAAa,EAAbA,aAAa;IACbQ,iBAAiB,EAAE7G,qBAAqB,CAACuC,KAAK,CAAC;IAC/CqE,SAAS,EAAEiC,OAAO,CAAC9I,kBAAkB,CAACwC,KAAK,CAAC,CAACyH,wBAAwB;EACzE,CAAC;AACL;AAEA,IAAMC,kBAAkB,GAAG;EACvBtK,UAAU,EAAVA,UAAU;EACVD,UAAU,EAAVA,UAAU;EACVD,oBAAoB,EAApBA,oBAAoB;EACpBD,mBAAmB,EAAnBA,mBAAmB;EACnBM,WAAW,EAAXA,WAAW;EACXD,aAAa,EAAbA,aAAa;EACbD,cAAc,EAAdA;AACJ,CAAC;AAED,eAAepC,OAAO,CAAC8L,eAAe,EAAEW,kBAAkB,CAAC,CAAC1I,WAAW,CAAC;AAExE,SAASD,qBAAqBA,CAAA4I,KAAA,EAAO;EAAA,IAALnD,EAAE,GAAAmD,KAAA,CAAFnD,EAAE;EAC9B,IAAAoD,YAAA,GAA0B1M,WAAW,CAAC,UAAC8E,KAAK;MAAA,OAAKA,KAAK,CAACiH,MAAM;IAAA,EAAC;IAAvDY,OAAO,GAAAD,YAAA,CAAPC,OAAO;IAAEC,MAAM,GAAAF,YAAA,CAANE,MAAM;EACtB,IAAAC,YAAA,GAAmB/M,WAAW,CAAC,CAAC;IAAzBgN,QAAQ,GAAAD,YAAA,CAARC,QAAQ;EACf,IAAMC,cAAc,GAAG,CAACH,MAAM,IAAID,OAAO,KAAK,CAACG,QAAQ,CAACE,QAAQ,CAAC,MAAM,CAAC;EAExE,IAAI,CAACD,cAAc,EAAE;IACjB,OAAO,IAAI;EACf;EAEA,oBAAOxJ,IAAA,CAAC5D,QAAQ;IAAC2J,EAAE,EAAEA;EAAG,CAAE,CAAC;AAC/B;AAEA,SAAS6B,yBAAyBA,CAAA,EAAG;EACjC,IAAMe,SAAS,GAAGlM,WAAW,CAAC,UAAC8E,KAAK;IAAA,OAAKA,KAAK,CAACiH,MAAM,CAACG,SAAS;EAAA,EAAC;EAChE,IAAMC,aAAa,GAAGnM,WAAW,CAAC,UAAC8E,KAAK;IAAA,OAAKA,KAAK,CAACiH,MAAM,CAACI,aAAa;EAAA,EAAC;EAExE,IAAMnD,QAAQ,GACVkD,SAAS,KAAKvK,cAAc,CAAC2K,KAAK,IACjC,CAACH,aAAa,IAAID,SAAS,KAAKvK,cAAc,CAAC0K,MAAO;EAE3D,IAAMvF,OAAO,GAAG7D,sBAAsB,CAAC,CAAC;EAExCH,kBAAkB,CAAC;IACfmK,IAAI,EAAEjK,eAAe,CAACkK,cAAc;IACpCC,OAAO,QAAAtI,MAAA,CAAQiC,OAAO,CAAE;IACxBsG,SAAS,EAAE,SAAAA,UAAAC,KAAA;MAAA,IAAAC,KAAA,GAAAC,cAAA,CAAAF,KAAA;QAAErE,QAAQ,GAAAsE,KAAA;MAAA,OAAM,CAACtE,QAAQ;IAAA;IACpCwE,SAAS,EAAE,CAACxE,QAAQ;EACxB,CAAC,CAAC;EAEFjG,iBAAiB,CAAC;IACdkK,IAAI,EAAEjK,eAAe,CAACkK,cAAc;IACpCE,SAAS,EAAE,SAAAA,UAAAK,KAAA;MAAA,IAAAC,KAAA,GAAAH,cAAA,CAAAE,KAAA;QAAEzE,QAAQ,GAAA0E,KAAA;MAAA,OAAM1E,QAAQ;IAAA;IACnC2E,QAAQ,EAAE,CAAC3E,QAAQ;EACvB,CAAC,CAAC;EACF,OAAO,IAAI;AACf"}
|
@@ -3,6 +3,7 @@ import { useSelector } from 'react-redux';
|
|
3
3
|
import PageHead from '../../components/PageHead/PageHead';
|
4
4
|
import ClustersMenuHeader from './ClustersMenuHeader';
|
5
5
|
import ClustersMenuBody from './ClustersMenuBody';
|
6
|
+
import UIFactory from '../../UIFactory';
|
6
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
7
8
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
8
9
|
function ClustersMenu() {
|
@@ -12,7 +13,7 @@ function ClustersMenu() {
|
|
12
13
|
return /*#__PURE__*/_jsxs(Fragment, {
|
13
14
|
children: [/*#__PURE__*/_jsx(PageHead, {
|
14
15
|
title: title
|
15
|
-
}), /*#__PURE__*/_jsx(ClustersMenuHeader, {}), /*#__PURE__*/_jsx(ClustersMenuBody, {})]
|
16
|
+
}), /*#__PURE__*/_jsx(ClustersMenuHeader, {}), /*#__PURE__*/_jsx(ClustersMenuBody, {}), UIFactory.renderAppFooter()]
|
16
17
|
});
|
17
18
|
}
|
18
19
|
export default /*#__PURE__*/React.memo(ClustersMenu);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","Fragment","useSelector","PageHead","ClustersMenuHeader","ClustersMenuBody","jsx","_jsx","jsxs","_jsxs","ClustersMenu","title","state","global","children","memo"],"sources":["ClustersMenu.js"],"sourcesContent":["import React, {Fragment} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport PageHead from '../../components/PageHead/PageHead';\n\nimport ClustersMenuHeader from './ClustersMenuHeader';\nimport ClustersMenuBody from './ClustersMenuBody';\n\nfunction ClustersMenu() {\n const title = useSelector((state) => state.global.title);\n\n return (\n <Fragment>\n <PageHead title={title} />\n <ClustersMenuHeader />\n <ClustersMenuBody />\n </Fragment>\n );\n}\n\nexport default React.memo(ClustersMenu);\n"],"mappings":"AAAA,OAAOA,KAAK,IAAGC,QAAQ,QAAO,OAAO;AACrC,SAAQC,WAAW,QAAO,aAAa;AAEvC,OAAOC,QAAQ,MAAM,oCAAoC;AAEzD,OAAOC,kBAAkB,MAAM,sBAAsB;AACrD,OAAOC,gBAAgB,MAAM,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;
|
1
|
+
{"version":3,"names":["React","Fragment","useSelector","PageHead","ClustersMenuHeader","ClustersMenuBody","UIFactory","jsx","_jsx","jsxs","_jsxs","ClustersMenu","title","state","global","children","renderAppFooter","memo"],"sources":["ClustersMenu.js"],"sourcesContent":["import React, {Fragment} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport PageHead from '../../components/PageHead/PageHead';\n\nimport ClustersMenuHeader from './ClustersMenuHeader';\nimport ClustersMenuBody from './ClustersMenuBody';\nimport UIFactory from '../../UIFactory';\n\nfunction ClustersMenu() {\n const title = useSelector((state) => state.global.title);\n\n return (\n <Fragment>\n <PageHead title={title} />\n <ClustersMenuHeader />\n <ClustersMenuBody />\n {UIFactory.renderAppFooter()}\n </Fragment>\n );\n}\n\nexport default React.memo(ClustersMenu);\n"],"mappings":"AAAA,OAAOA,KAAK,IAAGC,QAAQ,QAAO,OAAO;AACrC,SAAQC,WAAW,QAAO,aAAa;AAEvC,OAAOC,QAAQ,MAAM,oCAAoC;AAEzD,OAAOC,kBAAkB,MAAM,sBAAsB;AACrD,OAAOC,gBAAgB,MAAM,oBAAoB;AACjD,OAAOC,SAAS,MAAM,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAExC,SAASC,YAAYA,CAAA,EAAG;EACpB,IAAMC,KAAK,GAAGV,WAAW,CAAC,UAACW,KAAK;IAAA,OAAKA,KAAK,CAACC,MAAM,CAACF,KAAK;EAAA,EAAC;EAExD,oBACIF,KAAA,CAACT,QAAQ;IAAAc,QAAA,gBACLP,IAAA,CAACL,QAAQ;MAACS,KAAK,EAAEA;IAAM,CAAE,CAAC,eAC1BJ,IAAA,CAACJ,kBAAkB,IAAE,CAAC,eACtBI,IAAA,CAACH,gBAAgB,IAAE,CAAC,EACnBC,SAAS,CAACU,eAAe,CAAC,CAAC;EAAA,CACtB,CAAC;AAEnB;AAEA,4BAAehB,KAAK,CAACiB,IAAI,CAACN,YAAY,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["RootPage.scss"],"names":[],"mappings":"AACI;EACI,oCAAA;EACA,gBAAA;AAAR","file":"RootPage.css","sourcesContent":[".yt-root-page {\n &__content {\n margin-top: var(--app-header-height);\n padding-top: 4px;\n }\n}\n"],"sourceRoot":""}
|
1
|
+
{"version":3,"sources":["RootPage.scss"],"names":[],"mappings":"AACI;EACI,YAAA;EACA,oCAAA;EACA,gBAAA;AAAR","file":"RootPage.css","sourcesContent":[".yt-root-page {\n &__content {\n flex-grow: 1;\n margin-top: var(--app-header-height);\n padding-top: 4px;\n }\n}\n"],"sourceRoot":""}
|
@@ -5,6 +5,7 @@ import PageHead from '../../components/PageHead/PageHead';
|
|
5
5
|
import { HeaderWithLinks } from '../../containers/ClustersMenu/HeaderLinks';
|
6
6
|
import { ALL_LINKS_ITEMS } from '../../containers/ClustersMenu/header-links-items';
|
7
7
|
import "./RootPage.css";
|
8
|
+
import UIFactory from '../../UIFactory';
|
8
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
9
10
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
10
11
|
var block = cn('yt-root-page');
|
@@ -36,7 +37,7 @@ function RootPage(_ref) {
|
|
36
37
|
className: 'elements-main-section',
|
37
38
|
children: children
|
38
39
|
})
|
39
|
-
})]
|
40
|
+
}), UIFactory.renderAppFooter()]
|
40
41
|
});
|
41
42
|
}
|
42
43
|
export default /*#__PURE__*/React.memo(RootPage);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","cn","PageHead","HeaderWithLinks","ALL_LINKS_ITEMS","jsx","_jsx","jsxs","_jsxs","block","RootPage","_ref","title","children","currentPathname","pathname","window","location","item","useMemo","text","_find","_ref2","href","startsWith","Fragment","currentUrl","showTitle","className","memo"],"sources":["RootPage.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'bem-cn-lite';\nimport _ from 'lodash';\n\nimport PageHead from '../../components/PageHead/PageHead';\nimport {HeaderWithLinks} from '../../containers/ClustersMenu/HeaderLinks';\nimport {ALL_LINKS_ITEMS} from '../../containers/ClustersMenu/header-links-items';\n\nimport './RootPage.scss';\n\nconst block = cn('yt-root-page');\n\ninterface Props {\n title?: string;\n children?: React.ReactNode;\n currentPathname?: string;\n}\n\nfunction RootPage({title, children, currentPathname}: Props) {\n const pathname = currentPathname || window.location.pathname;\n const item = React.useMemo(() => {\n if (title) {\n return {text: title};\n }\n\n return _.find(ALL_LINKS_ITEMS, ({href}) => href?.startsWith(pathname));\n }, [title]);\n\n return (\n <React.Fragment>\n <PageHead title={item?.text || ''} />\n <HeaderWithLinks currentUrl={pathname} showTitle />\n <div className={block('content')}>\n <div className={'elements-main-section'}>{children}</div>\n </div>\n </React.Fragment>\n );\n}\n\nexport default React.memo(RootPage);\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,EAAE,MAAM,aAAa;AAG5B,OAAOC,QAAQ,MAAM,oCAAoC;AACzD,SAAQC,eAAe,QAAO,2CAA2C;AACzE,SAAQC,eAAe,QAAO,kDAAkD;AAEhF,OAAO,gBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;
|
1
|
+
{"version":3,"names":["React","cn","PageHead","HeaderWithLinks","ALL_LINKS_ITEMS","UIFactory","jsx","_jsx","jsxs","_jsxs","block","RootPage","_ref","title","children","currentPathname","pathname","window","location","item","useMemo","text","_find","_ref2","href","startsWith","Fragment","currentUrl","showTitle","className","renderAppFooter","memo"],"sources":["RootPage.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'bem-cn-lite';\nimport _ from 'lodash';\n\nimport PageHead from '../../components/PageHead/PageHead';\nimport {HeaderWithLinks} from '../../containers/ClustersMenu/HeaderLinks';\nimport {ALL_LINKS_ITEMS} from '../../containers/ClustersMenu/header-links-items';\n\nimport './RootPage.scss';\nimport UIFactory from '../../UIFactory';\n\nconst block = cn('yt-root-page');\n\ninterface Props {\n title?: string;\n children?: React.ReactNode;\n currentPathname?: string;\n}\n\nfunction RootPage({title, children, currentPathname}: Props) {\n const pathname = currentPathname || window.location.pathname;\n const item = React.useMemo(() => {\n if (title) {\n return {text: title};\n }\n\n return _.find(ALL_LINKS_ITEMS, ({href}) => href?.startsWith(pathname));\n }, [title]);\n\n return (\n <React.Fragment>\n <PageHead title={item?.text || ''} />\n <HeaderWithLinks currentUrl={pathname} showTitle />\n <div className={block('content')}>\n <div className={'elements-main-section'}>{children}</div>\n </div>\n {UIFactory.renderAppFooter()}\n </React.Fragment>\n );\n}\n\nexport default React.memo(RootPage);\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,EAAE,MAAM,aAAa;AAG5B,OAAOC,QAAQ,MAAM,oCAAoC;AACzD,SAAQC,eAAe,QAAO,2CAA2C;AACzE,SAAQC,eAAe,QAAO,kDAAkD;AAEhF,OAAO,gBAAiB;AACxB,OAAOC,SAAS,MAAM,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAExC,IAAMC,KAAK,GAAGT,EAAE,CAAC,cAAc,CAAC;AAQhC,SAASU,QAAQA,CAAAC,IAAA,EAA4C;EAAA,IAA1CC,KAAK,GAAAD,IAAA,CAALC,KAAK;IAAEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IAAEC,eAAe,GAAAH,IAAA,CAAfG,eAAe;EAC/C,IAAMC,QAAQ,GAAGD,eAAe,IAAIE,MAAM,CAACC,QAAQ,CAACF,QAAQ;EAC5D,IAAMG,IAAI,GAAGnB,KAAK,CAACoB,OAAO,CAAC,YAAM;IAC7B,IAAIP,KAAK,EAAE;MACP,OAAO;QAACQ,IAAI,EAAER;MAAK,CAAC;IACxB;IAEA,OAAOS,KAAA,CAAOlB,eAAe,EAAE,UAAAmB,KAAA;MAAA,IAAEC,IAAI,GAAAD,KAAA,CAAJC,IAAI;MAAA,OAAMA,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEC,UAAU,CAACT,QAAQ,CAAC;IAAA,EAAC;EAC1E,CAAC,EAAE,CAACH,KAAK,CAAC,CAAC;EAEX,oBACIJ,KAAA,CAACT,KAAK,CAAC0B,QAAQ;IAAAZ,QAAA,gBACXP,IAAA,CAACL,QAAQ;MAACW,KAAK,EAAE,CAAAM,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEE,IAAI,KAAI;IAAG,CAAE,CAAC,eACrCd,IAAA,CAACJ,eAAe;MAACwB,UAAU,EAAEX,QAAS;MAACY,SAAS;IAAA,CAAE,CAAC,eACnDrB,IAAA;MAAKsB,SAAS,EAAEnB,KAAK,CAAC,SAAS,CAAE;MAAAI,QAAA,eAC7BP,IAAA;QAAKsB,SAAS,EAAE,uBAAwB;QAAAf,QAAA,EAAEA;MAAQ,CAAM;IAAC,CACxD,CAAC,EACLT,SAAS,CAACyB,eAAe,CAAC,CAAC;EAAA,CAChB,CAAC;AAEzB;AAEA,4BAAe9B,KAAK,CAAC+B,IAAI,CAACpB,QAAQ,CAAC"}
|
@@ -39,7 +39,7 @@
|
|
39
39
|
"css/8763.9d09aa2f.chunk.css": "css/8763.9d09aa2f.chunk.css",
|
40
40
|
"css/8763.9d09aa2f.chunk.css.map": "css/8763.9d09aa2f.chunk.css.map",
|
41
41
|
"css/acl.34c540ad.chunk.css.map": "css/acl.34c540ad.chunk.css.map",
|
42
|
-
"css/main.
|
42
|
+
"css/main.419150a6.css.map": "css/main.419150a6.css.map",
|
43
43
|
"editor.afbd84bf.worker.js": "editor.afbd84bf.worker.js",
|
44
44
|
"editor.afbd84bf.worker.js.LICENSE.txt": "editor.afbd84bf.worker.js.LICENSE.txt",
|
45
45
|
"editor.afbd84bf.worker.js.map": "editor.afbd84bf.worker.js.map",
|
@@ -49,10 +49,10 @@
|
|
49
49
|
"js": [
|
50
50
|
"js/runtime.0542f15e.js",
|
51
51
|
"js/vendors.fda103a3.js",
|
52
|
-
"js/main.
|
52
|
+
"js/main.62803f34.js"
|
53
53
|
],
|
54
54
|
"css": [
|
55
|
-
"css/main.
|
55
|
+
"css/main.419150a6.css"
|
56
56
|
]
|
57
57
|
}
|
58
58
|
}
|
@@ -325,8 +325,8 @@
|
|
325
325
|
"js/9835.6980887f.chunk.js.LICENSE.txt": "js/9835.6980887f.chunk.js.LICENSE.txt",
|
326
326
|
"js/9835.6980887f.chunk.js.map": "js/9835.6980887f.chunk.js.map",
|
327
327
|
"js/acl.8b50e1d1.chunk.js.map": "js/acl.8b50e1d1.chunk.js.map",
|
328
|
-
"js/main.
|
329
|
-
"js/main.
|
328
|
+
"js/main.62803f34.js.LICENSE.txt": "js/main.62803f34.js.LICENSE.txt",
|
329
|
+
"js/main.62803f34.js.map": "js/main.62803f34.js.map",
|
330
330
|
"js/runtime.0542f15e.js.map": "js/runtime.0542f15e.js.map",
|
331
331
|
"js/vendors.fda103a3.js.LICENSE.txt": "js/vendors.fda103a3.js.LICENSE.txt",
|
332
332
|
"js/vendors.fda103a3.js.map": "js/vendors.fda103a3.js.map",
|
@@ -337,8 +337,8 @@
|
|
337
337
|
"json.5239aa2e.worker.js": "json.5239aa2e.worker.js",
|
338
338
|
"json.5239aa2e.worker.js.LICENSE.txt": "json.5239aa2e.worker.js.LICENSE.txt",
|
339
339
|
"json.5239aa2e.worker.js.map": "json.5239aa2e.worker.js.map",
|
340
|
-
"main.css": "css/main.
|
341
|
-
"main.js": "js/main.
|
340
|
+
"main.css": "css/main.419150a6.css",
|
341
|
+
"main.js": "js/main.62803f34.js",
|
342
342
|
"runtime.js": "js/runtime.0542f15e.js",
|
343
343
|
"vendors.js": "js/vendors.fda103a3.js",
|
344
344
|
"vis-network.js": "js/vis-network.00577eed.chunk.js",
|