@moneko/core 2.0.16-beta.16 → 2.0.16-beta.17
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.
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};return _extends.apply(this,arguments)}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}import React,{Fragment as ReactFragment,Suspense,cloneElement as clone,createElement as create,useEffect,isValidElement}from"react";import{isObject}from"@moneko/common";import{AliveScope,KeepAlive,useAliveController}from"react-activation";import{createBrowserRouter,createHashRouter}from"react-router-dom";import{router}from"../router";
|
|
1
|
+
function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};return _extends.apply(this,arguments)}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}import React,{Fragment as ReactFragment,Suspense,cloneElement as clone,createElement as create,useEffect,isValidElement}from"react";import{isObject}from"@moneko/common";import{AliveScope,KeepAlive,useAliveController}from"react-activation";import{createBrowserRouter,createHashRouter}from"react-router-dom";import Fallback from"./fallback";import{router}from"../router";var PrefixKeepAlive=function(_param){var children=_param.children,name=_param.name,args=_objectWithoutProperties(_param,["children","name"]);var _useAliveController=useAliveController(),drop=_useAliveController.drop,dropScope=_useAliveController.dropScope,clear=_useAliveController.clear,getCachingNodes=_useAliveController.getCachingNodes;var id=window.location.pathname+window.location.hash;useEffect(function(){if(window.__POWERED_BY_QIANKUN__&&window.primaryApp){if(!window.primaryApp.currentTarget){window.primaryApp.currentTarget={}}Object.assign(window.primaryApp.currentTarget,{aliveController:{drop:drop,dropScope:dropScope,clear:clear,getCachingNodes:getCachingNodes}})}},[clear,drop,dropScope,getCachingNodes]);var _children=children;return React.createElement(KeepAlive,_extends({id:id,name:id},args),clone(_children,{path:name,selfUrl:id}))};var existKeepAlive=false;export var createRouter=programInfo.routerMode==="hash"?createHashRouter:createBrowserRouter;export var RouterFragment=ReactFragment;export function prefixRouter(list,fallback){return list.map(function(r){var _=Object.assign({},r);if(!!_.alive&&!existKeepAlive){existKeepAlive=true;RouterFragment=AliveScope}if(_.element){var props=Object.assign({path:_.key},_.props);var ele=isValidElement(_.element)?clone(_.element,props):create(_.element,props);if(_.alive){var aliveProps={name:_.key,cacheKey:_.key};if(isObject(_.alive)){Object.assign(aliveProps,_.alive)}_.element=create(PrefixKeepAlive,aliveProps,ele)}else{_.element=React.createElement(Suspense,{fallback:r.fallback||fallback},ele)}}if(Array.isArray(_.children)){_.children=prefixRouter(_.children,fallback)}return _})}export var routerData=prefixRouter(router,React.createElement(Fallback,null));
|
|
2
2
|
//# sourceMappingURL=app-router.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/app-router.tsx"],"sourcesContent":["import React, {\n Fragment as ReactFragment,\n Suspense,\n cloneElement as clone,\n createElement as create,\n useEffect,\n isValidElement,\n type ReactElement,\n} from 'react';\nimport { isObject } from '@moneko/common';\nimport { AliveScope, KeepAlive, useAliveController, type KeepAliveProps } from 'react-activation';\nimport { createBrowserRouter, createHashRouter } from 'react-router-dom';\nimport { router, type RouterProps } from '../router';\
|
|
1
|
+
{"version":3,"sources":["../../src/components/app-router.tsx"],"sourcesContent":["import React, {\n Fragment as ReactFragment,\n Suspense,\n cloneElement as clone,\n createElement as create,\n useEffect,\n isValidElement,\n type ReactElement,\n} from 'react';\nimport { isObject } from '@moneko/common';\nimport { AliveScope, KeepAlive, useAliveController, type KeepAliveProps } from 'react-activation';\nimport { createBrowserRouter, createHashRouter } from 'react-router-dom';\nimport Fallback from './fallback';\nimport { router, type RouterProps } from '../router';\n\nconst PrefixKeepAlive: React.FC<Partial<KeepAliveProps>> = ({ children, name, ...args }) => {\n const { drop, dropScope, clear, getCachingNodes } = useAliveController();\n const id = window.location.pathname + window.location.hash;\n\n useEffect(() => {\n if (window.__POWERED_BY_QIANKUN__ && window.primaryApp) {\n if (!window.primaryApp.currentTarget) {\n window.primaryApp.currentTarget = {};\n }\n Object.assign(window.primaryApp.currentTarget, {\n aliveController: { drop, dropScope, clear, getCachingNodes },\n });\n }\n }, [clear, drop, dropScope, getCachingNodes]);\n\n const _children = children as ReactElement;\n\n return (\n <KeepAlive id={id} name={id} {...args}>\n {clone(_children, {\n path: name,\n selfUrl: id,\n })}\n </KeepAlive>\n );\n};\n\nlet existKeepAlive = false;\n\nexport const createRouter =\n programInfo.routerMode === 'hash' ? createHashRouter : createBrowserRouter;\nexport let RouterFragment: typeof ReactFragment | typeof AliveScope = ReactFragment;\n\nexport function prefixRouter(list: RouterProps[], fallback: ReactElement) {\n return list.map((r) => {\n const _ = Object.assign({}, r);\n\n if (!!_.alive && !existKeepAlive) {\n existKeepAlive = true;\n RouterFragment = AliveScope;\n }\n if (_.element) {\n const props = Object.assign({ path: _.key }, _.props);\n const ele = isValidElement(_.element) ? clone(_.element, props) : create(_.element, props);\n\n if (_.alive) {\n const aliveProps: Partial<KeepAliveProps> = {\n name: _.key,\n cacheKey: _.key,\n };\n\n if (isObject(_.alive)) {\n Object.assign(aliveProps, _.alive);\n }\n _.element = create(PrefixKeepAlive, aliveProps, ele);\n } else {\n _.element = <Suspense fallback={r.fallback || fallback}>{ele}</Suspense>;\n }\n }\n\n if (Array.isArray(_.children)) {\n _.children = prefixRouter(_.children, fallback);\n }\n return _;\n });\n}\n\nexport const routerData = prefixRouter(router, <Fallback />);\n"],"names":["React","Fragment","ReactFragment","Suspense","cloneElement","clone","createElement","create","useEffect","isValidElement","isObject","AliveScope","KeepAlive","useAliveController","createBrowserRouter","createHashRouter","Fallback","router","PrefixKeepAlive","children","name","args","drop","dropScope","clear","getCachingNodes","id","window","location","pathname","hash","__POWERED_BY_QIANKUN__","primaryApp","currentTarget","Object","assign","aliveController","_children","path","selfUrl","existKeepAlive","createRouter","programInfo","routerMode","RouterFragment","prefixRouter","list","fallback","map","r","_","alive","element","props","key","ele","aliveProps","cacheKey","Array","isArray","routerData"],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export { default as createSlice } from './store';
|
|
|
6
6
|
export { type LocaleConfig, localizable, type LocaleName } from './localizable';
|
|
7
7
|
export { matchUtil, router, onlyLoginRouter, myPkgs, myDemoKv, mdxComponents, type ExampleModule, type RouterProps, type MyPkg, } from './router';
|
|
8
8
|
export type { MenuItem, LayoutMenuProps } from './components/layout-menu';
|
|
9
|
-
export type { TabItem } from './packages/back-stage/layout';
|
|
9
|
+
export type { TabItem, CloseTab } from './packages/back-stage/layout';
|
|
10
10
|
export { createRouter, prefixRouter, routerData, RouterFragment } from './components/app-router';
|
|
11
11
|
export declare const LayoutMenu: any;
|
|
12
12
|
export declare const DashboardLayout: any;
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './prefix/react-router-dom.js';\nexport * from './utils';\nexport { pathToRegexp } from 'path-to-regexp';\nexport { default as createSlice } from './store';\nexport { type LocaleConfig, localizable, type LocaleName } from './localizable';\nexport {\n matchUtil,\n router,\n onlyLoginRouter,\n myPkgs,\n myDemoKv,\n mdxComponents,\n type ExampleModule,\n type RouterProps,\n type MyPkg,\n} from './router';\nexport type { MenuItem, LayoutMenuProps } from './components/layout-menu';\nexport type { TabItem } from './packages/back-stage/layout';\nexport { createRouter, prefixRouter, routerData, RouterFragment } from './components/app-router';\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nexport const LayoutMenu = hasAntd ? require('./components/layout-menu').default : null;\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nexport const DashboardLayout = hasAntd ? require('./packages/back-stage/layout').default : null;\nexport type {\n ConfigType,\n AppType,\n CommomType,\n ProgramInfoType,\n MemberTransformer,\n CoverageType,\n TerserOptions,\n MinifierType,\n SourceMapDevToolPluginOptions,\n ProjectCoverageType,\n SharedConfig,\n SwcOptions,\n OptimizationSplitChunksOptions,\n SwcImportOnDemandTransform,\n} from '../typings/global';\nimport type { ConfigType, CommomType, CoverageType, ProjectCoverageType } from '../typings/global';\nexport type PartialConfigType<T = 'swc'> = Partial<ConfigType<T>>;\nexport type PartialCommomType<T = 'swc'> = Partial<CommomType<T>>;\ndeclare const projectCoverage: Record<string, CoverageType & Partial<ProjectCoverageType>>;\n\n/** 一些项目基本信息 */\nexport const projectBasicInfo = {\n projectName,\n providerConfig,\n programInfo,\n coverage: projectCoverage,\n};\n"],"names":["pathToRegexp","default","createSlice","localizable","matchUtil","router","onlyLoginRouter","myPkgs","myDemoKv","mdxComponents","createRouter","prefixRouter","routerData","RouterFragment","LayoutMenu","hasAntd","require","DashboardLayout","projectBasicInfo","projectName","providerConfig","programInfo","coverage","projectCoverage"],"mappings":"AAAA,WAAc,8BAA+B,AAC7C,YAAc,SAAU,AACxB,QAASA,YAAY,KAAQ,gBAAiB,AAC9C,QAASC,WAAWC,WAAW,KAAQ,SAAU,AACjD,QAA4BC,WAAW,KAAyB,eAAgB,AAChF,QACEC,SAAS,CACTC,MAAM,CACNC,eAAe,CACfC,MAAM,CACNC,QAAQ,CACRC,aAAa,KAIR,UAAW,AAGlB,QAASC,YAAY,CAAEC,YAAY,CAAEC,UAAU,CAAEC,cAAc,KAAQ,yBAA0B,AAEjG,QAAO,IAAMC,WAAaC,QAAUC,QAAQ,4BAA4Bf,OAAO,CAAG,IAAI,AAAC,AAEvF,QAAO,IAAMgB,gBAAkBF,QAAUC,QAAQ,gCAAgCf,OAAO,CAAG,IAAI,AAAC,AAuBhG,QAAO,IAAMiB,iBAAmB,CAC9BC,YAAAA,YACAC,eAAAA,eACAC,YAAAA,YACAC,SAAUC,eACZ,CAAE"}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './prefix/react-router-dom.js';\nexport * from './utils';\nexport { pathToRegexp } from 'path-to-regexp';\nexport { default as createSlice } from './store';\nexport { type LocaleConfig, localizable, type LocaleName } from './localizable';\nexport {\n matchUtil,\n router,\n onlyLoginRouter,\n myPkgs,\n myDemoKv,\n mdxComponents,\n type ExampleModule,\n type RouterProps,\n type MyPkg,\n} from './router';\nexport type { MenuItem, LayoutMenuProps } from './components/layout-menu';\nexport type { TabItem, CloseTab } from './packages/back-stage/layout';\nexport { createRouter, prefixRouter, routerData, RouterFragment } from './components/app-router';\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nexport const LayoutMenu = hasAntd ? require('./components/layout-menu').default : null;\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nexport const DashboardLayout = hasAntd ? require('./packages/back-stage/layout').default : null;\nexport type {\n ConfigType,\n AppType,\n CommomType,\n ProgramInfoType,\n MemberTransformer,\n CoverageType,\n TerserOptions,\n MinifierType,\n SourceMapDevToolPluginOptions,\n ProjectCoverageType,\n SharedConfig,\n SwcOptions,\n OptimizationSplitChunksOptions,\n SwcImportOnDemandTransform,\n} from '../typings/global';\nimport type { ConfigType, CommomType, CoverageType, ProjectCoverageType } from '../typings/global';\nexport type PartialConfigType<T = 'swc'> = Partial<ConfigType<T>>;\nexport type PartialCommomType<T = 'swc'> = Partial<CommomType<T>>;\ndeclare const projectCoverage: Record<string, CoverageType & Partial<ProjectCoverageType>>;\n\n/** 一些项目基本信息 */\nexport const projectBasicInfo = {\n projectName,\n providerConfig,\n programInfo,\n coverage: projectCoverage,\n};\n"],"names":["pathToRegexp","default","createSlice","localizable","matchUtil","router","onlyLoginRouter","myPkgs","myDemoKv","mdxComponents","createRouter","prefixRouter","routerData","RouterFragment","LayoutMenu","hasAntd","require","DashboardLayout","projectBasicInfo","projectName","providerConfig","programInfo","coverage","projectCoverage"],"mappings":"AAAA,WAAc,8BAA+B,AAC7C,YAAc,SAAU,AACxB,QAASA,YAAY,KAAQ,gBAAiB,AAC9C,QAASC,WAAWC,WAAW,KAAQ,SAAU,AACjD,QAA4BC,WAAW,KAAyB,eAAgB,AAChF,QACEC,SAAS,CACTC,MAAM,CACNC,eAAe,CACfC,MAAM,CACNC,QAAQ,CACRC,aAAa,KAIR,UAAW,AAGlB,QAASC,YAAY,CAAEC,YAAY,CAAEC,UAAU,CAAEC,cAAc,KAAQ,yBAA0B,AAEjG,QAAO,IAAMC,WAAaC,QAAUC,QAAQ,4BAA4Bf,OAAO,CAAG,IAAI,AAAC,AAEvF,QAAO,IAAMgB,gBAAkBF,QAAUC,QAAQ,gCAAgCf,OAAO,CAAG,IAAI,AAAC,AAuBhG,QAAO,IAAMiB,iBAAmB,CAC9BC,YAAAA,YACAC,eAAAA,eACAC,YAAAA,YACAC,SAAUC,eACZ,CAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/packages/back-stage/layout/index.tsx"],"sourcesContent":["import React, { type ReactNode, useCallback, useEffect, useMemo, useState, type FC } from 'react';\nimport { ReloadOutlined, DeleteRowOutlined, CloseOutlined } from '@ant-design/icons';\nimport { Tabs, Layout, Dropdown, type MenuProps } from 'antd';\nimport { useAliveController } from 'react-activation';\nimport { useSearchParams, useOutlet, useNavigate } from 'react-router-dom';\nimport styles from './index.less';\nimport FallbackComp from '../../../components/fallback-comp';\nimport LayoutMenu from '../../../components/layout-menu';\nimport { type RouterProps } from '../../../index';\nimport { localizable } from '../../../localizable';\nimport { menu } from '@/store';\n\nexport interface TabItem extends RouterProps {\n key: string;\n url?: string;\n path?: string;\n closable?: boolean;\n icon?: React.ReactNode;\n i18n?: string;\n dynamicTitle?: string;\n}\n\nconst closeTabs: MenuProps['items'] = [\n {\n label: '关闭左侧标签',\n icon: <DeleteRowOutlined style={{ transform: 'scaleX(-1)' }} />,\n key: 'left',\n },\n {\n label: '关闭右侧标签',\n icon: <DeleteRowOutlined />,\n key: 'right',\n },\n {\n label: '关闭其他标签',\n icon: <CloseOutlined />,\n key: 'other',\n },\n {\n label: '刷新标签页',\n icon: <ReloadOutlined />,\n key: 'refresh',\n },\n];\nconst DashboardLayout: FC<{ children?: ReactNode }> = ({ children }) => {\n const { activeKey, tabs, openTab, closeTab } = menu;\n const { t } = localizable;\n const outlet = useOutlet();\n const navigate = useNavigate();\n const { dropScope } = useAliveController();\n const [search] = useSearchParams();\n const [collapsed, setCollapsed] = useState<boolean>(false);\n const handleCollapsed = useCallback((value: boolean) => {\n if (value) {\n let _timer: number | null = window.setTimeout(() => {\n setCollapsed(value);\n window.clearTimeout(_timer as number);\n _timer = null;\n }, 0);\n } else {\n setCollapsed(value);\n let _timer: number | null = window.setTimeout(() => {\n window.clearTimeout(_timer as number);\n _timer = null;\n }, 30);\n }\n }, []);\n const closedTab = useCallback(\n (tabKey?: string, type?: string) => {\n if (type === 'refresh') {\n navigate('/refresh');\n return;\n }\n closeTab(tabKey, type, function (closes?: TabItem[], nextTab?: TabItem) {\n closes?.forEach((item) => {\n if (item.path && dropScope) {\n dropScope(item.path);\n }\n });\n if (nextTab) {\n navigate(`${nextTab.path}?menuId=${nextTab.key}`);\n }\n });\n },\n [closeTab, dropScope, navigate]\n );\n\n const { menuId, dynamicTitle } = useMemo(\n () => ({\n menuId: search.get('menuId'),\n dynamicTitle: search.get('dynamicTitle') || '',\n }),\n [search]\n );\n\n useEffect(() => {\n if (menuId) {\n openTab({\n key: menuId,\n dynamicTitle: dynamicTitle,\n });\n }\n }, [dynamicTitle, menuId, openTab]);\n\n const getItems = useCallback(\n (key: string) =>\n key === activeKey ? closeTabs : closeTabs.filter((i) => i?.key !== 'refresh'),\n [activeKey]\n );\n const handleTabEdit = useCallback(\n (\n targetKey: string | React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>,\n action: 'add' | 'remove'\n ) => {\n if (action === 'remove' && typeof targetKey === 'string') {\n closedTab(targetKey);\n }\n },\n [closedTab]\n );\n const handleClick = useCallback(\n (key: string) => {\n navigate(`${menu.kv[key].key}?menuId=${menu.kv[key].key}`);\n },\n [navigate]\n );\n const tabPanel = useMemo(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return tabs.map((item: any) => {\n return {\n key: item.key,\n label: (\n <Dropdown\n menu={{\n items: getItems(item.key),\n onClick: (info) => {\n info.domEvent.stopPropagation();\n closedTab(item.key, info.key);\n },\n }}\n trigger={['contextMenu']}\n destroyPopupOnHide\n >\n <div>\n {item.icon}\n {t[item.i18n || `route-${item.key}`] + item.dynamicTitle || ''}\n </div>\n </Dropdown>\n ),\n closable: item.closable,\n };\n });\n }, [closedTab, getItems, t, tabs]);\n\n return (\n <Layout className={styles.layout}>\n {layoutSider ? (\n <Layout.Sider\n className={styles.sider}\n trigger={null}\n collapsible\n collapsed={collapsed}\n onBreakpoint={(broken: boolean) => handleCollapsed(broken)}\n onCollapse={(_collapsed: boolean) => handleCollapsed(_collapsed)}\n theme=\"light\"\n breakpoint=\"md\"\n {...layoutSider}\n >\n <div className={styles.logo} data-title={projectName}>\n <FallbackComp compName=\"logo\" show={!collapsed} />\n </div>\n <LayoutMenu collapsed={collapsed} theme={layoutSider.theme} />\n </Layout.Sider>\n ) : null}\n <Layout className={styles.section}>\n <FallbackComp\n compName=\"layout-header\"\n collapsed={collapsed}\n onCollapsed={() => handleCollapsed(!collapsed)}\n />\n <Tabs\n className={styles.tabs}\n hideAdd\n onTabClick={handleClick}\n activeKey={activeKey}\n size=\"middle\"\n type=\"editable-card\"\n onEdit={handleTabEdit}\n items={tabPanel}\n />\n <Layout.Content className={styles.layoutContent}>\n <div className={styles.content}>{children || outlet}</div>\n <FallbackComp compName=\"layout-footer\" />\n </Layout.Content>\n </Layout>\n </Layout>\n );\n};\n\nexport default DashboardLayout;\n"],"names":["React","useCallback","useEffect","useMemo","useState","ReloadOutlined","DeleteRowOutlined","CloseOutlined","Tabs","Layout","Dropdown","useAliveController","useSearchParams","useOutlet","useNavigate","styles","FallbackComp","LayoutMenu","localizable","menu","closeTabs","label","icon","style","transform","key","DashboardLayout","children","activeKey","tabs","openTab","closeTab","t","outlet","navigate","dropScope","search","collapsed","setCollapsed","handleCollapsed","value","_timer","window","setTimeout","clearTimeout","closedTab","tabKey","type","closes","nextTab","forEach","item","path","menuId","get","dynamicTitle","getItems","filter","i","handleTabEdit","targetKey","action","handleClick","kv","tabPanel","map","items","onClick","info","domEvent","stopPropagation","trigger","destroyPopupOnHide","div","i18n","closable","className","layout","layoutSider","Sider","sider","collapsible","onBreakpoint","broken","onCollapse","_collapsed","theme","breakpoint","logo","data-title","projectName","compName","show","section","onCollapsed","hideAdd","onTabClick","size","onEdit","Content","layoutContent","content"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/packages/back-stage/layout/index.tsx"],"sourcesContent":["import React, { type ReactNode, useCallback, useEffect, useMemo, useState, type FC } from 'react';\nimport { ReloadOutlined, DeleteRowOutlined, CloseOutlined } from '@ant-design/icons';\nimport { Tabs, Layout, Dropdown } from 'antd';\nimport { useAliveController } from 'react-activation';\nimport { useSearchParams, useOutlet, useNavigate } from 'react-router-dom';\nimport styles from './index.less';\nimport FallbackComp from '../../../components/fallback-comp';\nimport LayoutMenu from '../../../components/layout-menu';\nimport { type RouterProps } from '../../../index';\nimport { localizable } from '../../../localizable';\nimport type { MenuItemType } from 'antd/es/menu/hooks/useItems';\nimport { menu } from '@/store';\n\nexport type CloseTab = 'left' | 'right' | 'other' | 'self';\nexport interface TabItem extends RouterProps {\n key: string;\n url?: string;\n path?: string;\n closable?: boolean;\n icon?: React.ReactNode;\n i18n?: string;\n dynamicTitle?: string;\n}\n\nconst closeTabs: ({ key: CloseTab | 'refresh' } & Omit<MenuItemType, 'key'>)[] = [\n {\n label: '关闭左侧标签',\n icon: <DeleteRowOutlined style={{ transform: 'scaleX(-1)' }} />,\n key: 'left',\n },\n {\n label: '关闭右侧标签',\n icon: <DeleteRowOutlined />,\n key: 'right',\n },\n {\n label: '关闭其他标签',\n icon: <CloseOutlined />,\n key: 'other',\n },\n {\n label: '刷新标签页',\n icon: <ReloadOutlined />,\n key: 'refresh',\n },\n];\nconst DashboardLayout: FC<{ children?: ReactNode }> = ({ children }) => {\n const { activeKey, tabs, openTab, closeTab } = menu;\n const { t } = localizable;\n const outlet = useOutlet();\n const navigate = useNavigate();\n const { dropScope } = useAliveController();\n const [search] = useSearchParams();\n const [collapsed, setCollapsed] = useState<boolean>(false);\n const handleCollapsed = useCallback((value: boolean) => {\n if (value) {\n let _timer: number | null = window.setTimeout(() => {\n setCollapsed(value);\n window.clearTimeout(_timer as number);\n _timer = null;\n }, 0);\n } else {\n setCollapsed(value);\n let _timer: number | null = window.setTimeout(() => {\n window.clearTimeout(_timer as number);\n _timer = null;\n }, 30);\n }\n }, []);\n const closedTab = useCallback(\n (tabKey?: string, type?: string) => {\n if (type === 'refresh') {\n navigate('/refresh');\n return;\n }\n closeTab(tabKey, type, function (closes?: TabItem[], nextTab?: TabItem) {\n closes?.forEach((item) => {\n if (item.path && dropScope) {\n dropScope(item.path);\n }\n });\n if (nextTab) {\n navigate(`${nextTab.path}?menuId=${nextTab.key}`);\n }\n });\n },\n [closeTab, dropScope, navigate]\n );\n\n const { menuId, dynamicTitle } = useMemo(\n () => ({\n menuId: search.get('menuId'),\n dynamicTitle: search.get('dynamicTitle') || '',\n }),\n [search]\n );\n\n useEffect(() => {\n if (menuId) {\n openTab({\n key: menuId,\n dynamicTitle: dynamicTitle,\n });\n }\n }, [dynamicTitle, menuId, openTab]);\n\n const getItems = useCallback(\n (key: string) =>\n key === activeKey ? closeTabs : closeTabs.filter((i) => i?.key !== 'refresh'),\n [activeKey]\n );\n const handleTabEdit = useCallback(\n (\n targetKey: string | React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>,\n action: 'add' | 'remove'\n ) => {\n if (action === 'remove' && typeof targetKey === 'string') {\n closedTab(targetKey);\n }\n },\n [closedTab]\n );\n const handleClick = useCallback(\n (key: string) => {\n navigate(`${menu.kv[key].key}?menuId=${menu.kv[key].key}`);\n },\n [navigate]\n );\n const tabPanel = useMemo(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return tabs.map((item: any) => {\n return {\n key: item.key,\n label: (\n <Dropdown\n menu={{\n items: getItems(item.key),\n onClick: (info) => {\n info.domEvent.stopPropagation();\n closedTab(item.key, info.key);\n },\n }}\n trigger={['contextMenu']}\n destroyPopupOnHide\n >\n <div>\n {item.icon}\n {t[item.i18n || `route-${item.key}`] + item.dynamicTitle || ''}\n </div>\n </Dropdown>\n ),\n closable: item.closable,\n };\n });\n }, [closedTab, getItems, t, tabs]);\n\n return (\n <Layout className={styles.layout}>\n {layoutSider ? (\n <Layout.Sider\n className={styles.sider}\n trigger={null}\n collapsible\n collapsed={collapsed}\n onBreakpoint={(broken: boolean) => handleCollapsed(broken)}\n onCollapse={(_collapsed: boolean) => handleCollapsed(_collapsed)}\n theme=\"light\"\n breakpoint=\"md\"\n {...layoutSider}\n >\n <div className={styles.logo} data-title={projectName}>\n <FallbackComp compName=\"logo\" show={!collapsed} />\n </div>\n <LayoutMenu collapsed={collapsed} theme={layoutSider.theme} />\n </Layout.Sider>\n ) : null}\n <Layout className={styles.section}>\n <FallbackComp\n compName=\"layout-header\"\n collapsed={collapsed}\n onCollapsed={() => handleCollapsed(!collapsed)}\n />\n <Tabs\n className={styles.tabs}\n hideAdd\n onTabClick={handleClick}\n activeKey={activeKey}\n size=\"middle\"\n type=\"editable-card\"\n onEdit={handleTabEdit}\n items={tabPanel}\n />\n <Layout.Content className={styles.layoutContent}>\n <div className={styles.content}>{children || outlet}</div>\n <FallbackComp compName=\"layout-footer\" />\n </Layout.Content>\n </Layout>\n </Layout>\n );\n};\n\nexport default DashboardLayout;\n"],"names":["React","useCallback","useEffect","useMemo","useState","ReloadOutlined","DeleteRowOutlined","CloseOutlined","Tabs","Layout","Dropdown","useAliveController","useSearchParams","useOutlet","useNavigate","styles","FallbackComp","LayoutMenu","localizable","menu","closeTabs","label","icon","style","transform","key","DashboardLayout","children","activeKey","tabs","openTab","closeTab","t","outlet","navigate","dropScope","search","collapsed","setCollapsed","handleCollapsed","value","_timer","window","setTimeout","clearTimeout","closedTab","tabKey","type","closes","nextTab","forEach","item","path","menuId","get","dynamicTitle","getItems","filter","i","handleTabEdit","targetKey","action","handleClick","kv","tabPanel","map","items","onClick","info","domEvent","stopPropagation","trigger","destroyPopupOnHide","div","i18n","closable","className","layout","layoutSider","Sider","sider","collapsible","onBreakpoint","broken","onCollapse","_collapsed","theme","breakpoint","logo","data-title","projectName","compName","show","section","onCollapsed","hideAdd","onTabClick","size","onEdit","Content","layoutContent","content"],"mappings":"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"}
|