@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 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"),a=c(require("./html-plugin-option")),n=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(n.hasReact?require("react/package.json").version:"18")>=18?"react-dom/client":"react-dom",u="library"===n.APPTYPE?"site":"src",l=!1;try{var O=r.default.join(n.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)(n.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(a.default.favicon),hasLocales:JSON.stringify(e.default.existsSync(r.default.join(n.PROGRAMPATH,"./"+u+"/locales"))),layoutSider:JSON.stringify(t.CONFIG.layoutSider),hasAntd:JSON.stringify(n.hasAntd),APPTYPE:JSON.stringify(n.APPTYPE),APPENTRY:JSON.stringify(l),programInfo:JSON.stringify(s({},n.programInfo,{routeBaseName:t.CONFIG.routeBaseName,designSize:t.CONFIG.designSize,routerMode:t.CONFIG.routerMode,renderMode:t.CONFIG.mode})),"process.env":JSON.stringify(s({NODE_ENV:n.NODE_ENV},t.CONFIG.env))};
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,4 @@
1
+ import '../utils/refresh-rem';
2
+ import '../styles/normalize.css';
3
+ declare const bootstrap: any;
4
+ export default bootstrap;
@@ -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,{useCallback as t,useEffect as r,useMemo as o,useRef as i,useState as c}from"react";import{classNames as u,isEqual as a}from"@moneko/common";import{Menu as l}from"antd";import{useSearchParams as m,Link as s}from"react-router-dom";import{localizable as f}from"../localizable";import{menu as d}from"../menu";export default n.memo(function(p){var y=p.collapsed,v=function(e,n){if(null==e)return{};var t,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n.indexOf(t=i[r])>=0||(o[t]=e[t]);return o}(p,["collapsed"]),h=d.menus,b=d.kv,g=d.activeKey,O=f.t,I=m()[0],k=i(),K=c([]),j=K[0],A=K[1],M=t(function(e){e!==j&&A(e)},[j]),S=t(function(e){return e.map(function(e){var t=e.icon,r=e.itemIcon,o=e.disabled,i=e.type,c=e.key,u=e.path,a=e.label,l=e.children,m=O[a],f=Array.isArray(l)?S(l):l;return Object.assign({path:u,type:i,disabled:o,key:c,itemIcon:r,icon:t,label:!u||(null==f?void 0:f.length)?m:n.createElement(s,{preventScrollReset:!0,to:c+"?menuId="+c},m)},(null==f?void 0:f.length)&&{children:f})})},[O]),x=o(function(){return I.get("menuId")},[I]),C=o(function(){return S(h.filter(function(e){return!e.hideMenu}))},[S,h]),E=o(function(){return g?[g]:[]},[g]);return r(function(){Object.assign(k,{current:j})},[j]),r(function(){var e=x&&b[x];if(e&&!y&&k.current){var n=[].concat(k.current);n.includes(x)||n.push(x),e.parentId&&!n.includes(e.parentId)&&n.push(e.parentId),a(k.current,n)||A(n)}},[y,x,b]),r(function(){x!==g&&x&&(d.activeKey=x)},[g,x]),n.createElement(l,e({defaultSelectedKeys:E,selectedKeys:E,defaultOpenKeys:j,openKeys:y?void 0:j,onOpenChange:M,mode:"inline",subMenuCloseDelay:0,triggerSubMenuAction:"click",items:C},v,{className:u("layout-menu",v.className)}))});
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, localizablePersistenceKey, type LocaleConfig, type LocaleName, } from './localizable';
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 { addTab, closeTab, menu, openTab, setMenu, menuPersistenceKey, type TabItem, type MenuItem, type CloseTab, } from './menu';
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*from"./utils";export{pathToRegexp}from"path-to-regexp";export{default as sso}from"shared-store-object";export{localizable,setLanguage,interpolateString,localizablePersistenceKey}from"./localizable";export{matchUtil,router,onlyLoginRouter,myPkgs,myDemoKv,mdxComponents}from"./router";export{addTab,closeTab,menu,openTab,setMenu,menuPersistenceKey}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 projectBasicInfo={projectName:projectName,providerConfig:providerConfig,programInfo:programInfo,coverage:projectCoverage};
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};
@@ -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?: ReactNode | string;
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
- /** 数据持久化key */
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;
@@ -1 +1 @@
1
- import{persistence as e}from"@moneko/common";import t from"shared-store-object";var a,n={keys:function(){return[]}};try{n=hasLocales?require.context("@/locales/",!0,/\.(t|j)s$/):{keys:function(){return[]}}}catch(e){console.warn(e)}var l={},o=[];null==n.keys||null==(a=n.keys())||a.map(function(e,t){var a=n(e).default;if(a&&"[object Object]"===Object.prototype.toString.call(a)){var r=a.language,i=void 0===r?e.replace(/(.*\/)*([^.]+).*/gi,"$2"):r,c=a.title,s=void 0===c?i:c,u=a.icon,g=a.translation;0===t&&o.splice(0),o.push({language:i,title:s,icon:u}),l[i]={language:i,title:s,icon:u,translation:new Proxy(void 0===g?{}:g,{get:function(e,t){return e[t]||t}})}}a=null});export var localizablePersistenceKey="localizable.language";var r=e.load(localizablePersistenceKey,"zh_CN"),i=Object.assign({title:"简体中文",language:"zh_CN",translation:{}},l[r]||l.zh_CN);export var localizable=t({language:r,t:i.translation,locales:o});export function setLanguage(e){var t;localizable.language=e,localizable.t=(null==(t=l[e])?void 0:t.translation)||i.translation}export function interpolateString(e,t){return e.replace(/\${\w+}/g,function(e){var a=t[e.slice(2,-1)];return void 0!==a?a.toString():""})}
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
- /** 数据持久化key */
22
- export declare const menuPersistenceKey = "menu.activeKey";
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
- export {};
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 n=0,t=Array(r);n<r;n++)t[n]=e[n];return t}function r(){return(r=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])}return e}).apply(this,arguments)}function n(e,r){if(null==e)return{};var n,t,o={},a=Object.keys(e);for(t=0;t<a.length;t++)n=a[t],r.indexOf(n)>=0||(o[n]=e[n]);return o}import{isEqual as t,isFunction as o,persistence as a}from"@moneko/common";import i from"shared-store-object";export var menuPersistenceKey="menu.activeKey";export var menu=i({activeKey:a.load(menuPersistenceKey,"home"),menus:[],kv:{},tabs:[]});var u=function(e,r){if(void 0===r&&(r=[]),0===e.length)return r;var t=e[0],o=t.children,a=void 0===o?[]:o,i=t.i18n,l=t.label,c=t.hideMenu,f=n(t,["children","i18n","label","hideMenu"]),s=Object.create(null);return Object.assign(s,f,{label:i||l}),a.length&&(s.children=u(a)),c||r.push(s),u(e.slice(1),r)},l=function(e,r){for(var t,o=function(e,r){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=unsupportedIterableToArray(e))){n&&(e=n);var t=0;return function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}}}throw TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e);!(t=o()).done;){var a=t.value,i=a.children,u=n(a,["children"]);r[a.key]=u,(null==i?void 0:i.length)&&l(i,r)}};export function setMenu(e){var r=u(e),n={};l(r,n),menu.menus=r,menu.kv=n}export function addTab(n){var o=menu.kv[n.key];if(o&&!menu.tabs.find(function(e){return e.key===n.key})){var a,i=((function(r){if(Array.isArray(r))return e(r)})(a=menu.tabs)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(a)||function(r,n){if(r){if("string"==typeof r)return e(r,n);var t=Object.prototype.toString.call(r).slice(8,-1);if("Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return e(r,n)}}(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},n)]);t(i,menu.tabs)||(menu.tabs=i)}}export function openTab(e){addTab(e),menu.activeKey=e.key}export function closeTab(e,r,n){if(void 0===r&&(r="self"),e){for(var t=menu.tabs,a=menu.activeKey,i=[],u=[],l=null,c="self"===r,f=t.findIndex(function(r){return r.key===e}),s=0;s<t.length;s++){var y,m=t[s],b=(y=s,!1===m.closable||({left:y>=f,right:y<=f,other:y===f,self:e!==m.key})[r]);if(c){if(!b&&e===a){var d=s?s-1:s+1;t[d]&&(a=t[d].key,l=t[d])}}else b&&m.key===e&&a!==e&&(a=e,l=t[s]);b||i.push(m),b&&u.push(m)}if(menu.tabs=u,menu.activeKey=a,o(n)){n(i,l);return}}}
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)}function r(){var e,o,t=(e=["\n body::after {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 99999999999;\n width: 100vw;\n height: 100vh;\n content: '';\n pointer-events: none;\n background-image: url(",");\n }\n"],o||(o=e.slice(0)),e.raw=o,e);return r=function(){return t},t}import o from"react";import{css as t,injectGlobal as n}from"@emotion/css";import{ConfigProvider as i}from"antd";import a from"antd/es/locale/en_US";import l from"antd/es/locale/zh_CN";import m from"dayjs";import p from"dayjs/plugin/relativeTime";import{RouterProvider as f}from"react-router-dom";import{createRouter as c,prefixRouter as s,routerData as u,RouterFragment as d}from"../../components/app-router";import g from"../../components/fallback";import{localizable as v}from"../../localizable";import{onlyLoginRouter as h}from"../../router";import"dayjs/locale/zh.js";import"dayjs/locale/en.js";import{watermark as b}from"../../utils";import{global as C}from"@/store";var j={zh_CN:l,en_US:a};m.extend(p),i.config({prefixCls:providerConfig.prefixCls,iconPrefixCls:providerConfig.iconPrefixCls,theme:providerConfig.theme});var w=b(projectName),y=t(r(),w);n([y]);export default function(){var r=C.isLogin,t=v.language,n=v.t;return o.createElement(d,null,o.createElement(i,e({},providerConfig,{locale:j[t]||l,form:{validateMessages:{required:""+n["ph:please-fill"]+"${label}!",types:{email:"${label}"+n["wrong-format"]},pattern:{mismatch:""+n["ph:fill-correct"]+"${label}!"}}}}),o.createElement(f,{router:c(r?u:s(h,o.createElement(g,null)),{basename:programInfo.routeBaseName,window:window}),fallbackElement:o.createElement(g,null)})))};
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,4 +1,2 @@
1
- import '../../utils/refresh-rem';
2
- import '../../styles/normalize.css';
3
- declare const bootstrap: typeof import("./bootstrap");
1
+ import bootstrap from '../../components/common-entry';
4
2
  export default bootstrap;
@@ -1 +1 @@
1
- import"../../utils/refresh-rem";import"../../styles/normalize.css";var r=await import("./bootstrap");export default r;
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 l,DeleteRowOutlined as c,CloseOutlined as s}from"@ant-design/icons";import{css as m,injectGlobal as u}from"@emotion/css";import{Tabs as d,Layout as p,Dropdown as f}from"antd";import{useAliveController as b}from"react-activation";import{useSearchParams as g,useOutlet as y,useNavigate as v}from"react-router-dom";import h from"../../components/fallback-comp";import k from"../../components/layout-menu";import{localizable as x}from"../../localizable";import{closeTab as w,menu as E,openTab as N}from"../../menu";var T=providerConfig.prefixCls,C=function(n){return T+"-dashboard-"+n},I={tabs:C("tabs"),layout:C("layout"),sider:C("sider"),header:C("header"),logo:C("logo"),section:C("section"),content:C("content"),view:C("view")},S=m(e(),I.header,I.tabs,I.tabs,T,T,T,I.layout,I.sider,I.section,I.section,I.sider,I.content,I.view,I.view,I.logo,I.logo,I.logo,require(favicon));u([S]);var j=[{label:"关闭左侧标签",icon:t.createElement(c,{style:{transform:"scaleX(-1)"}}),key:"left"},{label:"关闭右侧标签",icon:t.createElement(c,null),key:"right"},{label:"关闭其他标签",icon:t.createElement(s,null),key:"other"},{label:"刷新标签页",icon:t.createElement(l,null),key:"refresh"}];export default function(e){var l=e.children,c=E.activeKey,s=E.tabs,m=E.kv,u=x.t,T=y(),C=v(),S=b().dropScope,z=g()[0],O=a(!1),P=O[0],K=O[1],L=o(function(n){if(n)var e=window.setTimeout(function(){K(n),window.clearTimeout(e),e=null},0);else{K(n);var t=window.setTimeout(function(){window.clearTimeout(t),t=null},30)}},[]),q=o(function(n,e){if("refresh"===e){C("/refresh");return}n&&w(n,e,function(n,e){null==n||n.forEach(function(n){n.path&&S&&S(n.path)}),e&&C(e.path+"?menuId="+e.key)})},[S,C]),A=i(function(){return{menuId:z.get("menuId"),dynamicLabel:z.get("dynamicTitle")||""}},[z]),B=A.menuId,H=A.dynamicLabel;r(function(){B&&N({key:B,dynamicTitle:H})},[H,B]);var M=o(function(n){return n===c?j:j.filter(function(n){return(null==n?void 0:n.key)!=="refresh"})},[c]),X=o(function(n,e){"remove"===e&&"string"==typeof n&&q(n)},[q]),D=o(function(n){C(m[n].key+"?menuId="+m[n].key)},[m,C]),F=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(f,{menu:{items:M(e),onClick:function(n){n.domEvent.stopPropagation(),q(e,n.key)}},trigger:["contextMenu"],destroyPopupOnHide:!0},t.createElement("div",null,o,u[r||"route-"+e]+(i||""))),closable:a}})},[q,M,u,s]);return t.createElement(p,{className:I.layout},layoutSider?t.createElement(p.Sider,n({className:I.sider,trigger:null,collapsible:!0,collapsed:P,onBreakpoint:function(n){return L(n)},onCollapse:function(n){return L(n)},theme:"light",breakpoint:"md"},layoutSider),t.createElement("div",{className:I.logo,"data-title":projectName},t.createElement(h,{compName:"logo",show:!P})),t.createElement(k,{collapsed:P,theme:layoutSider.theme})):null,t.createElement(p,{className:I.section},t.createElement(h,{compName:"layout-header",className:I.header,collapsed:P,onCollapsed:function(){return L(!P)}}),t.createElement(d,{className:I.tabs,hideAdd:!0,onTabClick:D,activeKey:c,type:"editable-card",onEdit:X,items:F,animated:!0}),t.createElement(p.Content,{className:I.content},t.createElement("div",{className:I.view},l||T),t.createElement(h,{compName:"layout-footer"}))))};
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,4 +1,2 @@
1
- import '../../utils/refresh-rem';
2
- import '../../styles/normalize.css';
3
- declare const bootstrap: typeof import("./bootstrap");
1
+ import bootstrap from '../../components/common-entry';
4
2
  export default bootstrap;
@@ -1 +1 @@
1
- import"../../utils/refresh-rem";import"../../styles/normalize.css";var r=await import("./bootstrap");export default r;
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 '../../utils/refresh-rem';
2
- import '../../styles/normalize.css';
1
+ import bootstrap from '../../components/common-entry';
2
+ export default bootstrap;
@@ -1 +1 @@
1
- import"../../utils/refresh-rem";import"../../styles/normalize.css";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),m=document.getElementById("root"),a=function(){e(null==r?void 0:r.bootstrap)&&(null==r||r.bootstrap()),l>=18?"ssr"===programInfo.renderMode?window.rootInstance=n.hydrateRoot(m,o.createElement(t,null)):(window.rootInstance=n.createRoot(m),window.rootInstance.render(o.createElement(t,null))):(module.hot?n.render:n.hydrate)(o.createElement(t,null),m),e(null==r?void 0:r.mount)&&(null==r||r.mount())};window.H5RemoteRuntime={bootstrap:a},a();
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{localizable as 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
+ 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,4 +1,2 @@
1
- import '../../utils/refresh-rem';
2
- import '../../styles/normalize.css';
3
- declare const bootstrap: typeof import("./bootstrap");
1
+ import bootstrap from '../../components/common-entry';
4
2
  export default bootstrap;
@@ -1 +1 @@
1
- import"../../utils/refresh-rem";import"../../styles/normalize.css";var r=await import("./bootstrap");export default r;
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"};
@@ -7,7 +7,7 @@ export interface RouterProps {
7
7
  key: string;
8
8
  alive?: KeepAliveProps | boolean;
9
9
  /** 菜单图标 */
10
- icon?: ReactNode;
10
+ icon?: string;
11
11
  dynamicTitle?: string;
12
12
  /** 菜单名 */
13
13
  i18n?: string | null;
@@ -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.24",
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.15",
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",
@@ -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 */
@@ -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;
@@ -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>")};