Commit 1899146f71ab2020dc01bd84b282e6b614ad3d57

Authored by vben
1 parent b8846547

perf: mobile style adjustment

CHANGELOG.zh_CN.md
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 14
15 ### ⚡ Performance Improvements 15 ### ⚡ Performance Improvements
16 16
17 -- 页面切换 loading 逻辑修改。对于已经加载过的页面不管有没有关闭,再次打开不会在显示 loading(已经打开过的页面在此打开速度比较快),刷新后恢复。 17 +- 页面切换 loading 逻辑修改。对于已经加载过的页面不管有没有关闭,再次打开不会在显示 loading(已经打开过的页面再次打开速度比较快,可以不需要 loading,同理顶部进度条逻辑也一样),刷新后恢复。
18 18
19 ### 🎫 Chores 19 ### 🎫 Chores
20 20
build/vite/plugin/index.ts
@@ -75,6 +75,7 @@ export function createVitePlugins(viteEnv: ViteEnv) { @@ -75,6 +75,7 @@ export function createVitePlugins(viteEnv: ViteEnv) {
75 createMockServer({ 75 createMockServer({
76 ignore: /^\_/, 76 ignore: /^\_/,
77 mockPath: 'mock', 77 mockPath: 'mock',
  78 + showTime: true,
78 }) 79 })
79 ); 80 );
80 } 81 }
package.json
@@ -47,7 +47,7 @@ @@ -47,7 +47,7 @@
47 "devDependencies": { 47 "devDependencies": {
48 "@commitlint/cli": "^11.0.0", 48 "@commitlint/cli": "^11.0.0",
49 "@commitlint/config-conventional": "^11.0.0", 49 "@commitlint/config-conventional": "^11.0.0",
50 - "@iconify/json": "^1.1.267", 50 + "@iconify/json": "^1.1.267yar",
51 "@ls-lint/ls-lint": "^1.9.2", 51 "@ls-lint/ls-lint": "^1.9.2",
52 "@purge-icons/generated": "^0.4.1", 52 "@purge-icons/generated": "^0.4.1",
53 "@types/echarts": "^4.9.2", 53 "@types/echarts": "^4.9.2",
@@ -99,7 +99,7 @@ @@ -99,7 +99,7 @@
99 "typescript": "^4.1.2", 99 "typescript": "^4.1.2",
100 "vite": "^1.0.0-rc.13", 100 "vite": "^1.0.0-rc.13",
101 "vite-plugin-html": "^1.0.0-beta.2", 101 "vite-plugin-html": "^1.0.0-beta.2",
102 - "vite-plugin-mock": "^1.0.6", 102 + "vite-plugin-mock": "^1.0.9",
103 "vite-plugin-purge-icons": "^0.4.5", 103 "vite-plugin-purge-icons": "^0.4.5",
104 "vite-plugin-pwa": "^0.1.7", 104 "vite-plugin-pwa": "^0.1.7",
105 "vue-eslint-parser": "^7.2.0", 105 "vue-eslint-parser": "^7.2.0",
src/App.vue
@@ -16,7 +16,6 @@ @@ -16,7 +16,6 @@
16 16
17 import { useLockPage } from '/@/hooks/web/useLockPage'; 17 import { useLockPage } from '/@/hooks/web/useLockPage';
18 import { useLocale } from '/@/hooks/web/useLocale'; 18 import { useLocale } from '/@/hooks/web/useLocale';
19 - import { createBreakpointListen } from '/@/hooks/event/useBreakpoint';  
20 19
21 export default defineComponent({ 20 export default defineComponent({
22 name: 'App', 21 name: 'App',
@@ -25,9 +24,6 @@ @@ -25,9 +24,6 @@
25 // Initialize vuex internal system configuration 24 // Initialize vuex internal system configuration
26 initAppConfigStore(); 25 initAppConfigStore();
27 26
28 - // Create a global breakpoint monitor  
29 - createBreakpointListen();  
30 -  
31 // Get ConfigProvider configuration 27 // Get ConfigProvider configuration
32 const { transformCellText } = getConfigProvider(); 28 const { transformCellText } = getConfigProvider();
33 29
src/hooks/event/useBreakpoint.ts
@@ -6,6 +6,12 @@ let globalScreenRef: ComputedRef<sizeEnum | undefined>; @@ -6,6 +6,12 @@ let globalScreenRef: ComputedRef<sizeEnum | undefined>;
6 let globalWidthRef: ComputedRef<number>; 6 let globalWidthRef: ComputedRef<number>;
7 let globalRealWidthRef: ComputedRef<number>; 7 let globalRealWidthRef: ComputedRef<number>;
8 8
  9 +export interface CreateCallbackParams {
  10 + screen: ComputedRef<sizeEnum | undefined>;
  11 + width: ComputedRef<number>;
  12 + realWidth: ComputedRef<number>;
  13 +}
  14 +
9 export function useBreakpoint() { 15 export function useBreakpoint() {
10 return { 16 return {
11 screenRef: computed(() => unref(globalScreenRef)), 17 screenRef: computed(() => unref(globalScreenRef)),
@@ -16,7 +22,7 @@ export function useBreakpoint() { @@ -16,7 +22,7 @@ export function useBreakpoint() {
16 } 22 }
17 23
18 // Just call it once 24 // Just call it once
19 -export function createBreakpointListen(fn?: Fn) { 25 +export function createBreakpointListen(fn?: (opt: CreateCallbackParams) => void) {
20 const screenRef = ref<sizeEnum>(sizeEnum.XL); 26 const screenRef = ref<sizeEnum>(sizeEnum.XL);
21 const realWidthRef = ref(window.innerWidth); 27 const realWidthRef = ref(window.innerWidth);
22 28
@@ -46,8 +52,9 @@ export function createBreakpointListen(fn?: Fn) { @@ -46,8 +52,9 @@ export function createBreakpointListen(fn?: Fn) {
46 useEventListener({ 52 useEventListener({
47 el: window, 53 el: window,
48 name: 'resize', 54 name: 'resize',
  55 +
49 listener: () => { 56 listener: () => {
50 - fn && fn(); 57 + resizeFn();
51 getWindowWidth(); 58 getWindowWidth();
52 }, 59 },
53 }); 60 });
@@ -56,6 +63,17 @@ export function createBreakpointListen(fn?: Fn) { @@ -56,6 +63,17 @@ export function createBreakpointListen(fn?: Fn) {
56 globalScreenRef = computed(() => unref(screenRef)); 63 globalScreenRef = computed(() => unref(screenRef));
57 globalWidthRef = computed((): number => screenMap.get(unref(screenRef)!)!); 64 globalWidthRef = computed((): number => screenMap.get(unref(screenRef)!)!);
58 globalRealWidthRef = computed((): number => unref(realWidthRef)); 65 globalRealWidthRef = computed((): number => unref(realWidthRef));
  66 +
  67 + function resizeFn() {
  68 + fn &&
  69 + fn({
  70 + screen: globalScreenRef,
  71 + width: globalWidthRef,
  72 + realWidth: globalRealWidthRef,
  73 + });
  74 + }
  75 +
  76 + resizeFn();
59 return { 77 return {
60 screenRef: globalScreenRef, 78 screenRef: globalScreenRef,
61 screenEnum, 79 screenEnum,
src/layouts/default/header/LayoutHeader.tsx
@@ -45,6 +45,7 @@ import { MenuModeEnum, MenuSplitTyeEnum } from &#39;/@/enums/menuEnum&#39;; @@ -45,6 +45,7 @@ import { MenuModeEnum, MenuSplitTyeEnum } from &#39;/@/enums/menuEnum&#39;;
45 import { AppLocalePicker } from '/@/components/Application'; 45 import { AppLocalePicker } from '/@/components/Application';
46 import { useI18n } from '/@/hooks/web/useI18n'; 46 import { useI18n } from '/@/hooks/web/useI18n';
47 import { propTypes } from '/@/utils/propTypes'; 47 import { propTypes } from '/@/utils/propTypes';
  48 +import { useLayoutContext } from '../useLayoutContext';
48 49
49 interface TooltipItemProps { 50 interface TooltipItemProps {
50 title: string; 51 title: string;
@@ -71,6 +72,9 @@ export default defineComponent({ @@ -71,6 +72,9 @@ export default defineComponent({
71 72
72 // const logoWidthRef = ref(200); 73 // const logoWidthRef = ref(200);
73 const logoRef = ref<ComponentRef>(null); 74 const logoRef = ref<ComponentRef>(null);
  75 +
  76 + const injectValue = useLayoutContext();
  77 +
74 const { refreshPage } = useTabs(); 78 const { refreshPage } = useTabs();
75 const { t } = useI18n(); 79 const { t } = useI18n();
76 80
@@ -116,6 +120,10 @@ export default defineComponent({ @@ -116,6 +120,10 @@ export default defineComponent({
116 return theme ? `layout-header__header--${theme}` : ''; 120 return theme ? `layout-header__header--${theme}` : '';
117 }); 121 });
118 122
  123 + const isPc = computed(() => {
  124 + return !unref(injectValue.isMobile);
  125 + });
  126 +
119 const getSplitType = computed(() => { 127 const getSplitType = computed(() => {
120 return unref(getSplit) ? MenuSplitTyeEnum.TOP : MenuSplitTyeEnum.NONE; 128 return unref(getSplit) ? MenuSplitTyeEnum.TOP : MenuSplitTyeEnum.NONE;
121 }); 129 });
@@ -147,11 +155,13 @@ export default defineComponent({ @@ -147,11 +155,13 @@ export default defineComponent({
147 {unref(getShowHeaderTrigger) && ( 155 {unref(getShowHeaderTrigger) && (
148 <LayoutTrigger theme={unref(getHeaderTheme)} sider={false} /> 156 <LayoutTrigger theme={unref(getHeaderTheme)} sider={false} />
149 )} 157 )}
150 - {unref(getShowBread) && <LayoutBreadcrumb showIcon={unref(getShowBreadCrumbIcon)} />} 158 + {unref(getShowBread) && unref(isPc) && (
  159 + <LayoutBreadcrumb showIcon={unref(getShowBreadCrumbIcon)} />
  160 + )}
151 </div> 161 </div>
152 )} 162 )}
153 163
154 - {unref(getShowTopMenu) && ( 164 + {unref(getShowTopMenu) && unref(isPc) && (
155 // <div class={[`layout-header__menu `]} style={{ width: `calc(100% - ${width}px)` }}> 165 // <div class={[`layout-header__menu `]} style={{ width: `calc(100% - ${width}px)` }}>
156 <div class={[`layout-header__menu `]}> 166 <div class={[`layout-header__menu `]}>
157 <LayoutMenu 167 <LayoutMenu
@@ -179,7 +189,7 @@ export default defineComponent({ @@ -179,7 +189,7 @@ export default defineComponent({
179 function renderAction() { 189 function renderAction() {
180 return ( 190 return (
181 <div class={`layout-header__action`}> 191 <div class={`layout-header__action`}>
182 - {unref(getUseErrorHandle) && ( 192 + {unref(getUseErrorHandle) && unref(isPc) && (
183 <TooltipItem title={t('layout.header.tooltipErrorLog')}> 193 <TooltipItem title={t('layout.header.tooltipErrorLog')}>
184 {() => ( 194 {() => (
185 <Badge 195 <Badge
@@ -194,25 +204,25 @@ export default defineComponent({ @@ -194,25 +204,25 @@ export default defineComponent({
194 </TooltipItem> 204 </TooltipItem>
195 )} 205 )}
196 206
197 - {unref(getUseLockPage) && ( 207 + {unref(getUseLockPage) && unref(isPc) && (
198 <TooltipItem title={t('layout.header.tooltipLock')}> 208 <TooltipItem title={t('layout.header.tooltipLock')}>
199 {() => renderActionDefault(LockOutlined, handleLockPage)} 209 {() => renderActionDefault(LockOutlined, handleLockPage)}
200 </TooltipItem> 210 </TooltipItem>
201 )} 211 )}
202 212
203 - {unref(getShowNotice) && ( 213 + {unref(getShowNotice) && unref(isPc) && (
204 <TooltipItem title={t('layout.header.tooltipNotify')}> 214 <TooltipItem title={t('layout.header.tooltipNotify')}>
205 {() => <NoticeAction />} 215 {() => <NoticeAction />}
206 </TooltipItem> 216 </TooltipItem>
207 )} 217 )}
208 218
209 - {unref(getShowRedo) && ( 219 + {unref(getShowRedo) && unref(isPc) && (
210 <TooltipItem title={t('layout.header.tooltipRedo')}> 220 <TooltipItem title={t('layout.header.tooltipRedo')}>
211 {() => renderActionDefault(RedoOutlined, refreshPage)} 221 {() => renderActionDefault(RedoOutlined, refreshPage)}
212 </TooltipItem> 222 </TooltipItem>
213 )} 223 )}
214 224
215 - {unref(getShowFullScreen) && ( 225 + {unref(getShowFullScreen) && unref(isPc) && (
216 <TooltipItem 226 <TooltipItem
217 title={ 227 title={
218 unref(isFullscreenRef) 228 unref(isFullscreenRef)
src/layouts/default/header/LayoutMultipleHeader.tsx
@@ -56,7 +56,7 @@ export default defineComponent({ @@ -56,7 +56,7 @@ export default defineComponent({
56 (): CSSProperties => { 56 (): CSSProperties => {
57 const style: CSSProperties = {}; 57 const style: CSSProperties = {};
58 if (unref(getFixed)) { 58 if (unref(getFixed)) {
59 - style.width = unref(getCalcContentWidth); 59 + style.width = unref(injectValue.isMobile) ? '100%' : unref(getCalcContentWidth);
60 } 60 }
61 if (unref(getShowFullHeaderRef)) { 61 if (unref(getShowFullHeaderRef)) {
62 style.top = `${unref(fullHeaderHeightRef)}px`; 62 style.top = `${unref(fullHeaderHeightRef)}px`;
@@ -81,7 +81,7 @@ export default defineComponent({ @@ -81,7 +81,7 @@ export default defineComponent({
81 nextTick(() => { 81 nextTick(() => {
82 const headerEl = unref(headerElRef)?.$el; 82 const headerEl = unref(headerElRef)?.$el;
83 const tabEl = unref(tabElRef)?.$el; 83 const tabEl = unref(tabElRef)?.$el;
84 - const fullHeaderEl = unref(injectValue.fullHeaderRef)?.$el; 84 + const fullHeaderEl = unref(injectValue.fullHeader)?.$el;
85 85
86 let height = 0; 86 let height = 0;
87 if (headerEl && !unref(getShowFullHeaderRef)) { 87 if (headerEl && !unref(getShowFullHeaderRef)) {
src/layouts/default/index.tsx
@@ -21,14 +21,20 @@ import { useRootSetting } from &#39;/@/hooks/setting/useRootSetting&#39;; @@ -21,14 +21,20 @@ import { useRootSetting } from &#39;/@/hooks/setting/useRootSetting&#39;;
21 import { createLayoutContext } from './useLayoutContext'; 21 import { createLayoutContext } from './useLayoutContext';
22 22
23 import { registerGlobComp } from '/@/components/registerGlobComp'; 23 import { registerGlobComp } from '/@/components/registerGlobComp';
24 - 24 +import { createBreakpointListen } from '/@/hooks/event/useBreakpoint';
  25 +import { isMobile } from '/@/utils/is';
25 export default defineComponent({ 26 export default defineComponent({
26 name: 'DefaultLayout', 27 name: 'DefaultLayout',
27 setup() { 28 setup() {
28 const { currentRoute } = useRouter(); 29 const { currentRoute } = useRouter();
29 const headerRef = ref<ComponentRef>(null); 30 const headerRef = ref<ComponentRef>(null);
  31 + const isMobileRef = ref(false);
  32 +
  33 + createLayoutContext({ fullHeader: headerRef, isMobile: isMobileRef });
30 34
31 - createLayoutContext({ fullHeaderRef: headerRef }); 35 + createBreakpointListen(() => {
  36 + isMobileRef.value = isMobile();
  37 + });
32 38
33 // ! Only register global components here 39 // ! Only register global components here
34 // ! Can reduce the size of the first screen code 40 // ! Can reduce the size of the first screen code
src/layouts/default/sider/index.tsx
@@ -81,7 +81,7 @@ export default defineComponent({ @@ -81,7 +81,7 @@ export default defineComponent({
81 topRef.value = 0; 81 topRef.value = 0;
82 if (unref(getUnFixedAndFull)) return; 82 if (unref(getUnFixedAndFull)) return;
83 nextTick(() => { 83 nextTick(() => {
84 - const fullHeaderEl = unref(injectValue.fullHeaderRef)?.$el; 84 + const fullHeaderEl = unref(injectValue.fullHeader)?.$el;
85 if (!fullHeaderEl) return; 85 if (!fullHeaderEl) return;
86 topRef.value = fullHeaderEl.offsetHeight; 86 topRef.value = fullHeaderEl.offsetHeight;
87 }); 87 });
@@ -121,10 +121,9 @@ export default defineComponent({ @@ -121,10 +121,9 @@ export default defineComponent({
121 return () => { 121 return () => {
122 return ( 122 return (
123 <> 123 <>
124 - {unref(getMenuFixed) && ( 124 + {unref(getMenuFixed) && !unref(injectValue.isMobile) && (
125 <div style={unref(getHiddenDomStyle)} class={{ hidden: !unref(showClassSideBarRef) }} /> 125 <div style={unref(getHiddenDomStyle)} class={{ hidden: !unref(showClassSideBarRef) }} />
126 )} 126 )}
127 -  
128 <Layout.Sider 127 <Layout.Sider
129 ref={sideRef} 128 ref={sideRef}
130 breakpoint="md" 129 breakpoint="md"
src/layouts/default/useLayoutContext.ts
@@ -2,7 +2,8 @@ import { InjectionKey, Ref } from &#39;vue&#39;; @@ -2,7 +2,8 @@ import { InjectionKey, Ref } from &#39;vue&#39;;
2 import { createContext, useContext } from '/@/hooks/core/useContext'; 2 import { createContext, useContext } from '/@/hooks/core/useContext';
3 3
4 export interface LayoutContextProps { 4 export interface LayoutContextProps {
5 - fullHeaderRef: Ref<ComponentRef>; 5 + fullHeader: Ref<ComponentRef>;
  6 + isMobile: Ref<boolean>;
6 } 7 }
7 8
8 const layoutContextInjectKey: InjectionKey<LayoutContextProps> = Symbol(); 9 const layoutContextInjectKey: InjectionKey<LayoutContextProps> = Symbol();
src/store/modules/tab.ts
@@ -97,10 +97,10 @@ class Tab extends VuexModule { @@ -97,10 +97,10 @@ class Tab extends VuexModule {
97 const pageCacheSet = new Set<string>(); 97 const pageCacheSet = new Set<string>();
98 this.tabsState.forEach((tab) => { 98 this.tabsState.forEach((tab) => {
99 const item = getRoute(tab); 99 const item = getRoute(tab);
100 - const needCache = !item.meta.ignoreKeepAlive; 100 + const needCache = !item.meta?.ignoreKeepAlive;
101 if (!needCache) return; 101 if (!needCache) return;
102 102
103 - if (item.meta.affix) { 103 + if (item.meta?.affix) {
104 const name = item.name as string; 104 const name = item.name as string;
105 pageCacheSet.add(name); 105 pageCacheSet.add(name);
106 } else if (item.matched && needCache) { 106 } else if (item.matched && needCache) {
src/utils/is.ts
@@ -73,3 +73,9 @@ export function isImageDom(o: Element) { @@ -73,3 +73,9 @@ export function isImageDom(o: Element) {
73 export const isTextarea = (element: Element | null): element is HTMLTextAreaElement => { 73 export const isTextarea = (element: Element | null): element is HTMLTextAreaElement => {
74 return element !== null && element.tagName.toLowerCase() === 'textarea'; 74 return element !== null && element.tagName.toLowerCase() === 'textarea';
75 }; 75 };
  76 +
  77 +export const isMobile = (): boolean => {
  78 + return !!navigator.userAgent.match(
  79 + /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
  80 + );
  81 +};
yarn.lock
@@ -1061,10 +1061,10 @@ @@ -1061,10 +1061,10 @@
1061 resolved "https://registry.npmjs.org/@iconify/iconify/-/iconify-2.0.0-rc.2.tgz#c4a95ddc06ca9b9496df03604e66fdefb39f4c4b" 1061 resolved "https://registry.npmjs.org/@iconify/iconify/-/iconify-2.0.0-rc.2.tgz#c4a95ddc06ca9b9496df03604e66fdefb39f4c4b"
1062 integrity sha512-BybEHU5/I9EQ0CcwKAqmreZ2bMnAXrqLCTptAc6vPetHMbrXdZfejP5mt57e/8PNSt/qE7BHniU5PCYA+PGIHw== 1062 integrity sha512-BybEHU5/I9EQ0CcwKAqmreZ2bMnAXrqLCTptAc6vPetHMbrXdZfejP5mt57e/8PNSt/qE7BHniU5PCYA+PGIHw==
1063 1063
1064 -"@iconify/json@^1.1.267":  
1065 - version "1.1.267"  
1066 - resolved "https://registry.npmjs.org/@iconify/json/-/json-1.1.267.tgz#52ab5390fcaf95e0d68260523a3a3fbc575dfe01"  
1067 - integrity sha512-VKNvyALvbuwsXO7r2XvdoqdctmvJzp1/XYOXRfhJ4w+sjtWYp8T3oRGDJ0AZTafzGiBBUaMwCZVP+j87rqgD3w== 1064 +"@iconify/json@^1.1.267yar":
  1065 + version "1.1.268"
  1066 + resolved "https://registry.npmjs.org/@iconify/json/-/json-1.1.268.tgz#a2691302a6b49b52bc7c47da80e4a5f8fc8919db"
  1067 + integrity sha512-eGk+KuK0Ld/XGb+SzRV2TVBddiGThTiw0ZT+19eMvt8yufRWzi9DeSaogvd5pZoXaDFH25r1fb06nz6PEMqefw==
1068 1068
1069 "@koa/cors@^3.1.0": 1069 "@koa/cors@^3.1.0":
1070 version "3.1.0" 1070 version "3.1.0"
@@ -1174,6 +1174,18 @@ @@ -1174,6 +1174,18 @@
1174 is-module "^1.0.0" 1174 is-module "^1.0.0"
1175 resolve "^1.17.0" 1175 resolve "^1.17.0"
1176 1176
  1177 +"@rollup/plugin-node-resolve@^11.0.0":
  1178 + version "11.0.0"
  1179 + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.0.0.tgz#770458fb26691a686c5f29f37dded94832ffce59"
  1180 + integrity sha512-8Hrmwjn1pLYjUxcv7U7IPP0qfnzEJWHyHE6CaZ8jbLM+8axaarJRB1jB6JgKTDp5gNga+TpsgX6F8iuvgOerKQ==
  1181 + dependencies:
  1182 + "@rollup/pluginutils" "^3.1.0"
  1183 + "@types/resolve" "1.17.1"
  1184 + builtin-modules "^3.1.0"
  1185 + deepmerge "^4.2.2"
  1186 + is-module "^1.0.0"
  1187 + resolve "^1.19.0"
  1188 +
1177 "@rollup/plugin-node-resolve@^7.1.1": 1189 "@rollup/plugin-node-resolve@^7.1.1":
1178 version "7.1.3" 1190 version "7.1.3"
1179 resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" 1191 resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca"
@@ -1198,18 +1210,6 @@ @@ -1198,18 +1210,6 @@
1198 is-module "^1.0.0" 1210 is-module "^1.0.0"
1199 resolve "^1.17.0" 1211 resolve "^1.17.0"
1200 1212
1201 -"@rollup/plugin-node-resolve@^9.0.0":  
1202 - version "9.0.0"  
1203 - resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz#39bd0034ce9126b39c1699695f440b4b7d2b62e6"  
1204 - integrity sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==  
1205 - dependencies:  
1206 - "@rollup/pluginutils" "^3.1.0"  
1207 - "@types/resolve" "1.17.1"  
1208 - builtin-modules "^3.1.0"  
1209 - deepmerge "^4.2.2"  
1210 - is-module "^1.0.0"  
1211 - resolve "^1.17.0"  
1212 -  
1213 "@rollup/plugin-replace@^2.3.1", "@rollup/plugin-replace@^2.3.3": 1213 "@rollup/plugin-replace@^2.3.1", "@rollup/plugin-replace@^2.3.3":
1214 version "2.3.4" 1214 version "2.3.4"
1215 resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz#7dd84c17755d62b509577f2db37eb524d7ca88ca" 1215 resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz#7dd84c17755d62b509577f2db37eb524d7ca88ca"
@@ -1227,7 +1227,7 @@ @@ -1227,7 +1227,7 @@
1227 estree-walker "^1.0.1" 1227 estree-walker "^1.0.1"
1228 picomatch "^2.2.2" 1228 picomatch "^2.2.2"
1229 1229
1230 -"@rollup/pluginutils@^4.0.0", "@rollup/pluginutils@^4.1.0": 1230 +"@rollup/pluginutils@^4.1.0":
1231 version "4.1.0" 1231 version "4.1.0"
1232 resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.0.tgz#0dcc61c780e39257554feb7f77207dceca13c838" 1232 resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.0.tgz#0dcc61c780e39257554feb7f77207dceca13c838"
1233 integrity sha512-TrBhfJkFxA+ER+ew2U2/fHbebhLT/l/2pRk0hfj9KusXUuRXd2v0R58AfaZK9VXDQ4TogOSEmICVrQAA3zFnHQ== 1233 integrity sha512-TrBhfJkFxA+ER+ew2U2/fHbebhLT/l/2pRk0hfj9KusXUuRXd2v0R58AfaZK9VXDQ4TogOSEmICVrQAA3zFnHQ==
@@ -2557,7 +2557,7 @@ chardet@^0.7.0: @@ -2557,7 +2557,7 @@ chardet@^0.7.0:
2557 resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 2557 resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
2558 integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 2558 integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
2559 2559
2560 -chokidar@^3.4.2: 2560 +chokidar@^3.4.2, chokidar@^3.4.3:
2561 version "3.4.3" 2561 version "3.4.3"
2562 resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" 2562 resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b"
2563 integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== 2563 integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==
@@ -3170,6 +3170,11 @@ dateformat@^3.0.0: @@ -3170,6 +3170,11 @@ dateformat@^3.0.0:
3170 resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" 3170 resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
3171 integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== 3171 integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
3172 3172
  3173 +dayjs@^1.9.6:
  3174 + version "1.9.6"
  3175 + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.9.6.tgz#6f0c77d76ac1ff63720dd1197e5cb87b67943d70"
  3176 + integrity sha512-HngNLtPEBWRo8EFVmHFmSXAjtCX8rGNqeXQI0Gh7wCTSqwaKgPIDqu9m07wABVopNwzvOeCb+2711vQhDlcIXw==
  3177 +
3173 de-indent@^1.0.2: 3178 de-indent@^1.0.2:
3174 version "1.0.2" 3179 version "1.0.2"
3175 resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" 3180 resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
@@ -3542,11 +3547,6 @@ esbuild-register@^1.1.1: @@ -3542,11 +3547,6 @@ esbuild-register@^1.1.1:
3542 source-map-support "^0.5.19" 3547 source-map-support "^0.5.19"
3543 strip-json-comments "^3.1.1" 3548 strip-json-comments "^3.1.1"
3544 3549
3545 -esbuild@^0.7.19:  
3546 - version "0.7.22"  
3547 - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.7.22.tgz#9149b903f8128b7c45a754046c24199d76bbe08e"  
3548 - integrity sha512-B43SYg8LGWYTCv9Gs0RnuLNwjzpuWOoCaZHTWEDEf5AfrnuDMerPVMdCEu7xOdhFvQ+UqfP2MGU9lxEy0JzccA==  
3549 -  
3550 esbuild@^0.8.12: 3550 esbuild@^0.8.12:
3551 version "0.8.15" 3551 version "0.8.15"
3552 resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.15.tgz#cbc4d82a7fc4571d455233456e6fba83fd0364f1" 3552 resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.15.tgz#cbc4d82a7fc4571d455233456e6fba83fd0364f1"
@@ -3557,6 +3557,11 @@ esbuild@^0.8.17: @@ -3557,6 +3557,11 @@ esbuild@^0.8.17:
3557 resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.17.tgz#1c16c6d5988dcfdcf27a7e1612b7fd05e1477c54" 3557 resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.17.tgz#1c16c6d5988dcfdcf27a7e1612b7fd05e1477c54"
3558 integrity sha512-ReHap+Iyn5BQF0B8F3xrLwu+j57ri5uDUw2ej9XTPAuFDebYiWwRzBY4jhF610bklveXLbCGim/8/2wQKQlu1w== 3558 integrity sha512-ReHap+Iyn5BQF0B8F3xrLwu+j57ri5uDUw2ej9XTPAuFDebYiWwRzBY4jhF610bklveXLbCGim/8/2wQKQlu1w==
3559 3559
  3560 +esbuild@^0.8.18:
  3561 + version "0.8.18"
  3562 + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.18.tgz#4a8c70df8fffa27164a26daa3ec58ce6f1315446"
  3563 + integrity sha512-EPbCSr7Ems1loeoy1faUGnJOwTwSrGcoYVQ4f4T4JMKjxJxrWAg+zqXkZK7GvqxfvokPp3HV6Raqn6rqAuW7+Q==
  3564 +
3560 escalade@^3.1.1: 3565 escalade@^3.1.1:
3561 version "3.1.1" 3566 version "3.1.1"
3562 resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 3567 resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
@@ -6955,7 +6960,7 @@ resolve-url@^0.2.1: @@ -6955,7 +6960,7 @@ resolve-url@^0.2.1:
6955 resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 6960 resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
6956 integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= 6961 integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
6957 6962
6958 -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.3.2: 6963 +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.3.2:
6959 version "1.19.0" 6964 version "1.19.0"
6960 resolved "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" 6965 resolved "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c"
6961 integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== 6966 integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==
@@ -7021,12 +7026,12 @@ rollup-plugin-dynamic-import-variables@^1.1.0: @@ -7021,12 +7026,12 @@ rollup-plugin-dynamic-import-variables@^1.1.0:
7021 globby "^11.0.0" 7026 globby "^11.0.0"
7022 magic-string "^0.25.7" 7027 magic-string "^0.25.7"
7023 7028
7024 -rollup-plugin-esbuild@^2.5.2:  
7025 - version "2.5.2"  
7026 - resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-2.5.2.tgz#fd7d4a88518898012a9d07e4c3ef8b4009c244d3"  
7027 - integrity sha512-E4q3ac1AlMd0m0ZRYffdiorOt2eZcxfbdPaqBLs7JLnPE8krgIAihOD6cTUc54UJjoOMA9WcY63TR+JKWLzYNw== 7029 +rollup-plugin-esbuild@^2.6.0:
  7030 + version "2.6.0"
  7031 + resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-2.6.0.tgz#80336399b113a179ccb2af5bdf7c03f061f37146"
  7032 + integrity sha512-wtyDAX8kNABrBfwkrrG2xLRKRGSWUyMBURS067IRvRMpgJlLRo14WcFl95uGc4iYWfdAx436/z1LMzYqdlY4ig==
7028 dependencies: 7033 dependencies:
7029 - "@rollup/pluginutils" "^4.0.0" 7034 + "@rollup/pluginutils" "^4.1.0"
7030 joycon "^2.2.5" 7035 joycon "^2.2.5"
7031 strip-json-comments "^3.1.1" 7036 strip-json-comments "^3.1.1"
7032 7037
@@ -7135,6 +7140,13 @@ rollup@^2.32.1: @@ -7135,6 +7140,13 @@ rollup@^2.32.1:
7135 optionalDependencies: 7140 optionalDependencies:
7136 fsevents "~2.1.2" 7141 fsevents "~2.1.2"
7137 7142
  7143 +rollup@^2.34.1:
  7144 + version "2.34.1"
  7145 + resolved "https://registry.npmjs.org/rollup/-/rollup-2.34.1.tgz#a387230df02c58b242794a213dfb68b42de2c8fb"
  7146 + integrity sha512-tGveB6NU5x4MS/iXaIsjfUkEv4hxzJJ4o0FRy5LO62Ndx3R2cmE1qsLYlSfRkvHUUPqWiFoxEm8pRftzh1a5HA==
  7147 + optionalDependencies:
  7148 + fsevents "~2.1.2"
  7149 +
7138 run-async@^2.2.0: 7150 run-async@^2.2.0:
7139 version "2.4.1" 7151 version "2.4.1"
7140 resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" 7152 resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
@@ -8281,19 +8293,20 @@ vite-plugin-html@^1.0.0-beta.2: @@ -8281,19 +8293,20 @@ vite-plugin-html@^1.0.0-beta.2:
8281 html-minifier-terser "^5.1.1" 8293 html-minifier-terser "^5.1.1"
8282 lodash "^4.17.20" 8294 lodash "^4.17.20"
8283 8295
8284 -vite-plugin-mock@^1.0.6:  
8285 - version "1.0.6"  
8286 - resolved "https://registry.npmjs.org/vite-plugin-mock/-/vite-plugin-mock-1.0.6.tgz#4f47f193fd48a02c66641fc7242bd5329f99b471"  
8287 - integrity sha512-+IeCiZBgQt2BpKKzYwoB5bWrrUwiksQh/9zWUrsegGw14PXmXtXXmgHr3CkKjyIChZmvuBs1BPieHD8SyBQAGQ== 8296 +vite-plugin-mock@^1.0.9:
  8297 + version "1.0.9"
  8298 + resolved "https://registry.npmjs.org/vite-plugin-mock/-/vite-plugin-mock-1.0.9.tgz#035a63787f70f1094f3b3928ea0c0419dc353619"
  8299 + integrity sha512-qWiF56y/U82EdyckZBxhEkrDQBaUc7QhLPcRN+Lu5eI0diA0MvVvucgCueq4/0mEYJpBcaVWsy83cAGb49AQsA==
8288 dependencies: 8300 dependencies:
8289 - "@rollup/plugin-node-resolve" "^9.0.0" 8301 + "@rollup/plugin-node-resolve" "^11.0.0"
8290 chalk "^4.1.0" 8302 chalk "^4.1.0"
8291 - chokidar "^3.4.2"  
8292 - esbuild "^0.7.19" 8303 + chokidar "^3.4.3"
  8304 + dayjs "^1.9.6"
  8305 + esbuild "^0.8.18"
8293 glob "^7.1.6" 8306 glob "^7.1.6"
8294 koa-bodyparser "^4.3.0" 8307 koa-bodyparser "^4.3.0"
8295 - rollup "^2.32.1"  
8296 - rollup-plugin-esbuild "^2.5.2" 8308 + rollup "^2.34.1"
  8309 + rollup-plugin-esbuild "^2.6.0"
8297 8310
8298 vite-plugin-purge-icons@^0.4.5: 8311 vite-plugin-purge-icons@^0.4.5:
8299 version "0.4.5" 8312 version "0.4.5"