| 
					
					
						
							
						
					
					
				 | 
				@ -9,12 +9,13 @@ import { ProConfigProvider, ProLayout, } from '@ant-design/pro-components' | 
			
		
		
	
		
			
				 | 
				 | 
				import { zhCNIntl, enUSIntl } from '@ant-design/pro-provider/es/intl' | 
				 | 
				 | 
				import { zhCNIntl, enUSIntl } from '@ant-design/pro-provider/es/intl' | 
			
		
		
	
		
			
				 | 
				 | 
				import { CatchBoundary, Link, Outlet } from '@tanstack/react-router' | 
				 | 
				 | 
				import { CatchBoundary, Link, Outlet } from '@tanstack/react-router' | 
			
		
		
	
		
			
				 | 
				 | 
				import { ConfigProvider } from '@/components/config-provider' | 
				 | 
				 | 
				import { ConfigProvider } from '@/components/config-provider' | 
			
		
		
	
		
			
				 | 
				 | 
				import { useState } from 'react' | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				import defaultProps from './_defaultProps' | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				import { useEffect, useRef, useState } from 'react' | 
			
		
		
	
		
			
				 | 
				 | 
				import { useAtomValue } from 'jotai' | 
				 | 
				 | 
				import { useAtomValue } from 'jotai' | 
			
		
		
	
		
			
				 | 
				 | 
				import { useStyle } from '@/layout/style.ts' | 
				 | 
				 | 
				import { useStyle } from '@/layout/style.ts' | 
			
		
		
	
		
			
				 | 
				 | 
				import zh from 'antd/locale/zh_CN' | 
				 | 
				 | 
				import zh from 'antd/locale/zh_CN' | 
			
		
		
	
		
			
				 | 
				 | 
				import en from 'antd/locale/en_US' | 
				 | 
				 | 
				import en from 'antd/locale/en_US' | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				import type { MenuDataItem } from '@ant-design/pro-layout/es/typing' | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				import { flattenTree } from '@/utils' | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				//根据menuData生成Breadcrumb所需的数据
 | 
				 | 
				 | 
				//根据menuData生成Breadcrumb所需的数据
 | 
			
		
		
	
		
			
				 | 
				 | 
				const getBreadcrumbData = (menuData: MenuItem[], pathname: string) => { | 
				 | 
				 | 
				const getBreadcrumbData = (menuData: MenuItem[], pathname: string) => { | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -46,6 +47,29 @@ export default () => { | 
			
		
		
	
		
			
				 | 
				 | 
				  const items = getBreadcrumbData(menuData, location.pathname) | 
				 | 
				 | 
				  const items = getBreadcrumbData(menuData, location.pathname) | 
			
		
		
	
		
			
				 | 
				 | 
				  const [ pathname, setPathname ] = useState(location.pathname) | 
				 | 
				 | 
				  const [ pathname, setPathname ] = useState(location.pathname) | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				  const menusFlatten = useRef<MenuItem[]>() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				  if (!menusFlatten.current) { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    menusFlatten.current = flattenTree<MenuItem>(menuData, { key: 'id', title: 'name' }) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				  } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				  const [ rootMenuKeys, setRootMenuKeys ] = useState<string[]>(() => { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    const item = menusFlatten.current?.find(item => item.path === location.pathname) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    return item ? item.parentName : [] | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				  }) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				  const childMenuRef = useRef<MenuItem[]>([]) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				  childMenuRef.current = menuData.find(item => { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    return item.key === rootMenuKeys?.[0] | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				  })?.children || [] | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				  useEffect(() => { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    const item = menusFlatten.current?.find(item => item.path === location.pathname) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    if (item && item.key !== rootMenuKeys?.[0]) { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      setRootMenuKeys(item.parentName) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				  }, [ location.pathname ]) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				  return ( | 
				 | 
				 | 
				  return ( | 
			
		
		
	
		
			
				 | 
				 | 
				          <div | 
				 | 
				 | 
				          <div | 
			
		
		
	
		
			
				 | 
				 | 
				                  className={styles.container} | 
				 | 
				 | 
				                  className={styles.container} | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -67,29 +91,61 @@ export default () => { | 
			
		
		
	
		
			
				 | 
				 | 
				                        }} | 
				 | 
				 | 
				                        }} | 
			
		
		
	
		
			
				 | 
				 | 
				                > | 
				 | 
				 | 
				                > | 
			
		
		
	
		
			
				 | 
				 | 
				                  <ProLayout | 
				 | 
				 | 
				                  <ProLayout | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          token={{ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            header: { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              colorBgMenuItemSelected: 'rgba(0,0,0,0.04)', | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            }, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          }} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          fixedHeader={true} | 
			
		
		
	
		
			
				 | 
				 | 
				                          headerContentRender={() => <PageBreadcrumb | 
				 | 
				 | 
				                          headerContentRender={() => <PageBreadcrumb | 
			
		
		
	
		
			
				 | 
				 | 
				                                  className={'top-breadcrumb'} | 
				 | 
				 | 
				                                  className={'top-breadcrumb'} | 
			
		
		
	
		
			
				 | 
				 | 
				                                  showIcon={false} | 
				 | 
				 | 
				                                  showIcon={false} | 
			
		
		
	
		
			
				 | 
				 | 
				                                  items={items}/>} | 
				 | 
				 | 
				                                  items={items}/>} | 
			
		
		
	
		
			
				 | 
				 | 
				                          title="Crazy Pro" | 
				 | 
				 | 
				                          title="Crazy Pro" | 
			
		
		
	
		
			
				 | 
				 | 
				              {...defaultProps} | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				              route={{ | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                path: '/', | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                routes: menuData | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          layout={'mix'} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          fixSiderbar={true} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          siderWidth={100} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          collapsedButtonRender={false} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          // collapsed={false}
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          postMenuData={() => { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            return menuData.map(item => ({ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              ...item, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              children: [], | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            })) as any | 
			
		
		
	
		
			
				 | 
				 | 
				                          }} | 
				 | 
				 | 
				                          }} | 
			
		
		
	
		
			
				 | 
				 | 
				              location={{ | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          route={ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              path: '/', | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              routes: menuData.map(item => ({ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                ...item, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                // path: item.path ?? `/${item.key}`,
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                children: [], | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                // routes: undefined
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              })) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          location={ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            { | 
			
		
		
	
		
			
				 | 
				 | 
				                              pathname, | 
				 | 
				 | 
				                              pathname, | 
			
		
		
	
		
			
				 | 
				 | 
				              }} | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				              token={{ | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                header: { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                  colorBgMenuItemSelected: 'rgba(0,0,0,0.04)', | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                }, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				              }} | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                          menu={{ | 
				 | 
				 | 
				                          menu={{ | 
			
		
		
	
		
			
				 | 
				 | 
				                            collapsedShowGroupTitle: true, | 
				 | 
				 | 
				                            collapsedShowGroupTitle: true, | 
			
		
		
	
		
			
				 | 
				 | 
				                loading: isLoading, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				              }} | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          }} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          menuItemRender={(item: MenuDataItem) => { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            return <span style={{ userSelect: 'none' }} onClick={() => { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              setRootMenuKeys([ (item as any).key || 'dashboard' ]) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              setPathname(item.path || '/dashboard') | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            }} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            > | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                  <Link to={item.path} className={'menu-link'} target={item.type === 'url' ? '_blank' : '_self'}> | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    <span>{item.icon}</span> | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    <span>{item.name}</span> | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                  </Link> | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                </span> | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          }} | 
			
		
		
	
		
			
				 | 
				 | 
				                          avatarProps={{ | 
				 | 
				 | 
				                          avatarProps={{ | 
			
		
		
	
		
			
				 | 
				 | 
				                            // src: 'https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg',
 | 
				 | 
				 | 
				                            // src: 'https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg',
 | 
			
		
		
	
		
			
				 | 
				 | 
				                            render: () => { | 
				 | 
				 | 
				                            render: () => { | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -106,13 +162,40 @@ export default () => { | 
			
		
		
	
		
			
				 | 
				 | 
				                            ] | 
				 | 
				 | 
				                            ] | 
			
		
		
	
		
			
				 | 
				 | 
				                          }} | 
				 | 
				 | 
				                          }} | 
			
		
		
	
		
			
				 | 
				 | 
				                          menuProps={{ | 
				 | 
				 | 
				                          menuProps={{ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            className: styles.mySiderMenu, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            selectedKeys: rootMenuKeys, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          }} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          // navTheme={'light'}
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                          contentStyle={{ paddingBlock: 0, paddingInline: 0 }} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                  > | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    <ProLayout | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            className={styles.mySider} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            headerRender={false} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            hasSiderMenu={false} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            postMenuData={() => { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              return (childMenuRef.current || []) as any | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            }} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            route={{ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              path: '/', | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              routes: menuData | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            }} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            location={{ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              pathname, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            }} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            token={{ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              header: { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                colorBgMenuItemSelected: 'rgba(0,0,0,0.04)', | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              }, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            }} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            menuProps={{ | 
			
		
		
	
		
			
				 | 
				 | 
				                              className: styles.sideMenu, | 
				 | 
				 | 
				                              className: styles.sideMenu, | 
			
		
		
	
		
			
				 | 
				 | 
				                            }} | 
				 | 
				 | 
				                            }} | 
			
		
		
	
		
			
				 | 
				 | 
				              menuRender={(_, defaultDom) => ( | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                <span style={{ userSelect: 'none' }}> | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                  {defaultDom} | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                </span> | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				              )} | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            menu={{ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              hideMenuWhenCollapsed: false, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              // collapsedShowGroupTitle: true,
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              loading: isLoading, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            }} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            menuRender={childMenuRef.current?.length ? undefined : false} | 
			
		
		
	
		
			
				 | 
				 | 
				                            menuItemRender={(item, dom) => { | 
				 | 
				 | 
				                            menuItemRender={(item, dom) => { | 
			
		
		
	
		
			
				 | 
				 | 
				                              return <span style={{ userSelect: 'none' }} onClick={() => { | 
				 | 
				 | 
				                              return <span style={{ userSelect: 'none' }} onClick={() => { | 
			
		
		
	
		
			
				 | 
				 | 
				                                setPathname(item.path || '/dashboard') | 
				 | 
				 | 
				                                setPathname(item.path || '/dashboard') | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -127,14 +210,15 @@ export default () => { | 
			
		
		
	
		
			
				 | 
				 | 
				                              'layout': 'mix', | 
				 | 
				 | 
				                              'layout': 'mix', | 
			
		
		
	
		
			
				 | 
				 | 
				                              'navTheme': 'light', | 
				 | 
				 | 
				                              'navTheme': 'light', | 
			
		
		
	
		
			
				 | 
				 | 
				                              'contentWidth': 'Fluid', | 
				 | 
				 | 
				                              'contentWidth': 'Fluid', | 
			
		
		
	
		
			
				 | 
				 | 
				                'fixSiderbar': true, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              'fixSiderbar': false, | 
			
		
		
	
		
			
				 | 
				 | 
				                              // 'colorPrimary': '#1677FF',
 | 
				 | 
				 | 
				                              // 'colorPrimary': '#1677FF',
 | 
			
		
		
	
		
			
				 | 
				 | 
				                'siderMenuType': 'group', | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                              // 'siderMenuType': 'group',
 | 
			
		
		
	
		
			
				 | 
				 | 
				                              // layout: 'side',
 | 
				 | 
				 | 
				                              // layout: 'side',
 | 
			
		
		
	
		
			
				 | 
				 | 
				                            }} | 
				 | 
				 | 
				                            }} | 
			
		
		
	
		
			
				 | 
				 | 
				                    > | 
				 | 
				 | 
				                    > | 
			
		
		
	
		
			
				 | 
				 | 
				                      <Outlet/> | 
				 | 
				 | 
				                      <Outlet/> | 
			
		
		
	
		
			
				 | 
				 | 
				                    </ProLayout> | 
				 | 
				 | 
				                    </ProLayout> | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                  </ProLayout> | 
			
		
		
	
		
			
				 | 
				 | 
				                </ConfigProvider> | 
				 | 
				 | 
				                </ConfigProvider> | 
			
		
		
	
		
			
				 | 
				 | 
				              </ProConfigProvider> | 
				 | 
				 | 
				              </ProConfigProvider> | 
			
		
		
	
		
			
				 | 
				 | 
				            </CatchBoundary> | 
				 | 
				 | 
				            </CatchBoundary> | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |