@moneko/core 2.0.24 → 2.0.25
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/envFlags.js +1 -1
- package/lib/components/common-entry.d.ts +4 -0
- package/lib/components/common-entry.js +1 -0
- package/lib/components/iconfont.d.ts +14 -0
- package/lib/components/iconfont.js +1 -0
- package/lib/components/layout-menu.js +1 -1
- package/lib/index.d.ts +4 -3
- package/lib/index.js +1 -1
- package/lib/localizable.d.ts +3 -6
- package/lib/localizable.js +1 -1
- package/lib/menu.d.ts +15 -6
- package/lib/menu.js +1 -1
- package/lib/packages/back-stage/app.js +1 -1
- package/lib/packages/back-stage/index.d.ts +1 -3
- package/lib/packages/back-stage/index.js +1 -1
- package/lib/packages/back-stage/layout.js +1 -1
- package/lib/packages/library/index.d.ts +1 -3
- package/lib/packages/library/index.js +1 -1
- package/lib/packages/mobile/bootstrap.d.ts +1 -0
- package/lib/packages/mobile/bootstrap.js +1 -0
- package/lib/packages/mobile/index.d.ts +2 -2
- package/lib/packages/mobile/index.js +1 -1
- package/lib/packages/single-spa/app.js +1 -1
- package/lib/packages/site/index.d.ts +1 -3
- package/lib/packages/site/index.js +1 -1
- package/lib/persistentKey.d.ts +18 -0
- package/lib/persistentKey.js +1 -0
- package/lib/router/index.d.ts +1 -1
- package/lib/styles/normalize.css +12 -0
- package/package.json +2 -2
- package/typings/global.d.ts +15 -0
- package/lib/utils/index.d.ts +0 -12
- package/lib/utils/index.js +0 -1
package/build/envFlags.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return N}});var e=c(require("fs")),r=c(require("path")),t=require("./common"),i=require("./coverage"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return N}});var e=c(require("fs")),r=c(require("path")),t=require("./common"),i=require("./coverage"),n=c(require("./html-plugin-option")),a=require("./process-env"),o=require("./utils");function s(){return(s=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])}return e}).apply(this,arguments)}function c(e){return e&&e.__esModule?e:{default:e}}var f=parseFloat(a.hasReact?require("react/package.json").version:"18")>=18?"react-dom/client":"react-dom",u="library"===a.APPTYPE?"site":"src",l=!1;try{var O=r.default.join(a.PROGRAMPATH,"./src/index.ts");e.default.accessSync(O,e.default.constants.R_OK),l=O}catch(e){l=!1}var N={projectName:JSON.stringify((0,o.toUpperCaseString)(a.PACKAGENAME)),projectCoverage:JSON.stringify(i.coverage),providerConfig:JSON.stringify({prefixCls:t.CONFIG.prefixCls,iconPrefixCls:t.CONFIG.prefixCls+"-icon",theme:t.CONFIG.theme}),fallbackCompPath:JSON.stringify(t.CONFIG.fallbackCompPath),ReactDOMPath:JSON.stringify(f),favicon:JSON.stringify(n.default.favicon),hasLocales:JSON.stringify(e.default.existsSync(r.default.join(a.PROGRAMPATH,"./"+u+"/locales"))),layoutSider:JSON.stringify(t.CONFIG.layoutSider),hasAntd:JSON.stringify(a.hasAntd),APPTYPE:JSON.stringify(a.APPTYPE),APPENTRY:JSON.stringify(l),programInfo:JSON.stringify(s({},a.programInfo,{routeBaseName:t.CONFIG.routeBaseName,designSize:t.CONFIG.designSize,routerMode:t.CONFIG.routerMode,renderMode:t.CONFIG.mode})),"process.env":JSON.stringify(s({NODE_ENV:a.NODE_ENV,iconfont:t.CONFIG.iconfont},t.CONFIG.env))};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../utils/refresh-rem";import"../styles/normalize.css";var r=await import("../packages/"+APPTYPE+"/bootstrap");export default r;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface IconFontOption {
|
|
3
|
+
scriptUrl?: string | string[];
|
|
4
|
+
extraCommonProps?: Record<string, any>;
|
|
5
|
+
}
|
|
6
|
+
interface IconBaseProps extends React.HTMLProps<HTMLSpanElement> {
|
|
7
|
+
spin?: boolean;
|
|
8
|
+
rotate?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface IconFontProps<T extends string = string> extends IconBaseProps {
|
|
11
|
+
type: T;
|
|
12
|
+
}
|
|
13
|
+
declare const _default: React.FC<import("@ant-design/icons/lib/components/IconFont").IconFontProps<string>>;
|
|
14
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"react";import{createFromIconfontCN as o}from"@ant-design/icons";export default o(process.env.iconfont||{});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(){return(e=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}import n,{
|
|
1
|
+
function e(){return(e=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}import n,{isValidElement as t,useCallback as r,useEffect as o,useMemo as l}from"react";import{classNames as a}from"@moneko/common";import{Menu as i}from"antd";import{useSearchParams as c,Link as u}from"react-router-dom";import m from"./iconfont";import p from"../localizable";import d,{expandMenu as f}from"../menu";export default n.memo(function(s){var y=s.collapsed,v=function(e,n){if(null==e)return{};var t,r,o={},l=Object.keys(e);for(r=0;r<l.length;r++)n.indexOf(t=l[r])>=0||(o[t]=e[t]);return o}(s,["collapsed"]),h=d.menus,b=d.kv,g=d.activeKey,K=d.expandKey,O=p.t,I=c()[0],k=r(function(e){return e.map(function(e){var r=e.icon,o=e.itemIcon,l=e.disabled,a=e.type,i=e.key,c=e.path,p=e.label,d=e.children,f=O[p],s=Array.isArray(d)?k(d):d;return Object.assign({path:c,type:a,disabled:l,key:i,itemIcon:t(o)?o:o?n.createElement(m,{type:o}):null,icon:t(r)?r:r?n.createElement(m,{type:r}):null,label:!c||(null==s?void 0:s.length)?f:n.createElement(u,{preventScrollReset:!0,to:i+"?menuId="+i},f)},(null==s?void 0:s.length)&&{children:s})})},[O]),x=l(function(){return I.get("menuId")},[I]),j=l(function(){return k(h.filter(function(e){return!e.hideMenu}))},[k,h]),E=l(function(){return g?[g]:[]},[g]);return o(function(){var e=x&&b[x];if(e&&!y&&d.expandKey){var n=[].concat(d.expandKey);n.includes(x)||n.push(x),e.parentId&&!n.includes(e.parentId)&&n.push(e.parentId),f(n)}},[y,x,b]),o(function(){x!==g&&x&&(d.activeKey=x)},[g,x]),n.createElement(i,e({defaultSelectedKeys:E,selectedKeys:E,defaultOpenKeys:K,openKeys:y?void 0:K,onOpenChange:f,mode:"inline",subMenuCloseDelay:0,triggerSubMenuAction:"click",items:j},v,{className:a("layout-menu",v.className)}))});
|
package/lib/index.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
export * from './prefix/react-router-dom.js';
|
|
3
|
-
export * from './utils';
|
|
4
3
|
export { pathToRegexp } from 'path-to-regexp';
|
|
5
4
|
export { default as sso } from 'shared-store-object';
|
|
6
|
-
export { localizable, setLanguage, interpolateString,
|
|
5
|
+
export { default as localizable, setLanguage, interpolateString, type LocaleConfig, type LocaleName, } from './localizable';
|
|
7
6
|
export { matchUtil, router, onlyLoginRouter, myPkgs, myDemoKv, mdxComponents, type ExampleModule, type RouterProps, type MyPkg, } from './router';
|
|
8
|
-
export {
|
|
7
|
+
export { default as persistentKey } from './persistentKey';
|
|
8
|
+
export { default as menu, addTab, closeTab, openTab, setMenu, expandMenu, type TabItem, type MenuItem, type CloseTab, } from './menu';
|
|
9
9
|
export type { LayoutMenuProps } from './components/layout-menu';
|
|
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;
|
|
13
|
+
export declare const IconFont: any;
|
|
13
14
|
export type { ConfigType, AppType, CommomType, ProgramInfoType, MemberTransformer, CoverageType, TerserOptions, MinifierType, SourceMapDevToolPluginOptions, ProjectCoverageType, SharedConfig, SwcOptions, OptimizationSplitChunksOptions, SwcImportOnDemandTransform, Theme, } from '../typings/global';
|
|
14
15
|
import type { ConfigType, CommomType, CoverageType, ProjectCoverageType } from '../typings/global';
|
|
15
16
|
export type PartialConfigType<T = 'swc'> = Partial<ConfigType<T>>;
|
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./prefix/react-router-dom.js";export
|
|
1
|
+
export*from"./prefix/react-router-dom.js";export{pathToRegexp}from"path-to-regexp";export{default as sso}from"shared-store-object";export{default as localizable,setLanguage,interpolateString}from"./localizable";export{matchUtil,router,onlyLoginRouter,myPkgs,myDemoKv,mdxComponents}from"./router";export{default as persistentKey}from"./persistentKey";export{default as menu,addTab,closeTab,openTab,setMenu,expandMenu}from"./menu";export{createRouter,prefixRouter,routerData,RouterFragment}from"./components/app-router";export var LayoutMenu=hasAntd?require("./components/layout-menu").default:null;export var DashboardLayout=hasAntd?require("./packages/back-stage/layout").default:null;export var IconFont=hasAntd?require("./components/iconfont").default:null;export var projectBasicInfo={projectName:projectName,providerConfig:providerConfig,programInfo:programInfo,coverage:projectCoverage};
|
package/lib/localizable.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { ReactNode } from 'react';
|
|
2
1
|
export type LocaleName = 'ar_EG' | 'az_AZ' | 'bg_BG' | 'bn_BD' | 'by_BY' | 'ca_ES' | 'cs_CZ' | 'da_DK' | 'de_DE' | 'el_GR' | 'en_GB' | 'en_US' | 'es_ES' | 'et_EE' | 'fa_IR' | 'fi_FI' | 'fr_BE' | 'fr_CA' | 'fr_FR' | 'ga_IE' | 'gl_ES' | 'he_IL' | 'hi_IN' | 'hr_HR' | 'hu_HU' | 'hy_AM' | 'id_ID' | 'is_IS' | 'it_IT' | 'ja_JP' | 'ka_GE' | 'kk_KZ' | 'kmr_IQ' | 'km_KH' | 'kn_IN' | 'ko_KR' | 'ku_IQ' | 'lt_LT' | 'lv_LV' | 'mk_MK' | 'ml_IN' | 'mn_MN' | 'ms_MY' | 'nb_NO' | 'ne_NP' | 'nl_BE' | 'nl_NL' | 'pl_PL' | 'pt_BR' | 'pt_PT' | 'ro_RO' | 'ru_RU' | 'sk_SK' | 'sl_SI' | 'sr_RS' | 'sv_SE' | 'ta_IN' | 'th_TH' | 'tr_TR' | 'uk_UA' | 'ur_PK' | 'vi_VN' | 'zh_CN' | 'zh_HK' | 'zh_TW';
|
|
3
2
|
export type LocaleConfig = {
|
|
4
3
|
/** 语言名称 (未设置时使用文件名)*/
|
|
@@ -6,16 +5,14 @@ export type LocaleConfig = {
|
|
|
6
5
|
/** 描述 */
|
|
7
6
|
title: string;
|
|
8
7
|
/** Icon */
|
|
9
|
-
icon?:
|
|
8
|
+
icon?: string;
|
|
10
9
|
/** 翻译字典 */
|
|
11
10
|
translation: Record<string, string>;
|
|
12
11
|
};
|
|
13
12
|
interface Locale extends LocaleConfig {
|
|
14
13
|
language: LocaleName;
|
|
15
14
|
}
|
|
16
|
-
|
|
17
|
-
export declare const localizablePersistenceKey = "localizable.language";
|
|
18
|
-
export declare const localizable: {
|
|
15
|
+
declare const localizable: {
|
|
19
16
|
/** 使用的语言 */
|
|
20
17
|
language: LocaleName;
|
|
21
18
|
/** 获取本地化文本 */
|
|
@@ -52,4 +49,4 @@ type InterpolationType<T extends string> = {
|
|
|
52
49
|
* @returns {string} 替换后的字符串
|
|
53
50
|
*/
|
|
54
51
|
export declare function interpolateString<T extends string>(str: string, values: InterpolationType<T>): string;
|
|
55
|
-
export
|
|
52
|
+
export default localizable;
|
package/lib/localizable.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{persistence as
|
|
1
|
+
import{persistence as t}from"@moneko/common";import n from"shared-store-object";import e from"./persistentKey";var a,o={keys:function(){return[]}};try{o=hasLocales?require.context("@/locales/",!0,/\.(t|j)s$/):{keys:function(){return[]}}}catch(t){console.warn(t)}var r={},l=[];null==o.keys||null==(a=o.keys())||a.map(function(t,n){var e=o(t).default;if(e&&"[object Object]"===Object.prototype.toString.call(e)){var a=e.language,i=void 0===a?t.replace(/(.*\/)*([^.]+).*/gi,"$2"):a,c=e.title,u=void 0===c?i:c,s=e.icon,g=e.translation;0===n&&l.splice(0),l.push({language:i,title:u,icon:s}),r[i]={language:i,title:u,icon:s,translation:new Proxy(void 0===g?{}:g,{get:function(t,n){return t[n]||n}})}}e=null});var i=t.load(e.language,"zh_CN"),c=Object.assign({title:"简体中文",language:"zh_CN",translation:{}},r[i]||r.zh_CN),u=n({language:i,t:c.translation,locales:l});export function setLanguage(t){var n;u.language=t,u.t=(null==(n=r[t])?void 0:n.translation)||c.translation}export function interpolateString(t,n){return t.replace(/\${\w+}/g,function(t){var e=n[t.slice(2,-1)];return void 0!==e?e.toString():""})}export default u;
|
package/lib/menu.d.ts
CHANGED
|
@@ -6,7 +6,6 @@ export interface TabItem extends RouterProps {
|
|
|
6
6
|
url?: string;
|
|
7
7
|
path?: string;
|
|
8
8
|
closable?: boolean;
|
|
9
|
-
icon?: ReactNode;
|
|
10
9
|
label?: ReactNode;
|
|
11
10
|
dynamicTitle?: string;
|
|
12
11
|
}
|
|
@@ -18,20 +17,23 @@ export interface MenuItem extends RouterProps {
|
|
|
18
17
|
[key: string]: any;
|
|
19
18
|
}
|
|
20
19
|
type ClosedCallback = (closes?: TabItem[], next?: TabItem) => void;
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
export declare const menu: {
|
|
20
|
+
/** Menu Store */
|
|
21
|
+
declare const menu: {
|
|
24
22
|
/** 当前菜单 */
|
|
25
23
|
activeKey: string;
|
|
24
|
+
/** 展开菜单的key[] */
|
|
25
|
+
expandKey: string[];
|
|
26
26
|
/** 当前用户可访问的菜单列表 */
|
|
27
27
|
menus: MenuItem[];
|
|
28
28
|
/** 菜单列表的kv数据, 根据menus自动生成 */
|
|
29
29
|
kv: Record<string, MenuItem>;
|
|
30
30
|
/** 选项卡数据 */
|
|
31
31
|
tabs: TabItem[];
|
|
32
|
-
} & (<K extends "activeKey" | "menus" | "kv" | "tabs">(key: K, updater: (val: {
|
|
32
|
+
} & (<K extends "activeKey" | "expandKey" | "menus" | "kv" | "tabs">(key: K, updater: (val: {
|
|
33
33
|
/** 当前菜单 */
|
|
34
34
|
activeKey: string;
|
|
35
|
+
/** 展开菜单的key[] */
|
|
36
|
+
expandKey: string[];
|
|
35
37
|
/** 当前用户可访问的菜单列表 */
|
|
36
38
|
menus: MenuItem[];
|
|
37
39
|
/** 菜单列表的kv数据, 根据menus自动生成 */
|
|
@@ -41,6 +43,8 @@ export declare const menu: {
|
|
|
41
43
|
}[K]) => {
|
|
42
44
|
/** 当前菜单 */
|
|
43
45
|
activeKey: string;
|
|
46
|
+
/** 展开菜单的key[] */
|
|
47
|
+
expandKey: string[];
|
|
44
48
|
/** 当前用户可访问的菜单列表 */
|
|
45
49
|
menus: MenuItem[];
|
|
46
50
|
/** 菜单列表的kv数据, 根据menus自动生成 */
|
|
@@ -70,4 +74,9 @@ export declare function openTab(tab: TabItem): void;
|
|
|
70
74
|
* @constructor
|
|
71
75
|
*/
|
|
72
76
|
export declare function closeTab(key: string, type: CloseTab | undefined, callback: ClosedCallback): void;
|
|
73
|
-
|
|
77
|
+
/** 展开菜单
|
|
78
|
+
* @param {string} keys 展开菜单的key[]
|
|
79
|
+
* @returns {void}
|
|
80
|
+
*/
|
|
81
|
+
export declare function expandMenu(keys: string[]): void;
|
|
82
|
+
export default menu;
|
package/lib/menu.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(e,r){(null==r||r>e.length)&&(r=e.length);for(var
|
|
1
|
+
function e(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function r(){return(r=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function t(e,r){if(null==e)return{};var t,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}import{isEqual as n,isFunction as o,persistence as a}from"@moneko/common";import i from"shared-store-object";import u from"./persistentKey";var l=a.load,f=i({activeKey:l(u.menuActiveKey,"home"),expandKey:l(u.menuExpandKey,[]),menus:l(u.menuMenus,[]),kv:l(u.menuKv,{}),tabs:l(u.menuTabs,[])}),c=function(e,r){if(void 0===r&&(r=[]),0===e.length)return r;var n=e[0],o=n.children,a=void 0===o?[]:o,i=n.i18n,u=n.label,l=n.hideMenu,f=t(n,["children","i18n","label","hideMenu"]),s=Object.create(null);return Object.assign(s,f,{label:i||u,props:void 0,element:void 0}),a.length&&(s.children=c(a)),l||r.push(s),c(e.slice(1),r)},s=function(e,r){for(var n,o=function(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=unsupportedIterableToArray(e))){t&&(e=t);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e);!(n=o()).done;){var a=n.value,i=a.children,u=t(a,["children"]);r[a.key]=u,(null==i?void 0:i.length)&&s(i,r)}};export function setMenu(e){var r=c(e),t={};s(r,t),f.menus=r,f.kv=t}export function addTab(t){var o=f.kv[t.key];if(o&&!f.tabs.find(function(e){return e.key===t.key})){var a,i=((function(r){if(Array.isArray(r))return e(r)})(a=f.tabs)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(a)||function(r,t){if(r){if("string"==typeof r)return e(r,t);var n=Object.prototype.toString.call(r).slice(8,-1);if("Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return e(r,t)}}(a)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).concat([r({},o,{i18n:o.i18n||"route-"+o.key},t)]);n(i,f.tabs)||(f.tabs=i)}}export function openTab(e){f.activeKey=e.key,addTab(e)}export function closeTab(e,r,t){if(void 0===r&&(r="self"),e){for(var n=f.tabs,a=f.activeKey,i=[],u=[],l=null,c="self"===r,s=n.findIndex(function(r){return r.key===e}),y=0,d=n.length;y<d;y++){var b,p=n[y],v=(b=y,!1===p.closable||({left:b>=s,right:b<=s,other:b===s,self:e!==p.key})[r]);if(c){if(!v&&e===a){var m=y?y-1:y+1;n[m]&&(a=n[m].key,l=n[m])}}else v&&p.key===e&&a!==e&&(a=e,l=p);v||i.push(p),v&&u.push(p)}if(f.tabs=u,f.activeKey=a,o(t)){t(i,l);return}}}export function expandMenu(e){n(e,f.expandKey)||(f.expandKey=e)}export default f;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(){return(e=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var o=arguments[r];for(var t in o)Object.prototype.hasOwnProperty.call(o,t)&&(e[t]=o[t])}return e}).apply(this,arguments)}
|
|
1
|
+
function e(){return(e=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var o=arguments[r];for(var t in o)Object.prototype.hasOwnProperty.call(o,t)&&(e[t]=o[t])}return e}).apply(this,arguments)}import r,{useMemo as o}from"react";import{ConfigProvider as t}from"antd";import a from"antd/es/locale/en_US";import l from"antd/es/locale/zh_CN";import n from"dayjs";import i from"dayjs/plugin/relativeTime";import{RouterProvider as m}from"react-router-dom";import{createRouter as p,prefixRouter as f,routerData as c,RouterFragment as s}from"../../components/app-router";import u from"../../components/fallback";import d from"../../localizable";import{onlyLoginRouter as g}from"../../router";import"dayjs/locale/zh.js";import"dayjs/locale/en.js";import{global as h}from"@/store";var v={zh_CN:l,en_US:a};n.extend(i),t.config({prefixCls:providerConfig.prefixCls,iconPrefixCls:providerConfig.iconPrefixCls,theme:providerConfig.theme});export default function(){var a=h.isLogin,n=d.language,i=d.t,C=o(function(){return e({validateMessages:{required:""+i["ph:please-fill"]+"${label}!",types:{email:"${label}"+i["wrong-format"]},pattern:{mismatch:""+i["ph:fill-correct"]+"${label}!"}},locale:v[n]||l},providerConfig)},[n,i]);return r.createElement(s,null,r.createElement(t,e({},C),r.createElement(m,{router:p(a?c:f(g,r.createElement(u,null)),{basename:programInfo.routeBaseName,window:window}),fallbackElement:r.createElement(u,null)})))};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../../
|
|
1
|
+
import o from"../../components/common-entry";export default o;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function n(){return(n=Object.assign||function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(n[o]=t[o])}return n}).apply(this,arguments)}function e(){var n,t,o=(n=["\n .",", ."," {\n z-index: 2;\n }\n ."," {\n position: sticky;\n top: 64px;\n overflow: initial !important;\n margin: 16px 16px 0 !important;\n\n > .","-tabs-nav {\n .","-tabs-tab {\n border-color: var(--border-color, rgb(5 5 5 / 6%)) !important;\n border-bottom-color: var(--border-color, rgb(5 5 5 / 6%)) !important;\n border-radius: var(--border-radius) !important;\n backdrop-filter: blur(16px);\n background-color: rgba(255, 255, 255, 0.8);\n &.","-tabs-tab-active {\n background-color: rgba(255, 255, 255, 0.9);\n }\n }\n\n &::before {\n content: none;\n }\n }\n }\n ."," {\n width: 100% !important;\n min-height: 100vh !important;\n }\n .",", ."," {\n overflow-y: auto;\n max-height: 100vh;\n }\n ."," {\n overflow-y: auto;\n }\n ."," {\n overflow-y: auto;\n }\n ."," {\n display: flex;\n margin: 0 16px;\n flex-direction: column;\n z-index: 1;\n }\n ."," {\n border-radius: var(--border-radius);\n padding: 24px;\n background: var(--component-card-bg, #fff);\n box-shadow: var(--box-shadow-lite);\n flex: 1;\n transition-property: background-color, box-shadow;\n }\n .",", .",", ."," > svg {\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n }\n ."," {\n position: sticky;\n top: 0;\n z-index: 1;\n display: flex;\n gap: 10px;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n padding: 14px;\n height: 68px;\n text-align: center;\n color: #de4553;\n transition-property: background-color, border-color;\n cursor: pointer;\n user-select: none;\n\n > svg,\n &::before {\n transition-property: opacity;\n }\n\n > svg {\n height: 32px;\n opacity: 0;\n }\n\n &::before {\n display: block;\n width: 22px;\n height: 32px;\n background: url(",") no-repeat center center / contain;\n opacity: 1;\n content: '';\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n }\n }\n"],t||(t=n.slice(0)),n.raw=t,n);return e=function(){return o},o}import t,{useCallback as o,useEffect as r,useMemo as i,useState as a}from"react";import{ReloadOutlined as
|
|
1
|
+
function n(){return(n=Object.assign||function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(n[o]=t[o])}return n}).apply(this,arguments)}function e(){var n,t,o=(n=["\n .",", ."," {\n z-index: 2;\n }\n ."," {\n position: sticky;\n top: 64px;\n overflow: initial !important;\n margin: 16px 16px 0 !important;\n\n > .","-tabs-nav {\n .","-tabs-tab {\n border-color: var(--border-color, rgb(5 5 5 / 6%)) !important;\n border-bottom-color: var(--border-color, rgb(5 5 5 / 6%)) !important;\n border-radius: var(--border-radius) !important;\n backdrop-filter: blur(16px);\n background-color: rgba(255, 255, 255, 0.8);\n &.","-tabs-tab-active {\n background-color: rgba(255, 255, 255, 0.9);\n }\n }\n\n &::before {\n content: none;\n }\n }\n }\n ."," {\n width: 100% !important;\n min-height: 100vh !important;\n }\n .",", ."," {\n overflow-y: auto;\n max-height: 100vh;\n }\n ."," {\n overflow-y: auto;\n }\n ."," {\n overflow-y: auto;\n }\n ."," {\n display: flex;\n margin: 0 16px;\n flex-direction: column;\n z-index: 1;\n }\n ."," {\n border-radius: var(--border-radius);\n padding: 24px;\n background: var(--component-card-bg, #fff);\n box-shadow: var(--box-shadow-lite);\n flex: 1;\n transition-property: background-color, box-shadow;\n }\n .",", .",", ."," > svg {\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n }\n ."," {\n position: sticky;\n top: 0;\n z-index: 1;\n display: flex;\n gap: 10px;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n padding: 14px;\n height: 68px;\n text-align: center;\n color: #de4553;\n transition-property: background-color, border-color;\n cursor: pointer;\n user-select: none;\n\n > svg,\n &::before {\n transition-property: opacity;\n }\n\n > svg {\n height: 32px;\n opacity: 0;\n }\n\n &::before {\n display: block;\n width: 22px;\n height: 32px;\n background: url(",") no-repeat center center / contain;\n opacity: 1;\n content: '';\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n }\n }\n"],t||(t=n.slice(0)),n.raw=t,n);return e=function(){return o},o}import t,{useCallback as o,useEffect as r,useMemo as i,useState as a,isValidElement as l}from"react";import{ReloadOutlined as c,DeleteRowOutlined as m,CloseOutlined as s}from"@ant-design/icons";import{css as u,injectGlobal as d}from"@emotion/css";import{Tabs as p,Layout as f,Dropdown as b}from"antd";import{useAliveController as y}from"react-activation";import{useSearchParams as g,useOutlet as v,useNavigate as h}from"react-router-dom";import k from"../../components/fallback-comp";import x from"../../components/iconfont";import w from"../../components/layout-menu";import E from"../../localizable";import N,{openTab as T,closeTab as C}from"../../menu";var I=providerConfig.prefixCls,S=function(n){return I+"-dashboard-"+n},j={tabs:S("tabs"),layout:S("layout"),sider:S("sider"),header:S("header"),logo:S("logo"),section:S("section"),content:S("content"),view:S("view")},z=u(e(),j.header,j.tabs,j.tabs,I,I,I,j.layout,j.sider,j.section,j.section,j.sider,j.content,j.view,j.view,j.logo,j.logo,j.logo,require(favicon));d([z]);var O=[{label:"关闭左侧标签",icon:t.createElement(m,{style:{transform:"scaleX(-1)"}}),key:"left"},{label:"关闭右侧标签",icon:t.createElement(m,null),key:"right"},{label:"关闭其他标签",icon:t.createElement(s,null),key:"other"},{label:"刷新标签页",icon:t.createElement(c,null),key:"refresh"}];export default function(e){var c=e.children,m=N.activeKey,s=N.tabs,u=N.kv,d=E.t,I=v(),S=h(),z=y().dropScope,P=g()[0],K=a(!1),L=K[0],q=K[1],A=o(function(n){if(n)var e=window.setTimeout(function(){q(n),window.clearTimeout(e),e=null},0);else{q(n);var t=window.setTimeout(function(){window.clearTimeout(t),t=null},30)}},[]),B=o(function(n,e){if("refresh"===e){S("/refresh");return}n&&C(n,e,function(n,e){null==n||n.forEach(function(n){n.path&&z&&z(n.path)}),e&&S(e.path+"?menuId="+e.key)})},[z,S]),H=i(function(){return{menuId:P.get("menuId"),dynamicLabel:P.get("dynamicTitle")||""}},[P]),M=H.menuId,X=H.dynamicLabel;r(function(){M&&u[M]&&T({key:M,dynamicTitle:X})},[X,u,M]);var D=o(function(n){return n===m?O:O.filter(function(n){return(null==n?void 0:n.key)!=="refresh"})},[m]),F=o(function(n,e){"remove"===e&&"string"==typeof n&&B(n)},[B]),G=o(function(n){S(u[n].key+"?menuId="+u[n].key)},[u,S]),J=i(function(){return s.map(function(n){var e=n.key,o=n.icon,r=n.label,i=n.dynamicTitle,a=n.closable;return{key:e,label:t.createElement(b,{menu:{items:D(e),onClick:function(n){n.domEvent.stopPropagation(),B(e,n.key)}},trigger:["contextMenu"],destroyPopupOnHide:!0},t.createElement("div",null,l(o)?o:o?t.createElement(x,{type:o}):null,d[r||"route-"+e]+(i||""))),closable:a}})},[B,D,d,s]);return t.createElement(f,{className:j.layout},layoutSider?t.createElement(f.Sider,n({className:j.sider,trigger:null,collapsible:!0,collapsed:L,onBreakpoint:function(n){return A(n)},onCollapse:function(n){return A(n)},theme:"light",breakpoint:"md"},layoutSider),t.createElement("div",{className:j.logo,"data-title":projectName},t.createElement(k,{compName:"logo",show:!L})),t.createElement(w,{collapsed:L,theme:layoutSider.theme})):null,t.createElement(f,{className:j.section},t.createElement(k,{compName:"layout-header",className:j.header,collapsed:L,onCollapsed:function(){return A(!L)}}),t.createElement(p,{className:j.tabs,hideAdd:!0,onTabClick:G,activeKey:m,type:"editable-card",onEdit:F,items:J,animated:!0}),t.createElement(f.Content,{className:j.content},t.createElement("div",{className:j.view},c||I),t.createElement(k,{compName:"layout-footer"}))))};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../../
|
|
1
|
+
import o from"../../components/common-entry";export default o;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import o from"react";import{isFunction as e}from"@moneko/common";import t from"./app";var r=APPENTRY?require(APPENTRY):null,n=require(ReactDOMPath),l=parseFloat(o.version),a=document.getElementById("root"),m=function(){e(null==r?void 0:r.bootstrap)&&(null==r||r.bootstrap()),l>=18?"ssr"===programInfo.renderMode?window.rootInstance=n.hydrateRoot(a,o.createElement(t,null)):(window.rootInstance=n.createRoot(a),window.rootInstance.render(o.createElement(t,null))):(module.hot?n.render:n.hydrate)(o.createElement(t,null),a),e(null==r?void 0:r.mount)&&(null==r||r.mount())};window.H5RemoteRuntime={bootstrap:m},m();
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import '../../
|
|
2
|
-
|
|
1
|
+
import bootstrap from '../../components/common-entry';
|
|
2
|
+
export default bootstrap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import o from"../../components/common-entry";export default o;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e,{useEffect as o}from"react";import{RouterProvider as r}from"react-router-dom";import{RouterFragment as a,routerData as t,createRouter as n}from"../../components/app-router";import m from"../../components/fallback";import
|
|
1
|
+
import e,{useEffect as o}from"react";import{RouterProvider as r}from"react-router-dom";import{RouterFragment as a,routerData as t,createRouter as n}from"../../components/app-router";import m from"../../components/fallback";import l,{setLanguage as c}from"../../localizable";export default function(f){var i=f.basename,u=void 0===i?programInfo.routeBaseName:i,p=f.fallback,b=void 0===p?e.createElement(m,null):p,d=f.language,g=l.language;return o(function(){d&&d!==g&&c(d)},[d,g]),e.createElement(a,null,e.createElement(r,{router:n(t,{basename:u,window:window}),fallbackElement:b}))};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../../
|
|
1
|
+
import o from"../../components/common-entry";export default o;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
type Persistent = {
|
|
2
|
+
/** 当前菜单 */
|
|
3
|
+
menuActiveKey: 'menu.activeKey';
|
|
4
|
+
/** 展开菜单 */
|
|
5
|
+
menuExpandKey: 'menu.expandKey';
|
|
6
|
+
/** 当前用户可访问的菜单列表 */
|
|
7
|
+
menuMenus: 'menu.menus';
|
|
8
|
+
/** 菜单列表的kv数据 */
|
|
9
|
+
menuKv: 'menu.kv';
|
|
10
|
+
/** 选项卡数据 */
|
|
11
|
+
menuTabs: 'menu.tabs';
|
|
12
|
+
/** 使用的语言 */
|
|
13
|
+
language: 'localizable.language';
|
|
14
|
+
[key: string]: string;
|
|
15
|
+
};
|
|
16
|
+
/** 数据持久化key字典 */
|
|
17
|
+
declare const persistentKey: Persistent;
|
|
18
|
+
export default persistentKey;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default{menuActiveKey:"menu.activeKey",menuExpandKey:"menu.expandKey",menuMenus:"menu.menus",menuKv:"menu.kv",menuTabs:"menu.tabs",language:"localizable.language"};
|
package/lib/router/index.d.ts
CHANGED
package/lib/styles/normalize.css
CHANGED
|
@@ -18,6 +18,18 @@ body {
|
|
|
18
18
|
transition-timing-function: var(--transition-timing-function);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
html::after {
|
|
22
|
+
position: fixed;
|
|
23
|
+
top: 0;
|
|
24
|
+
left: 0;
|
|
25
|
+
z-index: 99999999999;
|
|
26
|
+
width: 100vw;
|
|
27
|
+
height: 100vh;
|
|
28
|
+
content: '';
|
|
29
|
+
pointer-events: none;
|
|
30
|
+
background-image: var(--watermark);
|
|
31
|
+
}
|
|
32
|
+
|
|
21
33
|
#root {
|
|
22
34
|
display: flex;
|
|
23
35
|
flex-direction: column;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moneko/core",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.25",
|
|
4
4
|
"description": "core",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"@emotion/css": "11.10.6",
|
|
19
19
|
"@mapbox/rehype-prism": "0.8.0",
|
|
20
20
|
"@mdx-js/loader": "2.3.0",
|
|
21
|
-
"@moneko/common": "1.0.
|
|
21
|
+
"@moneko/common": "1.0.18",
|
|
22
22
|
"@parcel/css": "1.14.0",
|
|
23
23
|
"@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
|
|
24
24
|
"@soda/friendly-errors-webpack-plugin": "1.8.1",
|
package/typings/global.d.ts
CHANGED
|
@@ -113,6 +113,21 @@ export declare type ConfigType<T = 'tsc'> = {
|
|
|
113
113
|
theme?: 'light' | 'dark';
|
|
114
114
|
breakpoint?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
|
|
115
115
|
};
|
|
116
|
+
/** iconfont图标设置 */
|
|
117
|
+
iconfont?: {
|
|
118
|
+
/** 图标加载地址
|
|
119
|
+
* @example
|
|
120
|
+
* iconfont: {
|
|
121
|
+
* scriptUrl: [
|
|
122
|
+
* '//at.alicdn.com/t/font_2632005_n3kt9cjpzn.js', // icon one
|
|
123
|
+
* '//at.alicdn.com/t/font_2446726_525dowa25vp.js', // icon two
|
|
124
|
+
* ]
|
|
125
|
+
* }
|
|
126
|
+
*/
|
|
127
|
+
scriptUrl?: string | string[];
|
|
128
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
129
|
+
extraCommonProps?: Record<string, any>;
|
|
130
|
+
};
|
|
116
131
|
/** 主题设置 */
|
|
117
132
|
theme?: Theme;
|
|
118
133
|
/** 自定义 webpack module rules */
|
package/lib/utils/index.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export type WatermarkParamsType = {
|
|
2
|
-
x?: number;
|
|
3
|
-
y?: number;
|
|
4
|
-
width?: number;
|
|
5
|
-
height?: number;
|
|
6
|
-
fontSize?: number;
|
|
7
|
-
angle?: number;
|
|
8
|
-
opacity?: number;
|
|
9
|
-
color?: string;
|
|
10
|
-
fontFamily?: string;
|
|
11
|
-
};
|
|
12
|
-
export declare const watermark: (text: string, c?: WatermarkParamsType) => string;
|
package/lib/utils/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{stringToBase64Url as o}from"@moneko/common";export var watermark=function(t,i){var e=i||{},n=e.x,a=e.y,r=e.width,d=void 0===r?100:r,m=e.height,v=void 0===m?100:m,s=e.fontSize,l=e.angle,g=e.opacity,f=e.color,h=e.fontFamily;return"data:image/svg+xml;base64,"+o('<svg xmlns="http://www.w3.org/2000/svg" width="'+d+'" height="'+v+'"><text text-anchor="middle" dominant-baseline="middle" fill="none" stroke-opacity="'+(void 0===g?.05:g)+'" stroke="'+(void 0===f?"#000":f)+'" x="'+(void 0===n?50:n)+'" y="'+(void 0===a?50:a)+'" font-size="'+(void 0===s?14:s)+'" font-family="'+(void 0===h?"PingFangSC-Ultralight,sans-serif":h)+'" \n transform="rotate('+(void 0===l?-45:l)+" "+d/2+" "+v/2+')">'+t+"</text></svg>")};
|