@moneko/core 2.0.16-beta.17 → 2.0.16-beta.18
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.
|
@@ -8,7 +8,7 @@ export type LocaleConfig = {
|
|
|
8
8
|
/** Icon */
|
|
9
9
|
icon?: ReactNode | string;
|
|
10
10
|
translation: {
|
|
11
|
-
[key: string]: string;
|
|
11
|
+
[key: string]: string | number;
|
|
12
12
|
};
|
|
13
13
|
};
|
|
14
14
|
interface Locale extends LocaleConfig {
|
|
@@ -19,7 +19,7 @@ export declare const localizable: {
|
|
|
19
19
|
language: LocaleName;
|
|
20
20
|
/** 获取本地化文本 */
|
|
21
21
|
t: {
|
|
22
|
-
[key: string]: string;
|
|
22
|
+
[key: string]: string | number;
|
|
23
23
|
};
|
|
24
24
|
/** 本地化支持列表 */
|
|
25
25
|
locales: Pick<Locale, "language" | "icon" | "title">[];
|
|
@@ -33,7 +33,7 @@ export declare const localizable: {
|
|
|
33
33
|
language: LocaleName;
|
|
34
34
|
/** 获取本地化文本 */
|
|
35
35
|
t: {
|
|
36
|
-
[key: string]: string;
|
|
36
|
+
[key: string]: string | number;
|
|
37
37
|
};
|
|
38
38
|
/** 本地化支持列表 */
|
|
39
39
|
locales: Pick<Locale, "language" | "icon" | "title">[];
|
|
@@ -47,7 +47,7 @@ export declare const localizable: {
|
|
|
47
47
|
language: LocaleName;
|
|
48
48
|
/** 获取本地化文本 */
|
|
49
49
|
t: {
|
|
50
|
-
[key: string]: string;
|
|
50
|
+
[key: string]: string | number;
|
|
51
51
|
};
|
|
52
52
|
/** 本地化支持列表 */
|
|
53
53
|
locales: Pick<Locale, "language" | "icon" | "title">[];
|
package/lib/localizable/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var _models_keys,_models_keys_call;import createSlice from"../store";var models={keys:function(){return[]}};try{models=hasLocales?require.context("@/locales/",true,/\.(t|j)s$/):{keys:function(){return[]}}}catch(error){console.warn(error)}var resources={};var locales=[];(_models_keys=models.keys)===null||_models_keys===void 0?void 0:(_models_keys_call=_models_keys.call(models))===null||_models_keys_call===void 0?void 0:_models_keys_call.map(function(path,i){var item=models(path).default;if(item&&Object.prototype.toString.call(item)==="[object Object]"){var _item_language=item.language,language=_item_language===void 0?path.replace(/(.*\/)*([^.]+).*/gi,"$2"):_item_language,_item_title=item.title,title=_item_title===void 0?language:_item_title,icon=item.icon,_item_translation=item.translation,translation=_item_translation===void 0?item:_item_translation;if(i===0){locales.splice(0)}locales.push({language:language,title:title,icon:icon});resources[language]={language:language,title:title,icon:icon,translation:translation}}item=null});var defaultLocale=Object.assign({title:"简体中文",language:"zh_CN",translation:{}},resources.zh_CN);export var localizable=createSlice({language:"zh_CN",t:defaultLocale.translation,locales:locales,set:function set(lang){var _resources_lang;localizable.language=lang;localizable.t=((_resources_lang=resources[lang])===null||_resources_lang===void 0?void 0:_resources_lang.translation)||defaultLocale.translation}});
|
|
1
|
+
var _models_keys,_models_keys_call;import createSlice from"../store";var models={keys:function(){return[]}};try{models=hasLocales?require.context("@/locales/",true,/\.(t|j)s$/):{keys:function(){return[]}}}catch(error){console.warn(error)}var resources={};var locales=[];(_models_keys=models.keys)===null||_models_keys===void 0?void 0:(_models_keys_call=_models_keys.call(models))===null||_models_keys_call===void 0?void 0:_models_keys_call.map(function(path,i){var item=models(path).default;if(item&&Object.prototype.toString.call(item)==="[object Object]"){var _item_language=item.language,language=_item_language===void 0?path.replace(/(.*\/)*([^.]+).*/gi,"$2"):_item_language,_item_title=item.title,title=_item_title===void 0?language:_item_title,icon=item.icon,_item_translation=item.translation,translation=_item_translation===void 0?item:_item_translation;if(i===0){locales.splice(0)}locales.push({language:language,title:title,icon:icon});resources[language]={language:language,title:title,icon:icon,translation:translation}}item=null});var defaultLocale=Object.assign({title:"简体中文",language:"zh_CN",translation:{}},resources.zh_CN);export var localizable=createSlice({language:"zh_CN",t:new Proxy(defaultLocale.translation,{get:function get(target,key){return target[key]||key}}),locales:locales,set:function set(lang){var _resources_lang;localizable.language=lang;localizable.t=((_resources_lang=resources[lang])===null||_resources_lang===void 0?void 0:_resources_lang.translation)||defaultLocale.translation}});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/localizable/index.ts"],"sourcesContent":["import type { ReactNode } from 'react';\nimport createSlice from '../store';\n\nexport type LocaleName =\n | 'ar_EG'\n | 'az_AZ'\n | 'bg_BG'\n | 'bn_BD'\n | 'by_BY'\n | 'ca_ES'\n | 'cs_CZ'\n | 'da_DK'\n | 'de_DE'\n | 'el_GR'\n | 'en_GB'\n | 'en_US'\n | 'es_ES'\n | 'et_EE'\n | 'fa_IR'\n | 'fi_FI'\n | 'fr_BE'\n | 'fr_CA'\n | 'fr_FR'\n | 'ga_IE'\n | 'gl_ES'\n | 'he_IL'\n | 'hi_IN'\n | 'hr_HR'\n | 'hu_HU'\n | 'hy_AM'\n | 'id_ID'\n | 'is_IS'\n | 'it_IT'\n | 'ja_JP'\n | 'ka_GE'\n | 'kk_KZ'\n | 'kmr_IQ'\n | 'km_KH'\n | 'kn_IN'\n | 'ko_KR'\n | 'ku_IQ'\n | 'lt_LT'\n | 'lv_LV'\n | 'mk_MK'\n | 'ml_IN'\n | 'mn_MN'\n | 'ms_MY'\n | 'nb_NO'\n | 'ne_NP'\n | 'nl_BE'\n | 'nl_NL'\n | 'pl_PL'\n | 'pt_BR'\n | 'pt_PT'\n | 'ro_RO'\n | 'ru_RU'\n | 'sk_SK'\n | 'sl_SI'\n | 'sr_RS'\n | 'sv_SE'\n | 'ta_IN'\n | 'th_TH'\n | 'tr_TR'\n | 'uk_UA'\n | 'ur_PK'\n | 'vi_VN'\n | 'zh_CN'\n | 'zh_HK'\n | 'zh_TW';\n\nlet models = {\n keys: () => [],\n} as unknown as __WebpackModuleApi.RequireContext;\n\ndeclare const hasLocales: boolean;\n\ntry {\n models = hasLocales // eslint-disable-next-line\n ? require.context('@/locales/', true, /\\.(t|j)s$/) // eslint-disable-next-line\n : ({\n keys: () => [],\n } as unknown as __WebpackModuleApi.RequireContext);\n} catch (error) {\n // eslint-disable-next-line no-console\n console.warn(error);\n}\nexport type LocaleConfig = {\n /** 命名空间 (未设置时使用文件名)*/\n language?: LocaleName;\n /** 描述 */\n title: string;\n /** Icon */\n icon?: ReactNode | string;\n translation: {\n [key: string]: string;\n };\n};\ntype LocaleConfigMap = Record<LocaleName, Locale>;\nconst resources: Partial<LocaleConfigMap> = {};\nconst locales: Pick<Locale, 'language' | 'icon' | 'title'>[] = [];\n\nmodels.keys?.()?.map((path: string, i: number) => {\n let item: LocaleConfigMap[LocaleName] | null = models(path).default;\n\n if (item && Object.prototype.toString.call(item) === '[object Object]') {\n const {\n language = path.replace(/(.*\\/)*([^.]+).*/gi, '$2') as LocaleName,\n title = language,\n icon,\n translation = item as unknown as LocaleConfigMap[LocaleName]['translation'],\n } = item;\n\n if (i === 0) {\n locales.splice(0);\n }\n locales.push({\n language,\n title,\n icon,\n });\n resources[language] = {\n language,\n title,\n icon,\n translation,\n };\n }\n item = null;\n});\n\ninterface Locale extends LocaleConfig {\n language: LocaleName;\n}\nconst defaultLocale: Locale = Object.assign(\n {\n title: '简体中文',\n language: 'zh_CN',\n translation: {},\n },\n resources.zh_CN\n);\n\nexport const localizable = createSlice({\n /** 使用的语言 */\n language: 'zh_CN' as LocaleName,\n /** 获取本地化文本 */\n t: defaultLocale.translation
|
|
1
|
+
{"version":3,"sources":["../../src/localizable/index.ts"],"sourcesContent":["import type { ReactNode } from 'react';\nimport createSlice from '../store';\n\nexport type LocaleName =\n | 'ar_EG'\n | 'az_AZ'\n | 'bg_BG'\n | 'bn_BD'\n | 'by_BY'\n | 'ca_ES'\n | 'cs_CZ'\n | 'da_DK'\n | 'de_DE'\n | 'el_GR'\n | 'en_GB'\n | 'en_US'\n | 'es_ES'\n | 'et_EE'\n | 'fa_IR'\n | 'fi_FI'\n | 'fr_BE'\n | 'fr_CA'\n | 'fr_FR'\n | 'ga_IE'\n | 'gl_ES'\n | 'he_IL'\n | 'hi_IN'\n | 'hr_HR'\n | 'hu_HU'\n | 'hy_AM'\n | 'id_ID'\n | 'is_IS'\n | 'it_IT'\n | 'ja_JP'\n | 'ka_GE'\n | 'kk_KZ'\n | 'kmr_IQ'\n | 'km_KH'\n | 'kn_IN'\n | 'ko_KR'\n | 'ku_IQ'\n | 'lt_LT'\n | 'lv_LV'\n | 'mk_MK'\n | 'ml_IN'\n | 'mn_MN'\n | 'ms_MY'\n | 'nb_NO'\n | 'ne_NP'\n | 'nl_BE'\n | 'nl_NL'\n | 'pl_PL'\n | 'pt_BR'\n | 'pt_PT'\n | 'ro_RO'\n | 'ru_RU'\n | 'sk_SK'\n | 'sl_SI'\n | 'sr_RS'\n | 'sv_SE'\n | 'ta_IN'\n | 'th_TH'\n | 'tr_TR'\n | 'uk_UA'\n | 'ur_PK'\n | 'vi_VN'\n | 'zh_CN'\n | 'zh_HK'\n | 'zh_TW';\n\nlet models = {\n keys: () => [],\n} as unknown as __WebpackModuleApi.RequireContext;\n\ndeclare const hasLocales: boolean;\n\ntry {\n models = hasLocales // eslint-disable-next-line\n ? require.context('@/locales/', true, /\\.(t|j)s$/) // eslint-disable-next-line\n : ({\n keys: () => [],\n } as unknown as __WebpackModuleApi.RequireContext);\n} catch (error) {\n // eslint-disable-next-line no-console\n console.warn(error);\n}\nexport type LocaleConfig = {\n /** 命名空间 (未设置时使用文件名)*/\n language?: LocaleName;\n /** 描述 */\n title: string;\n /** Icon */\n icon?: ReactNode | string;\n translation: {\n [key: string]: string | number;\n };\n};\ntype LocaleConfigMap = Record<LocaleName, Locale>;\nconst resources: Partial<LocaleConfigMap> = {};\nconst locales: Pick<Locale, 'language' | 'icon' | 'title'>[] = [];\n\nmodels.keys?.()?.map((path: string, i: number) => {\n let item: LocaleConfigMap[LocaleName] | null = models(path).default;\n\n if (item && Object.prototype.toString.call(item) === '[object Object]') {\n const {\n language = path.replace(/(.*\\/)*([^.]+).*/gi, '$2') as LocaleName,\n title = language,\n icon,\n translation = item as unknown as LocaleConfigMap[LocaleName]['translation'],\n } = item;\n\n if (i === 0) {\n locales.splice(0);\n }\n locales.push({\n language,\n title,\n icon,\n });\n resources[language] = {\n language,\n title,\n icon,\n translation,\n };\n }\n item = null;\n});\n\ninterface Locale extends LocaleConfig {\n language: LocaleName;\n}\nconst defaultLocale: Locale = Object.assign(\n {\n title: '简体中文',\n language: 'zh_CN',\n translation: {},\n },\n resources.zh_CN\n);\n\nexport const localizable = createSlice({\n /** 使用的语言 */\n language: 'zh_CN' as LocaleName,\n /** 获取本地化文本 */\n t: new Proxy(defaultLocale.translation, {\n get(target, key) {\n return target[key as string] || key;\n },\n }),\n /** 本地化支持列表 */\n locales: locales,\n /** 设置使用的语言\n * @param {LocaleName} lang 语言\n * @constructor\n */\n set(lang: LocaleName) {\n localizable.language = lang;\n localizable.t = resources[lang]?.translation || defaultLocale.translation;\n },\n});\n"],"names":["models","createSlice","keys","hasLocales","require","context","error","console","warn","resources","locales","map","path","i","item","default","Object","prototype","toString","call","language","replace","title","icon","translation","splice","push","defaultLocale","assign","zh_CN","localizable","t","Proxy","get","target","key","set","lang"],"mappings":"IAqGAA,aAAAA,iBApGA,QAAOC,gBAAiB,UAAW,CAqEnC,IAAID,OAAS,CACXE,KAAM,iBAAM,EAAE,CAChB,EAIA,GAAI,CACFF,OAASG,WACLC,QAAQC,OAAO,CAAC,aAAc,IAAI,CAAE,aACnC,CACCH,KAAM,iBAAM,EAAE,CAChB,CAAkD,AACxD,CAAE,MAAOI,MAAO,CAEdC,QAAQC,IAAI,CAACF,MACf,CAaA,IAAMG,UAAsC,CAAC,EAC7C,IAAMC,QAAyD,EAAE,AAEjEV,EAAAA,aAAAA,OAAOE,IAAI,UAAXF,sBAAAA,KAAAA,EAAAA,CAAAA,kBAAAA,aAAAA,KAAAA,iBAAAA,2BAAAA,KAAAA,EAAAA,kBAAiBW,IAAI,SAACC,KAAcC,EAAc,CAChD,IAAIC,KAA2Cd,OAAOY,MAAMG,OAAO,CAEnE,GAAID,MAAQE,OAAOC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACL,QAAU,kBAAmB,CACtE,mBAKIA,KAJFM,SAAAA,iCAAWR,KAAKS,OAAO,CAAC,qBAAsB,iCAI5CP,KAHFQ,MAAAA,2BAAQF,qBACRG,KAEET,KAFFS,uBAEET,KADFU,YAAAA,uCAAcV,uBAGhB,GAAID,IAAM,EAAG,CACXH,QAAQe,MAAM,CAAC,EACjB,CAAC,AACDf,QAAQgB,IAAI,CAAC,CACXN,SAAAA,SACAE,MAAAA,MACAC,KAAAA,IACF,EACAd,CAAAA,SAAS,CAACW,SAAS,CAAG,CACpBA,SAAAA,SACAE,MAAAA,MACAC,KAAAA,KACAC,YAAAA,WACF,CACF,CAAC,AACDV,KAAO,IAAI,AACb,GAKA,IAAMa,cAAwBX,OAAOY,MAAM,CACzC,CACEN,MAAO,OACPF,SAAU,QACVI,YAAa,CAAC,CAChB,EACAf,UAAUoB,KAAK,CAGjB,QAAO,IAAMC,YAAc7B,YAAY,CAErCmB,SAAU,QAEVW,EAAG,IAAIC,MAAML,cAAcH,WAAW,CAAE,CACtCS,IAAAA,SAAAA,IAAIC,MAAM,CAAEC,GAAG,CAAE,CACf,OAAOD,MAAM,CAACC,IAAc,EAAIA,GAClC,CACF,GAEAzB,QAASA,QAKT0B,IAAAA,SAAAA,IAAIC,IAAgB,CAAE,KAEJ5B,eADhBqB,CAAAA,YAAYV,QAAQ,CAAGiB,IACvBP,CAAAA,YAAYC,CAAC,CAAGtB,CAAAA,CAAAA,gBAAAA,SAAS,CAAC4B,KAAK,UAAf5B,yBAAAA,KAAAA,EAAAA,gBAAiBe,WAAW,AAAD,GAAKG,cAAcH,WAAW,AAC3E,CACF,EAAG"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}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 _iterableToArrayLimit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}import React,{useCallback,useEffect,useMemo,useState}from"react";import{ReloadOutlined,DeleteRowOutlined,CloseOutlined}from"@ant-design/icons";import{Tabs,Layout,Dropdown}from"antd";import{useAliveController}from"react-activation";import{useSearchParams,useOutlet,useNavigate}from"react-router-dom";import styles from"./index.less";import FallbackComp from"../../../components/fallback-comp";import LayoutMenu from"../../../components/layout-menu";import{localizable}from"../../../localizable";import{menu}from"@/store";var closeTabs=[{label:"关闭左侧标签",icon:React.createElement(DeleteRowOutlined,{style:{transform:"scaleX(-1)"}}),key:"left"},{label:"关闭右侧标签",icon:React.createElement(DeleteRowOutlined,null),key:"right"},{label:"关闭其他标签",icon:React.createElement(CloseOutlined,null),key:"other"},{label:"刷新标签页",icon:React.createElement(ReloadOutlined,null),key:"refresh"}];var DashboardLayout=function(param){var children=param.children;var activeKey=menu.activeKey,tabs=menu.tabs,openTab=menu.openTab,closeTab=menu.closeTab;var t=localizable.t;var outlet=useOutlet();var navigate=useNavigate();var dropScope=useAliveController().dropScope;var _useSearchParams=_slicedToArray(useSearchParams(),1),search=_useSearchParams[0];var _useState=_slicedToArray(useState(false),2),collapsed=_useState[0],setCollapsed=_useState[1];var handleCollapsed=useCallback(function(value){if(value){var _timer=window.setTimeout(function(){setCollapsed(value);window.clearTimeout(_timer);_timer=null},0)}else{setCollapsed(value);var _timer1=window.setTimeout(function(){window.clearTimeout(_timer1);_timer1=null},30)}},[]);var closedTab=useCallback(function(tabKey,type){if(type==="refresh"){navigate("/refresh");return}closeTab(tabKey,type,function(closes,
|
|
1
|
+
function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}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 _iterableToArrayLimit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}import React,{useCallback,useEffect,useMemo,useState}from"react";import{ReloadOutlined,DeleteRowOutlined,CloseOutlined}from"@ant-design/icons";import{Tabs,Layout,Dropdown}from"antd";import{useAliveController}from"react-activation";import{useSearchParams,useOutlet,useNavigate}from"react-router-dom";import styles from"./index.less";import FallbackComp from"../../../components/fallback-comp";import LayoutMenu from"../../../components/layout-menu";import{localizable}from"../../../localizable";import{menu}from"@/store";var closeTabs=[{label:"关闭左侧标签",icon:React.createElement(DeleteRowOutlined,{style:{transform:"scaleX(-1)"}}),key:"left"},{label:"关闭右侧标签",icon:React.createElement(DeleteRowOutlined,null),key:"right"},{label:"关闭其他标签",icon:React.createElement(CloseOutlined,null),key:"other"},{label:"刷新标签页",icon:React.createElement(ReloadOutlined,null),key:"refresh"}];var DashboardLayout=function(param){var children=param.children;var activeKey=menu.activeKey,tabs=menu.tabs,openTab=menu.openTab,closeTab=menu.closeTab,kv=menu.kv;var t=localizable.t;var outlet=useOutlet();var navigate=useNavigate();var dropScope=useAliveController().dropScope;var _useSearchParams=_slicedToArray(useSearchParams(),1),search=_useSearchParams[0];var _useState=_slicedToArray(useState(false),2),collapsed=_useState[0],setCollapsed=_useState[1];var handleCollapsed=useCallback(function(value){if(value){var _timer=window.setTimeout(function(){setCollapsed(value);window.clearTimeout(_timer);_timer=null},0)}else{setCollapsed(value);var _timer1=window.setTimeout(function(){window.clearTimeout(_timer1);_timer1=null},30)}},[]);var closedTab=useCallback(function(tabKey,type){if(type==="refresh"){navigate("/refresh");return}if(tabKey){closeTab(tabKey,type,function(closes,next){closes===null||closes===void 0?void 0:closes.forEach(function(item){if(item.path&&dropScope){dropScope(item.path)}});if(next){navigate("".concat(next.path,"?menuId=").concat(next.key))}})}},[closeTab,dropScope,navigate]);var _useMemo=useMemo(function(){return{menuId:search.get("menuId"),dynamicLabel:search.get("dynamicTitle")||""}},[search]),menuId=_useMemo.menuId,dynamicLabel=_useMemo.dynamicLabel;useEffect(function(){if(menuId){openTab({key:menuId,dynamicTitle:dynamicLabel})}},[dynamicLabel,menuId,openTab]);var getItems=useCallback(function(key){return key===activeKey?closeTabs:closeTabs.filter(function(i){return(i===null||i===void 0?void 0:i.key)!=="refresh"})},[activeKey]);var handleTabEdit=useCallback(function(targetKey,action){if(action==="remove"&&typeof targetKey==="string"){closedTab(targetKey)}},[closedTab]);var handleClick=useCallback(function(key){navigate("".concat(kv[key].key,"?menuId=").concat(kv[key].key))},[kv,navigate]);var tabPanel=useMemo(function(){return tabs.map(function(param){var key=param.key,icon=param.icon,i18n=param.i18n,dynamicTitle=param.dynamicTitle,closable=param.closable;return{key:key,label:React.createElement(Dropdown,{menu:{items:getItems(key),onClick:function(info){info.domEvent.stopPropagation();closedTab(key,info.key)}},trigger:["contextMenu"],destroyPopupOnHide:true},React.createElement("div",null,icon,t[i18n||"route-".concat(key)]+(dynamicTitle||""))),closable:closable}})},[closedTab,getItems,t,tabs]);return React.createElement(Layout,{className:styles.layout},layoutSider?React.createElement(Layout.Sider,_extends({className:styles.sider,trigger:null,collapsible:true,collapsed:collapsed,onBreakpoint:function(broken){return handleCollapsed(broken)},onCollapse:function(_collapsed){return handleCollapsed(_collapsed)},theme:"light",breakpoint:"md"},layoutSider),React.createElement("div",{className:styles.logo,"data-title":projectName},React.createElement(FallbackComp,{compName:"logo",show:!collapsed})),React.createElement(LayoutMenu,{collapsed:collapsed,theme:layoutSider.theme})):null,React.createElement(Layout,{className:styles.section},React.createElement(FallbackComp,{compName:"layout-header",collapsed:collapsed,onCollapsed:function(){return handleCollapsed(!collapsed)}}),React.createElement(Tabs,{className:styles.tabs,hideAdd:true,onTabClick:handleClick,activeKey:activeKey,size:"middle",type:"editable-card",onEdit:handleTabEdit,items:tabPanel}),React.createElement(Layout.Content,{className:styles.layoutContent},React.createElement("div",{className:styles.content},children||outlet),React.createElement(FallbackComp,{compName:"layout-footer"}))))};export default DashboardLayout;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -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 } 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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"}
|
|
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, kv } = 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?: CloseTab | 'refresh') => {\n if (type === 'refresh') {\n navigate('/refresh');\n return;\n }\n if (tabKey) {\n closeTab(tabKey, type, function (closes?: TabItem[], next?: TabItem) {\n closes?.forEach((item) => {\n if (item.path && dropScope) {\n dropScope(item.path);\n }\n });\n if (next) {\n navigate(`${next.path}?menuId=${next.key}`);\n }\n });\n }\n },\n [closeTab, dropScope, navigate]\n );\n\n const { menuId, dynamicLabel } = useMemo(\n () => ({\n menuId: search.get('menuId'),\n dynamicLabel: search.get('dynamicTitle') || '',\n }),\n [search]\n );\n\n useEffect(() => {\n if (menuId) {\n openTab({\n key: menuId,\n dynamicTitle: dynamicLabel,\n });\n }\n }, [dynamicLabel, 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(`${kv[key].key}?menuId=${kv[key].key}`);\n },\n [kv, navigate]\n );\n const tabPanel = useMemo(() => {\n return tabs.map(({ key, icon, i18n, dynamicTitle, closable }: TabItem) => {\n return {\n key,\n label: (\n <Dropdown\n menu={{\n items: getItems(key),\n onClick: (info) => {\n info.domEvent.stopPropagation();\n closedTab(key, info.key as CloseTab);\n },\n }}\n trigger={['contextMenu']}\n destroyPopupOnHide\n >\n <div>\n {icon}\n {t[i18n || `route-${key}`] + (dynamicTitle || '')}\n </div>\n </Dropdown>\n ),\n 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","kv","t","outlet","navigate","dropScope","search","collapsed","setCollapsed","handleCollapsed","value","_timer","window","setTimeout","clearTimeout","closedTab","tabKey","type","closes","next","forEach","item","path","menuId","get","dynamicLabel","dynamicTitle","getItems","filter","i","handleTabEdit","targetKey","action","handleClick","tabPanel","map","i18n","closable","items","onClick","info","domEvent","stopPropagation","trigger","destroyPopupOnHide","div","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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"}
|