mirror of
				https://github.com/soybeanjs/soybean-admin.git
				synced 2025-10-25 11:03:42 +08:00 
			
		
		
		
	Compare commits
	
		
			14 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 1c3b4734fa | ||
|  | 93c7ff7122 | ||
|  | 1e14293d67 | ||
|  | 19e65c1a9f | ||
|  | e57bf0b076 | ||
|  | 5d45cef1f0 | ||
|  | d460e5cc6d | ||
|  | 3b5e4b3405 | ||
|  | dcd51f4cda | ||
|  | 09f6464678 | ||
|  | fdde679c70 | ||
|  | b266035800 | ||
|  | a1e432f81e | ||
|  | 82eabab753 | 
							
								
								
									
										39
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								CHANGELOG.md
									
									
									
									
									
								
							| @@ -1,6 +1,45 @@ | ||||
| # Changelog | ||||
|  | ||||
|  | ||||
| ## [v1.0.6](https://github.com/soybeanjs/soybean-admin/compare/v1.0.5...v1.0.6) (2024-04-25) | ||||
|  | ||||
| ###    🚀 Features | ||||
|  | ||||
| - **hooks**: add state hooks: useRef, useState, useSignal  -  by @honghuangdc [<samp>(09f64)</samp>](https://github.com/soybeanjs/soybean-admin/commit/09f6464) | ||||
|  | ||||
| ###    🐞 Bug Fixes | ||||
|  | ||||
| - **projects**: | ||||
|   - added responseType judgment. #396  -  by **alleycharming** in https://github.com/soybeanjs/soybean-admin/issues/396 [<samp>(82eab)</samp>](https://github.com/soybeanjs/soybean-admin/commit/82eabab) | ||||
|   - supply $t import statement  -  by @honghuangdc [<samp>(b2660)</samp>](https://github.com/soybeanjs/soybean-admin/commit/b266035) | ||||
|   - fix mix-menu blank. fixed #389 & cache mixMenuFixed  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/389 [<samp>(93c7f)</samp>](https://github.com/soybeanjs/soybean-admin/commit/93c7ff7) | ||||
|  | ||||
| ###    🔥 Performance | ||||
|  | ||||
| - **hooks**: | ||||
|   - perf useSignal  -  by @honghuangdc [<samp>(5d45c)</samp>](https://github.com/soybeanjs/soybean-admin/commit/5d45cef) | ||||
| - **projects**: | ||||
|   - remove useless prop `title` of `NDrawer`  -  by @honghuangdc [<samp>(fdde6)</samp>](https://github.com/soybeanjs/soybean-admin/commit/fdde679) | ||||
|   - add tsconfig.json for @sa/color-palette  -  by @honghuangdc [<samp>(d460e)</samp>](https://github.com/soybeanjs/soybean-admin/commit/d460e5c) | ||||
|  | ||||
| ###    💅 Refactors | ||||
|  | ||||
| - **hooks**: refactor useSignal, useComputed  -  by @honghuangdc [<samp>(3b5e4)</samp>](https://github.com/soybeanjs/soybean-admin/commit/3b5e4b3) | ||||
| - **projects**: useMixMenuContext replace useMixMenu  -  by @honghuangdc [<samp>(1e142)</samp>](https://github.com/soybeanjs/soybean-admin/commit/1e14293) | ||||
|  | ||||
| ###    🏡 Chore | ||||
|  | ||||
| - **deps**: | ||||
|   - update deps  -  by @honghuangdc [<samp>(e57bf)</samp>](https://github.com/soybeanjs/soybean-admin/commit/e57bf0b) | ||||
| - **projects**: | ||||
|   - use `engines` replace `packageManager`  -  by @honghuangdc [<samp>(dcd51)</samp>](https://github.com/soybeanjs/soybean-admin/commit/dcd51f4) | ||||
|   - update pnpm version requirement  -  by @honghuangdc [<samp>(19e65)</samp>](https://github.com/soybeanjs/soybean-admin/commit/19e65c1) | ||||
|  | ||||
| ###    ❤️ Contributors | ||||
|  | ||||
| [](https://github.com/honghuangdc)   | ||||
| [alleycharming](mailto:alleycharming@gmail.com) | ||||
|  | ||||
| ## [v1.0.5](https://github.com/honghuangdc/soybean-admin/compare/v1.0.4...v1.0.5) (2024-04-24) | ||||
|  | ||||
| ###    📖 Documentation | ||||
|   | ||||
							
								
								
									
										11
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								package.json
									
									
									
									
									
								
							| @@ -1,8 +1,7 @@ | ||||
| { | ||||
|   "name": "soybean-admin", | ||||
|   "type": "module", | ||||
|   "version": "1.0.5", | ||||
|   "packageManager": "pnpm@9.0.5", | ||||
|   "version": "1.0.6", | ||||
|   "description": "A fresh and elegant admin template, based on Vue3、Vite3、TypeScript、NaiveUI and UnoCSS. 一个基于Vue3、Vite3、TypeScript、NaiveUI and UnoCSS的清新优雅的中后台模版。", | ||||
|   "author": { | ||||
|     "name": "Soybean", | ||||
| @@ -27,6 +26,10 @@ | ||||
|     "ant-design-vue v4", | ||||
|     "UnoCSS" | ||||
|   ], | ||||
|   "engines": { | ||||
|     "node": ">=18.12.0", | ||||
|     "pnpm": ">=8.7.0" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "build": "vite build --mode prod", | ||||
|     "build:test": "vite build --mode test", | ||||
| @@ -58,14 +61,14 @@ | ||||
|     "naive-ui": "2.38.1", | ||||
|     "nprogress": "0.2.0", | ||||
|     "pinia": "2.1.7", | ||||
|     "vue": "3.4.23", | ||||
|     "vue": "3.4.25", | ||||
|     "vue-draggable-plus": "0.4.0", | ||||
|     "vue-i18n": "9.13.1", | ||||
|     "vue-router": "4.3.2" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@elegant-router/vue": "0.3.6", | ||||
|     "@iconify/json": "2.2.203", | ||||
|     "@iconify/json": "2.2.204", | ||||
|     "@sa/scripts": "workspace:*", | ||||
|     "@sa/uno-preset": "workspace:*", | ||||
|     "@soybeanjs/eslint-config": "1.3.2", | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "@sa/axios", | ||||
|   "version": "1.0.5", | ||||
|   "version": "1.0.6", | ||||
|   "exports": { | ||||
|     ".": "./src/index.ts" | ||||
|   }, | ||||
|   | ||||
| @@ -48,7 +48,9 @@ function createCommonRequest<ResponseData = any>( | ||||
|  | ||||
|   instance.interceptors.response.use( | ||||
|     async response => { | ||||
|       if (opts.isBackendSuccess(response)) { | ||||
|       const responseType: ResponseType = (response.config?.responseType as ResponseType) || 'json'; | ||||
|  | ||||
|       if (responseType !== 'json' || opts.isBackendSuccess(response)) { | ||||
|         return Promise.resolve(response); | ||||
|       } | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "@sa/color-palette", | ||||
|   "version": "1.0.5", | ||||
|   "version": "1.0.6", | ||||
|   "exports": { | ||||
|     ".": "./src/index.ts" | ||||
|   }, | ||||
|   | ||||
							
								
								
									
										20
									
								
								packages/color-palette/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								packages/color-palette/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| { | ||||
|   "compilerOptions": { | ||||
|     "target": "ESNext", | ||||
|     "jsx": "preserve", | ||||
|     "lib": ["DOM", "ESNext"], | ||||
|     "baseUrl": ".", | ||||
|     "module": "ESNext", | ||||
|     "moduleResolution": "node", | ||||
|     "resolveJsonModule": true, | ||||
|     "types": ["node"], | ||||
|     "strict": true, | ||||
|     "strictNullChecks": true, | ||||
|     "noUnusedLocals": true, | ||||
|     "allowSyntheticDefaultImports": true, | ||||
|     "esModuleInterop": true, | ||||
|     "forceConsistentCasingInFileNames": true | ||||
|   }, | ||||
|   "include": ["src/**/*"], | ||||
|   "exclude": ["node_modules", "dist"] | ||||
| } | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "@sa/hooks", | ||||
|   "version": "1.0.5", | ||||
|   "version": "1.0.6", | ||||
|   "exports": { | ||||
|     ".": "./src/index.ts" | ||||
|   }, | ||||
|   | ||||
| @@ -7,4 +7,5 @@ import useHookTable from './use-table'; | ||||
|  | ||||
| export { useBoolean, useLoading, useCountDown, useContext, useSvgIconRender, useHookTable }; | ||||
|  | ||||
| export * from './use-signal'; | ||||
| export * from './use-table'; | ||||
|   | ||||
							
								
								
									
										144
									
								
								packages/hooks/src/use-signal.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								packages/hooks/src/use-signal.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,144 @@ | ||||
| import { computed, ref, shallowRef, triggerRef } from 'vue'; | ||||
| import type { | ||||
|   ComputedGetter, | ||||
|   DebuggerOptions, | ||||
|   Ref, | ||||
|   ShallowRef, | ||||
|   WritableComputedOptions, | ||||
|   WritableComputedRef | ||||
| } from 'vue'; | ||||
|  | ||||
| type Updater<T> = (value: T) => T; | ||||
| type Mutator<T> = (value: T) => void; | ||||
|  | ||||
| /** | ||||
|  * Signal is a reactive value that can be set, updated or mutated | ||||
|  * | ||||
|  * @example | ||||
|  *   ```ts | ||||
|  *   const count = useSignal(0); | ||||
|  * | ||||
|  *   // `watchEffect` | ||||
|  *   watchEffect(() => { | ||||
|  *   console.log(count()); | ||||
|  *   }); | ||||
|  * | ||||
|  *   // watch | ||||
|  *   watch(count, value => { | ||||
|  *   console.log(value); | ||||
|  *   }); | ||||
|  * | ||||
|  *   // useComputed | ||||
|  *   const double = useComputed(() => count() * 2); | ||||
|  *   const writeableDouble = useComputed({ | ||||
|  *   get: () => count() * 2, | ||||
|  *   set: value => count.set(value / 2) | ||||
|  *   }); | ||||
|  *   ``` | ||||
|  */ | ||||
| export interface Signal<T> { | ||||
|   (): Readonly<T>; | ||||
|   /** | ||||
|    * Set the value of the signal | ||||
|    * | ||||
|    * It recommend use `set` for primitive values | ||||
|    * | ||||
|    * @param value | ||||
|    */ | ||||
|   set(value: T): void; | ||||
|   /** | ||||
|    * Update the value of the signal using an updater function | ||||
|    * | ||||
|    * It recommend use `update` for non-primitive values, only the first level of the object will be reactive. | ||||
|    * | ||||
|    * @param updater | ||||
|    */ | ||||
|   update(updater: Updater<T>): void; | ||||
|   /** | ||||
|    * Mutate the value of the signal using a mutator function | ||||
|    * | ||||
|    * this action will call `triggerRef`, so the value will be tracked on `watchEffect`. | ||||
|    * | ||||
|    * It recommend use `mutate` for non-primitive values, all levels of the object will be reactive. | ||||
|    * | ||||
|    * @param mutator | ||||
|    */ | ||||
|   mutate(mutator: Mutator<T>): void; | ||||
|   /** | ||||
|    * Get the reference of the signal | ||||
|    * | ||||
|    * Sometimes it can be useful to make `v-model` work with the signal | ||||
|    * | ||||
|    * ```vue | ||||
|    * <template> | ||||
|    *   <input v-model="model.count" /> | ||||
|    * </template>; | ||||
|    * | ||||
|    * <script setup lang="ts"> | ||||
|    *  const state = useSignal({ count: 0 }, { useRef: true }); | ||||
|    * | ||||
|    *  const model = state.getRef(); | ||||
|    * </script> | ||||
|    * ``` | ||||
|    */ | ||||
|   getRef(): Readonly<ShallowRef<Readonly<T>>>; | ||||
| } | ||||
|  | ||||
| export interface ReadonlySignal<T> { | ||||
|   (): Readonly<T>; | ||||
| } | ||||
|  | ||||
| export interface SignalOptions { | ||||
|   /** | ||||
|    * Whether to use `ref` to store the value | ||||
|    * | ||||
|    * @default false use `sharedRef` to store the value | ||||
|    */ | ||||
|   useRef?: boolean; | ||||
| } | ||||
|  | ||||
| export function useSignal<T>(initialValue: T, options?: SignalOptions): Signal<T> { | ||||
|   const { useRef } = options || {}; | ||||
|  | ||||
|   const state = useRef ? (ref(initialValue) as Ref<T>) : shallowRef(initialValue); | ||||
|  | ||||
|   return createSignal(state); | ||||
| } | ||||
|  | ||||
| export function useComputed<T>(getter: ComputedGetter<T>, debugOptions?: DebuggerOptions): ReadonlySignal<T>; | ||||
| export function useComputed<T>(options: WritableComputedOptions<T>, debugOptions?: DebuggerOptions): Signal<T>; | ||||
| export function useComputed<T>( | ||||
|   getterOrOptions: ComputedGetter<T> | WritableComputedOptions<T>, | ||||
|   debugOptions?: DebuggerOptions | ||||
| ) { | ||||
|   const isGetter = typeof getterOrOptions === 'function'; | ||||
|  | ||||
|   const computedValue = computed(getterOrOptions as any, debugOptions); | ||||
|  | ||||
|   if (isGetter) { | ||||
|     return () => computedValue.value as ReadonlySignal<T>; | ||||
|   } | ||||
|  | ||||
|   return createSignal(computedValue); | ||||
| } | ||||
|  | ||||
| function createSignal<T>(state: ShallowRef<T> | WritableComputedRef<T>): Signal<T> { | ||||
|   const signal = () => state.value; | ||||
|  | ||||
|   signal.set = (value: T) => { | ||||
|     state.value = value; | ||||
|   }; | ||||
|  | ||||
|   signal.update = (updater: Updater<T>) => { | ||||
|     state.value = updater(state.value); | ||||
|   }; | ||||
|  | ||||
|   signal.mutate = (mutator: Mutator<T>) => { | ||||
|     mutator(state.value); | ||||
|     triggerRef(state); | ||||
|   }; | ||||
|  | ||||
|   signal.getRef = () => state as Readonly<ShallowRef<Readonly<T>>>; | ||||
|  | ||||
|   return signal; | ||||
| } | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "@sa/materials", | ||||
|   "version": "1.0.5", | ||||
|   "version": "1.0.6", | ||||
|   "exports": { | ||||
|     ".": "./src/index.ts" | ||||
|   }, | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "@sa/fetch", | ||||
|   "version": "1.0.5", | ||||
|   "version": "1.0.6", | ||||
|   "exports": { | ||||
|     ".": "./src/index.ts" | ||||
|   }, | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "@sa/scripts", | ||||
|   "version": "1.0.5", | ||||
|   "version": "1.0.6", | ||||
|   "bin": { | ||||
|     "sa": "./bin.ts" | ||||
|   }, | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "@sa/uno-preset", | ||||
|   "version": "1.0.5", | ||||
|   "version": "1.0.6", | ||||
|   "exports": { | ||||
|     ".": "./src/index.ts" | ||||
|   }, | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "@sa/utils", | ||||
|   "version": "1.0.5", | ||||
|   "version": "1.0.6", | ||||
|   "exports": { | ||||
|     ".": "./src/index.ts" | ||||
|   }, | ||||
|   | ||||
							
								
								
									
										272
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										272
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							| @@ -13,7 +13,7 @@ importers: | ||||
|         version: 2.5.1 | ||||
|       '@iconify/vue': | ||||
|         specifier: 4.1.2 | ||||
|         version: 4.1.2(vue@3.4.23(typescript@5.4.5)) | ||||
|         version: 4.1.2(vue@3.4.25(typescript@5.4.5)) | ||||
|       '@sa/axios': | ||||
|         specifier: workspace:* | ||||
|         version: link:packages/axios | ||||
| @@ -31,7 +31,7 @@ importers: | ||||
|         version: link:packages/utils | ||||
|       '@vueuse/core': | ||||
|         specifier: 10.9.0 | ||||
|         version: 10.9.0(vue@3.4.23(typescript@5.4.5)) | ||||
|         version: 10.9.0(vue@3.4.25(typescript@5.4.5)) | ||||
|       clipboard: | ||||
|         specifier: 2.0.11 | ||||
|         version: 2.0.11 | ||||
| @@ -46,32 +46,32 @@ importers: | ||||
|         version: 4.17.21 | ||||
|       naive-ui: | ||||
|         specifier: 2.38.1 | ||||
|         version: 2.38.1(vue@3.4.23(typescript@5.4.5)) | ||||
|         version: 2.38.1(vue@3.4.25(typescript@5.4.5)) | ||||
|       nprogress: | ||||
|         specifier: 0.2.0 | ||||
|         version: 0.2.0 | ||||
|       pinia: | ||||
|         specifier: 2.1.7 | ||||
|         version: 2.1.7(typescript@5.4.5)(vue@3.4.23(typescript@5.4.5)) | ||||
|         version: 2.1.7(typescript@5.4.5)(vue@3.4.25(typescript@5.4.5)) | ||||
|       vue: | ||||
|         specifier: 3.4.23 | ||||
|         version: 3.4.23(typescript@5.4.5) | ||||
|         specifier: 3.4.25 | ||||
|         version: 3.4.25(typescript@5.4.5) | ||||
|       vue-draggable-plus: | ||||
|         specifier: 0.4.0 | ||||
|         version: 0.4.0(@types/sortablejs@1.15.8) | ||||
|       vue-i18n: | ||||
|         specifier: 9.13.1 | ||||
|         version: 9.13.1(vue@3.4.23(typescript@5.4.5)) | ||||
|         version: 9.13.1(vue@3.4.25(typescript@5.4.5)) | ||||
|       vue-router: | ||||
|         specifier: 4.3.2 | ||||
|         version: 4.3.2(vue@3.4.23(typescript@5.4.5)) | ||||
|         version: 4.3.2(vue@3.4.25(typescript@5.4.5)) | ||||
|     devDependencies: | ||||
|       '@elegant-router/vue': | ||||
|         specifier: 0.3.6 | ||||
|         version: 0.3.6 | ||||
|       '@iconify/json': | ||||
|         specifier: 2.2.203 | ||||
|         version: 2.2.203 | ||||
|         specifier: 2.2.204 | ||||
|         version: 2.2.204 | ||||
|       '@sa/scripts': | ||||
|         specifier: workspace:* | ||||
|         version: link:packages/scripts | ||||
| @@ -110,10 +110,10 @@ importers: | ||||
|         version: 0.59.4(rollup@4.16.4)(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)) | ||||
|       '@vitejs/plugin-vue': | ||||
|         specifier: 5.0.4 | ||||
|         version: 5.0.4(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5)) | ||||
|         version: 5.0.4(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5)) | ||||
|       '@vitejs/plugin-vue-jsx': | ||||
|         specifier: 3.1.0 | ||||
|         version: 3.1.0(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5)) | ||||
|         version: 3.1.0(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5)) | ||||
|       eslint: | ||||
|         specifier: 9.1.1 | ||||
|         version: 9.1.1 | ||||
| @@ -140,7 +140,7 @@ importers: | ||||
|         version: 0.18.5(@vue/compiler-sfc@3.4.24)(vue-template-compiler@2.7.16) | ||||
|       unplugin-vue-components: | ||||
|         specifier: 0.26.0 | ||||
|         version: 0.26.0(@babel/parser@7.24.4)(rollup@4.16.4)(vue@3.4.23(typescript@5.4.5)) | ||||
|         version: 0.26.0(@babel/parser@7.24.4)(rollup@4.16.4)(vue@3.4.25(typescript@5.4.5)) | ||||
|       vite: | ||||
|         specifier: 5.2.10 | ||||
|         version: 5.2.10(@types/node@20.12.7)(sass@1.75.0) | ||||
| @@ -152,7 +152,7 @@ importers: | ||||
|         version: 2.0.1(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)) | ||||
|       vite-plugin-vue-devtools: | ||||
|         specifier: 7.1.2 | ||||
|         version: 7.1.2(rollup@4.16.4)(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5)) | ||||
|         version: 7.1.2(rollup@4.16.4)(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5)) | ||||
|       vue-eslint-parser: | ||||
|         specifier: 9.4.2 | ||||
|         version: 9.4.2(eslint@9.1.1) | ||||
| @@ -198,7 +198,7 @@ importers: | ||||
|         version: link:../utils | ||||
|       simplebar-vue: | ||||
|         specifier: 2.3.3 | ||||
|         version: 2.3.3(vue@3.4.23(typescript@5.4.5)) | ||||
|         version: 2.3.3(vue@3.4.25(typescript@5.4.5)) | ||||
|     devDependencies: | ||||
|       typed-css-modules: | ||||
|         specifier: 0.9.1 | ||||
| @@ -800,8 +800,8 @@ packages: | ||||
|     resolution: {integrity: sha512-X38nUbachlb01YMlvPFojKoiXq+LzZvuSce70KPMPdeM1Rj03k4dR7lDslhbqXn3Ang4EU3+EAmwEAsbrjHW3g==} | ||||
|     engines: {node: '>=18.18'} | ||||
|  | ||||
|   '@iconify/json@2.2.203': | ||||
|     resolution: {integrity: sha512-SjtZP6JGbklux1Nf8nQYDZTYRxdKvXLsRQIRvSgMc2z8z9UHpoRakpe8JGT7w1RjK6MMVIfal7Nrf9w8yjKDcA==} | ||||
|   '@iconify/json@2.2.204': | ||||
|     resolution: {integrity: sha512-sFlh+TIF54DZoEzsF5YVWY7XEzjN2ZSmCjtzvajk5EdNjvPAKr9Tvvptoyj6hcuylJsDxiU12FRDSdygW1c8bg==} | ||||
|  | ||||
|   '@iconify/types@2.0.0': | ||||
|     resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} | ||||
| @@ -1353,30 +1353,30 @@ packages: | ||||
|     peerDependencies: | ||||
|       '@babel/core': ^7.0.0-0 | ||||
|  | ||||
|   '@vue/compiler-core@3.4.23': | ||||
|     resolution: {integrity: sha512-HAFmuVEwNqNdmk+w4VCQ2pkLk1Vw4XYiiyxEp3z/xvl14aLTUBw2OfVH3vBcx+FtGsynQLkkhK410Nah1N2yyQ==} | ||||
|  | ||||
|   '@vue/compiler-core@3.4.24': | ||||
|     resolution: {integrity: sha512-vbW/tgbwJYj62N/Ww99x0zhFTkZDTcGh3uwJEuadZ/nF9/xuFMC4693P9r+3sxGXISABpDKvffY5ApH9pmdd1A==} | ||||
|  | ||||
|   '@vue/compiler-dom@3.4.23': | ||||
|     resolution: {integrity: sha512-t0b9WSTnCRrzsBGrDd1LNR5HGzYTr7LX3z6nNBG+KGvZLqrT0mY6NsMzOqlVMBKKXKVuusbbB5aOOFgTY+senw==} | ||||
|   '@vue/compiler-core@3.4.25': | ||||
|     resolution: {integrity: sha512-Y2pLLopaElgWnMNolgG8w3C5nNUVev80L7hdQ5iIKPtMJvhVpG0zhnBG/g3UajJmZdvW0fktyZTotEHD1Srhbg==} | ||||
|  | ||||
|   '@vue/compiler-dom@3.4.24': | ||||
|     resolution: {integrity: sha512-4XgABML/4cNndVsQndG6BbGN7+EoisDwi3oXNovqL/4jdNhwvP8/rfRMTb6FxkxIxUUtg6AI1/qZvwfSjxJiWA==} | ||||
|  | ||||
|   '@vue/compiler-sfc@3.4.23': | ||||
|     resolution: {integrity: sha512-fSDTKTfzaRX1kNAUiaj8JB4AokikzStWgHooMhaxyjZerw624L+IAP/fvI4ZwMpwIh8f08PVzEnu4rg8/Npssw==} | ||||
|   '@vue/compiler-dom@3.4.25': | ||||
|     resolution: {integrity: sha512-Ugz5DusW57+HjllAugLci19NsDK+VyjGvmbB2TXaTcSlQxwL++2PETHx/+Qv6qFwNLzSt7HKepPe4DcTE3pBWg==} | ||||
|  | ||||
|   '@vue/compiler-sfc@3.4.24': | ||||
|     resolution: {integrity: sha512-nRAlJUK02FTWfA2nuvNBAqsDZuERGFgxZ8sGH62XgFSvMxO2URblzulExsmj4gFZ8e+VAyDooU9oAoXfEDNxTA==} | ||||
|  | ||||
|   '@vue/compiler-ssr@3.4.23': | ||||
|     resolution: {integrity: sha512-hb6Uj2cYs+tfqz71Wj6h3E5t6OKvb4MVcM2Nl5i/z1nv1gjEhw+zYaNOV+Xwn+SSN/VZM0DgANw5TuJfxfezPg==} | ||||
|   '@vue/compiler-sfc@3.4.25': | ||||
|     resolution: {integrity: sha512-m7rryuqzIoQpOBZ18wKyq05IwL6qEpZxFZfRxlNYuIPDqywrXQxgUwLXIvoU72gs6cRdY6wHD0WVZIFE4OEaAQ==} | ||||
|  | ||||
|   '@vue/compiler-ssr@3.4.24': | ||||
|     resolution: {integrity: sha512-ZsAtr4fhaUFnVcDqwW3bYCSDwq+9Gk69q2r/7dAHDrOMw41kylaMgOP4zRnn6GIEJkQznKgrMOGPMFnLB52RbQ==} | ||||
|  | ||||
|   '@vue/compiler-ssr@3.4.25': | ||||
|     resolution: {integrity: sha512-H2ohvM/Pf6LelGxDBnfbbXFPyM4NE3hrw0e/EpwuSiYu8c819wx+SVGdJ65p/sFrYDd6OnSDxN1MB2mN07hRSQ==} | ||||
|  | ||||
|   '@vue/devtools-api@6.6.1': | ||||
|     resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} | ||||
|  | ||||
| @@ -1399,26 +1399,26 @@ packages: | ||||
|       typescript: | ||||
|         optional: true | ||||
|  | ||||
|   '@vue/reactivity@3.4.23': | ||||
|     resolution: {integrity: sha512-GlXR9PL+23fQ3IqnbSQ8OQKLodjqCyoCrmdLKZk3BP7jN6prWheAfU7a3mrltewTkoBm+N7qMEb372VHIkQRMQ==} | ||||
|   '@vue/reactivity@3.4.25': | ||||
|     resolution: {integrity: sha512-mKbEtKr1iTxZkAG3vm3BtKHAOhuI4zzsVcN0epDldU/THsrvfXRKzq+lZnjczZGnTdh3ojd86/WrP+u9M51pWQ==} | ||||
|  | ||||
|   '@vue/runtime-core@3.4.23': | ||||
|     resolution: {integrity: sha512-FeQ9MZEXoFzFkFiw9MQQ/FWs3srvrP+SjDKSeRIiQHIhtkzoj0X4rWQlRNHbGuSwLra6pMyjAttwixNMjc/xLw==} | ||||
|   '@vue/runtime-core@3.4.25': | ||||
|     resolution: {integrity: sha512-3qhsTqbEh8BMH3pXf009epCI5E7bKu28fJLi9O6W+ZGt/6xgSfMuGPqa5HRbUxLoehTNp5uWvzCr60KuiRIL0Q==} | ||||
|  | ||||
|   '@vue/runtime-dom@3.4.23': | ||||
|     resolution: {integrity: sha512-RXJFwwykZWBkMiTPSLEWU3kgVLNAfActBfWFlZd0y79FTUxexogd0PLG4HH2LfOktjRxV47Nulygh0JFXe5f9A==} | ||||
|   '@vue/runtime-dom@3.4.25': | ||||
|     resolution: {integrity: sha512-ode0sj77kuwXwSc+2Yhk8JMHZh1sZp9F/51wdBiz3KGaWltbKtdihlJFhQG4H6AY+A06zzeMLkq6qu8uDSsaoA==} | ||||
|  | ||||
|   '@vue/server-renderer@3.4.23': | ||||
|     resolution: {integrity: sha512-LDwGHtnIzvKFNS8dPJ1SSU5Gvm36p2ck8wCZc52fc3k/IfjKcwCyrWEf0Yag/2wTFUBXrqizfhK9c/mC367dXQ==} | ||||
|   '@vue/server-renderer@3.4.25': | ||||
|     resolution: {integrity: sha512-8VTwq0Zcu3K4dWV0jOwIVINESE/gha3ifYCOKEhxOj6MEl5K5y8J8clQncTcDhKF+9U765nRw4UdUEXvrGhyVQ==} | ||||
|     peerDependencies: | ||||
|       vue: 3.4.23 | ||||
|  | ||||
|   '@vue/shared@3.4.23': | ||||
|     resolution: {integrity: sha512-wBQ0gvf+SMwsCQOyusNw/GoXPV47WGd1xB5A1Pgzy0sQ3Bi5r5xm3n+92y3gCnB3MWqnRDdvfkRGxhKtbBRNgg==} | ||||
|       vue: 3.4.25 | ||||
|  | ||||
|   '@vue/shared@3.4.24': | ||||
|     resolution: {integrity: sha512-BW4tajrJBM9AGAknnyEw5tO2xTmnqgup0VTnDAMcxYmqOX0RG0b9aSUGAbEKolD91tdwpA6oCwbltoJoNzpItw==} | ||||
|  | ||||
|   '@vue/shared@3.4.25': | ||||
|     resolution: {integrity: sha512-k0yappJ77g2+KNrIaF0FFnzwLvUBLUYr8VOwz+/6vLsmItFp51AcxLL7Ey3iPd7BIRyWPOcqUjMnm7OkahXllA==} | ||||
|  | ||||
|   '@vueuse/core@10.9.0': | ||||
|     resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==} | ||||
|  | ||||
| @@ -4722,8 +4722,8 @@ packages: | ||||
|     peerDependencies: | ||||
|       typescript: '*' | ||||
|  | ||||
|   vue@3.4.23: | ||||
|     resolution: {integrity: sha512-X1y6yyGJ28LMUBJ0k/qIeKHstGd+BlWQEOT40x3auJFTmpIhpbKLgN7EFsqalnJXq1Km5ybDEsp6BhuWKciUDg==} | ||||
|   vue@3.4.25: | ||||
|     resolution: {integrity: sha512-HWyDqoBHMgav/OKiYA2ZQg+kjfMgLt/T0vg4cbIF7JbXAjDexRf5JRg+PWAfrAkSmTd2I8aPSXtooBFWHB98cg==} | ||||
|     peerDependencies: | ||||
|       typescript: '*' | ||||
|     peerDependenciesMeta: | ||||
| @@ -5068,9 +5068,9 @@ snapshots: | ||||
|     dependencies: | ||||
|       css-render: 0.15.12 | ||||
|  | ||||
|   '@css-render/vue3-ssr@0.15.12(vue@3.4.23(typescript@5.4.5))': | ||||
|   '@css-render/vue3-ssr@0.15.12(vue@3.4.25(typescript@5.4.5))': | ||||
|     dependencies: | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|  | ||||
|   '@elegant-router/core@0.3.6': | ||||
|     dependencies: | ||||
| @@ -5284,7 +5284,7 @@ snapshots: | ||||
|  | ||||
|   '@humanwhocodes/retry@0.2.3': {} | ||||
|  | ||||
|   '@iconify/json@2.2.203': | ||||
|   '@iconify/json@2.2.204': | ||||
|     dependencies: | ||||
|       '@iconify/types': 2.0.0 | ||||
|       pathe: 1.1.2 | ||||
| @@ -5303,10 +5303,10 @@ snapshots: | ||||
|     transitivePeerDependencies: | ||||
|       - supports-color | ||||
|  | ||||
|   '@iconify/vue@4.1.2(vue@3.4.23(typescript@5.4.5))': | ||||
|   '@iconify/vue@4.1.2(vue@3.4.25(typescript@5.4.5))': | ||||
|     dependencies: | ||||
|       '@iconify/types': 2.0.0 | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|  | ||||
|   '@intlify/core-base@9.13.1': | ||||
|     dependencies: | ||||
| @@ -5865,20 +5865,20 @@ snapshots: | ||||
|     transitivePeerDependencies: | ||||
|       - rollup | ||||
|  | ||||
|   '@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5))': | ||||
|   '@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5))': | ||||
|     dependencies: | ||||
|       '@babel/core': 7.24.4 | ||||
|       '@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.24.4) | ||||
|       '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.4) | ||||
|       vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0) | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|     transitivePeerDependencies: | ||||
|       - supports-color | ||||
|  | ||||
|   '@vitejs/plugin-vue@5.0.4(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5))': | ||||
|   '@vitejs/plugin-vue@5.0.4(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5))': | ||||
|     dependencies: | ||||
|       vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0) | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|  | ||||
|   '@volar/language-core@2.2.0-alpha.10': | ||||
|     dependencies: | ||||
| @@ -5922,14 +5922,6 @@ snapshots: | ||||
|       '@babel/parser': 7.24.4 | ||||
|       '@vue/compiler-sfc': 3.4.24 | ||||
|  | ||||
|   '@vue/compiler-core@3.4.23': | ||||
|     dependencies: | ||||
|       '@babel/parser': 7.24.4 | ||||
|       '@vue/shared': 3.4.23 | ||||
|       entities: 4.5.0 | ||||
|       estree-walker: 2.0.2 | ||||
|       source-map-js: 1.2.0 | ||||
|  | ||||
|   '@vue/compiler-core@3.4.24': | ||||
|     dependencies: | ||||
|       '@babel/parser': 7.24.4 | ||||
| @@ -5938,27 +5930,23 @@ snapshots: | ||||
|       estree-walker: 2.0.2 | ||||
|       source-map-js: 1.2.0 | ||||
|  | ||||
|   '@vue/compiler-dom@3.4.23': | ||||
|   '@vue/compiler-core@3.4.25': | ||||
|     dependencies: | ||||
|       '@vue/compiler-core': 3.4.23 | ||||
|       '@vue/shared': 3.4.23 | ||||
|       '@babel/parser': 7.24.4 | ||||
|       '@vue/shared': 3.4.25 | ||||
|       entities: 4.5.0 | ||||
|       estree-walker: 2.0.2 | ||||
|       source-map-js: 1.2.0 | ||||
|  | ||||
|   '@vue/compiler-dom@3.4.24': | ||||
|     dependencies: | ||||
|       '@vue/compiler-core': 3.4.24 | ||||
|       '@vue/shared': 3.4.24 | ||||
|  | ||||
|   '@vue/compiler-sfc@3.4.23': | ||||
|   '@vue/compiler-dom@3.4.25': | ||||
|     dependencies: | ||||
|       '@babel/parser': 7.24.4 | ||||
|       '@vue/compiler-core': 3.4.23 | ||||
|       '@vue/compiler-dom': 3.4.23 | ||||
|       '@vue/compiler-ssr': 3.4.23 | ||||
|       '@vue/shared': 3.4.23 | ||||
|       estree-walker: 2.0.2 | ||||
|       magic-string: 0.30.10 | ||||
|       postcss: 8.4.38 | ||||
|       source-map-js: 1.2.0 | ||||
|       '@vue/compiler-core': 3.4.25 | ||||
|       '@vue/shared': 3.4.25 | ||||
|  | ||||
|   '@vue/compiler-sfc@3.4.24': | ||||
|     dependencies: | ||||
| @@ -5972,21 +5960,33 @@ snapshots: | ||||
|       postcss: 8.4.38 | ||||
|       source-map-js: 1.2.0 | ||||
|  | ||||
|   '@vue/compiler-ssr@3.4.23': | ||||
|   '@vue/compiler-sfc@3.4.25': | ||||
|     dependencies: | ||||
|       '@vue/compiler-dom': 3.4.23 | ||||
|       '@vue/shared': 3.4.23 | ||||
|       '@babel/parser': 7.24.4 | ||||
|       '@vue/compiler-core': 3.4.25 | ||||
|       '@vue/compiler-dom': 3.4.25 | ||||
|       '@vue/compiler-ssr': 3.4.25 | ||||
|       '@vue/shared': 3.4.25 | ||||
|       estree-walker: 2.0.2 | ||||
|       magic-string: 0.30.10 | ||||
|       postcss: 8.4.38 | ||||
|       source-map-js: 1.2.0 | ||||
|  | ||||
|   '@vue/compiler-ssr@3.4.24': | ||||
|     dependencies: | ||||
|       '@vue/compiler-dom': 3.4.24 | ||||
|       '@vue/shared': 3.4.24 | ||||
|  | ||||
|   '@vue/compiler-ssr@3.4.25': | ||||
|     dependencies: | ||||
|       '@vue/compiler-dom': 3.4.25 | ||||
|       '@vue/shared': 3.4.25 | ||||
|  | ||||
|   '@vue/devtools-api@6.6.1': {} | ||||
|  | ||||
|   '@vue/devtools-core@7.1.2(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5))': | ||||
|   '@vue/devtools-core@7.1.2(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5))': | ||||
|     dependencies: | ||||
|       '@vue/devtools-kit': 7.1.2(vue@3.4.23(typescript@5.4.5)) | ||||
|       '@vue/devtools-kit': 7.1.2(vue@3.4.25(typescript@5.4.5)) | ||||
|       '@vue/devtools-shared': 7.1.2 | ||||
|       mitt: 3.0.1 | ||||
|       nanoid: 3.3.7 | ||||
| @@ -5996,14 +5996,14 @@ snapshots: | ||||
|       - vite | ||||
|       - vue | ||||
|  | ||||
|   '@vue/devtools-kit@7.1.2(vue@3.4.23(typescript@5.4.5))': | ||||
|   '@vue/devtools-kit@7.1.2(vue@3.4.25(typescript@5.4.5))': | ||||
|     dependencies: | ||||
|       '@vue/devtools-shared': 7.1.2 | ||||
|       hookable: 5.5.3 | ||||
|       mitt: 3.0.1 | ||||
|       perfect-debounce: 1.0.0 | ||||
|       speakingurl: 14.0.1 | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|  | ||||
|   '@vue/devtools-shared@7.1.2': | ||||
|     dependencies: | ||||
| @@ -6021,46 +6021,46 @@ snapshots: | ||||
|     optionalDependencies: | ||||
|       typescript: 5.4.5 | ||||
|  | ||||
|   '@vue/reactivity@3.4.23': | ||||
|   '@vue/reactivity@3.4.25': | ||||
|     dependencies: | ||||
|       '@vue/shared': 3.4.23 | ||||
|       '@vue/shared': 3.4.25 | ||||
|  | ||||
|   '@vue/runtime-core@3.4.23': | ||||
|   '@vue/runtime-core@3.4.25': | ||||
|     dependencies: | ||||
|       '@vue/reactivity': 3.4.23 | ||||
|       '@vue/shared': 3.4.23 | ||||
|       '@vue/reactivity': 3.4.25 | ||||
|       '@vue/shared': 3.4.25 | ||||
|  | ||||
|   '@vue/runtime-dom@3.4.23': | ||||
|   '@vue/runtime-dom@3.4.25': | ||||
|     dependencies: | ||||
|       '@vue/runtime-core': 3.4.23 | ||||
|       '@vue/shared': 3.4.23 | ||||
|       '@vue/runtime-core': 3.4.25 | ||||
|       '@vue/shared': 3.4.25 | ||||
|       csstype: 3.1.3 | ||||
|  | ||||
|   '@vue/server-renderer@3.4.23(vue@3.4.23(typescript@5.4.5))': | ||||
|   '@vue/server-renderer@3.4.25(vue@3.4.25(typescript@5.4.5))': | ||||
|     dependencies: | ||||
|       '@vue/compiler-ssr': 3.4.23 | ||||
|       '@vue/shared': 3.4.23 | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|  | ||||
|   '@vue/shared@3.4.23': {} | ||||
|       '@vue/compiler-ssr': 3.4.25 | ||||
|       '@vue/shared': 3.4.25 | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|  | ||||
|   '@vue/shared@3.4.24': {} | ||||
|  | ||||
|   '@vueuse/core@10.9.0(vue@3.4.23(typescript@5.4.5))': | ||||
|   '@vue/shared@3.4.25': {} | ||||
|  | ||||
|   '@vueuse/core@10.9.0(vue@3.4.25(typescript@5.4.5))': | ||||
|     dependencies: | ||||
|       '@types/web-bluetooth': 0.0.20 | ||||
|       '@vueuse/metadata': 10.9.0 | ||||
|       '@vueuse/shared': 10.9.0(vue@3.4.23(typescript@5.4.5)) | ||||
|       vue-demi: 0.14.7(vue@3.4.23(typescript@5.4.5)) | ||||
|       '@vueuse/shared': 10.9.0(vue@3.4.25(typescript@5.4.5)) | ||||
|       vue-demi: 0.14.7(vue@3.4.25(typescript@5.4.5)) | ||||
|     transitivePeerDependencies: | ||||
|       - '@vue/composition-api' | ||||
|       - vue | ||||
|  | ||||
|   '@vueuse/metadata@10.9.0': {} | ||||
|  | ||||
|   '@vueuse/shared@10.9.0(vue@3.4.23(typescript@5.4.5))': | ||||
|   '@vueuse/shared@10.9.0(vue@3.4.25(typescript@5.4.5))': | ||||
|     dependencies: | ||||
|       vue-demi: 0.14.7(vue@3.4.23(typescript@5.4.5)) | ||||
|       vue-demi: 0.14.7(vue@3.4.25(typescript@5.4.5)) | ||||
|     transitivePeerDependencies: | ||||
|       - '@vue/composition-api' | ||||
|       - vue | ||||
| @@ -8347,10 +8347,10 @@ snapshots: | ||||
|  | ||||
|   muggle-string@0.4.1: {} | ||||
|  | ||||
|   naive-ui@2.38.1(vue@3.4.23(typescript@5.4.5)): | ||||
|   naive-ui@2.38.1(vue@3.4.25(typescript@5.4.5)): | ||||
|     dependencies: | ||||
|       '@css-render/plugin-bem': 0.15.12(css-render@0.15.12) | ||||
|       '@css-render/vue3-ssr': 0.15.12(vue@3.4.23(typescript@5.4.5)) | ||||
|       '@css-render/vue3-ssr': 0.15.12(vue@3.4.25(typescript@5.4.5)) | ||||
|       '@types/katex': 0.16.7 | ||||
|       '@types/lodash': 4.17.0 | ||||
|       '@types/lodash-es': 4.17.12 | ||||
| @@ -8365,10 +8365,10 @@ snapshots: | ||||
|       lodash-es: 4.17.21 | ||||
|       seemly: 0.3.8 | ||||
|       treemate: 0.3.11 | ||||
|       vdirs: 0.1.8(vue@3.4.23(typescript@5.4.5)) | ||||
|       vooks: 0.2.12(vue@3.4.23(typescript@5.4.5)) | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vueuc: 0.4.58(vue@3.4.23(typescript@5.4.5)) | ||||
|       vdirs: 0.1.8(vue@3.4.25(typescript@5.4.5)) | ||||
|       vooks: 0.2.12(vue@3.4.25(typescript@5.4.5)) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|       vueuc: 0.4.58(vue@3.4.25(typescript@5.4.5)) | ||||
|  | ||||
|   nanoid@3.3.7: {} | ||||
|  | ||||
| @@ -8714,11 +8714,11 @@ snapshots: | ||||
|  | ||||
|   pidtree@0.6.0: {} | ||||
|  | ||||
|   pinia@2.1.7(typescript@5.4.5)(vue@3.4.23(typescript@5.4.5)): | ||||
|   pinia@2.1.7(typescript@5.4.5)(vue@3.4.25(typescript@5.4.5)): | ||||
|     dependencies: | ||||
|       '@vue/devtools-api': 6.6.1 | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vue-demi: 0.14.7(vue@3.4.23(typescript@5.4.5)) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|       vue-demi: 0.14.7(vue@3.4.25(typescript@5.4.5)) | ||||
|     optionalDependencies: | ||||
|       typescript: 5.4.5 | ||||
|  | ||||
| @@ -9149,11 +9149,11 @@ snapshots: | ||||
|       lodash: 4.17.21 | ||||
|       lodash-es: 4.17.21 | ||||
|  | ||||
|   simplebar-vue@2.3.3(vue@3.4.23(typescript@5.4.5)): | ||||
|   simplebar-vue@2.3.3(vue@3.4.25(typescript@5.4.5)): | ||||
|     dependencies: | ||||
|       simplebar-core: 1.2.4 | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vue-demi: 0.13.11(vue@3.4.23(typescript@5.4.5)) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|       vue-demi: 0.13.11(vue@3.4.25(typescript@5.4.5)) | ||||
|     transitivePeerDependencies: | ||||
|       - '@vue/composition-api' | ||||
|  | ||||
| @@ -9618,7 +9618,7 @@ snapshots: | ||||
|     transitivePeerDependencies: | ||||
|       - supports-color | ||||
|  | ||||
|   unplugin-vue-components@0.26.0(@babel/parser@7.24.4)(rollup@4.16.4)(vue@3.4.23(typescript@5.4.5)): | ||||
|   unplugin-vue-components@0.26.0(@babel/parser@7.24.4)(rollup@4.16.4)(vue@3.4.25(typescript@5.4.5)): | ||||
|     dependencies: | ||||
|       '@antfu/utils': 0.7.7 | ||||
|       '@rollup/pluginutils': 5.1.0(rollup@4.16.4) | ||||
| @@ -9630,7 +9630,7 @@ snapshots: | ||||
|       minimatch: 9.0.4 | ||||
|       resolve: 1.22.8 | ||||
|       unplugin: 1.10.1 | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|     optionalDependencies: | ||||
|       '@babel/parser': 7.24.4 | ||||
|     transitivePeerDependencies: | ||||
| @@ -9710,10 +9710,10 @@ snapshots: | ||||
|  | ||||
|   vary@1.1.2: {} | ||||
|  | ||||
|   vdirs@0.1.8(vue@3.4.23(typescript@5.4.5)): | ||||
|   vdirs@0.1.8(vue@3.4.25(typescript@5.4.5)): | ||||
|     dependencies: | ||||
|       evtd: 0.2.4 | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|  | ||||
|   vite-hot-client@0.2.3(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)): | ||||
|     dependencies: | ||||
| @@ -9756,10 +9756,10 @@ snapshots: | ||||
|     transitivePeerDependencies: | ||||
|       - supports-color | ||||
|  | ||||
|   vite-plugin-vue-devtools@7.1.2(rollup@4.16.4)(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5)): | ||||
|   vite-plugin-vue-devtools@7.1.2(rollup@4.16.4)(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5)): | ||||
|     dependencies: | ||||
|       '@vue/devtools-core': 7.1.2(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.23(typescript@5.4.5)) | ||||
|       '@vue/devtools-kit': 7.1.2(vue@3.4.23(typescript@5.4.5)) | ||||
|       '@vue/devtools-core': 7.1.2(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.25(typescript@5.4.5)) | ||||
|       '@vue/devtools-kit': 7.1.2(vue@3.4.25(typescript@5.4.5)) | ||||
|       '@vue/devtools-shared': 7.1.2 | ||||
|       execa: 8.0.1 | ||||
|       sirv: 2.0.4 | ||||
| @@ -9797,18 +9797,18 @@ snapshots: | ||||
|       fsevents: 2.3.3 | ||||
|       sass: 1.75.0 | ||||
|  | ||||
|   vooks@0.2.12(vue@3.4.23(typescript@5.4.5)): | ||||
|   vooks@0.2.12(vue@3.4.25(typescript@5.4.5)): | ||||
|     dependencies: | ||||
|       evtd: 0.2.4 | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|  | ||||
|   vue-demi@0.13.11(vue@3.4.23(typescript@5.4.5)): | ||||
|   vue-demi@0.13.11(vue@3.4.25(typescript@5.4.5)): | ||||
|     dependencies: | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|  | ||||
|   vue-demi@0.14.7(vue@3.4.23(typescript@5.4.5)): | ||||
|   vue-demi@0.14.7(vue@3.4.25(typescript@5.4.5)): | ||||
|     dependencies: | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|  | ||||
|   vue-draggable-plus@0.4.0(@types/sortablejs@1.15.8): | ||||
|     dependencies: | ||||
| @@ -9827,17 +9827,17 @@ snapshots: | ||||
|     transitivePeerDependencies: | ||||
|       - supports-color | ||||
|  | ||||
|   vue-i18n@9.13.1(vue@3.4.23(typescript@5.4.5)): | ||||
|   vue-i18n@9.13.1(vue@3.4.25(typescript@5.4.5)): | ||||
|     dependencies: | ||||
|       '@intlify/core-base': 9.13.1 | ||||
|       '@intlify/shared': 9.13.1 | ||||
|       '@vue/devtools-api': 6.6.1 | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|  | ||||
|   vue-router@4.3.2(vue@3.4.23(typescript@5.4.5)): | ||||
|   vue-router@4.3.2(vue@3.4.25(typescript@5.4.5)): | ||||
|     dependencies: | ||||
|       '@vue/devtools-api': 6.6.1 | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|  | ||||
|   vue-template-compiler@2.7.16: | ||||
|     dependencies: | ||||
| @@ -9851,26 +9851,26 @@ snapshots: | ||||
|       semver: 7.6.0 | ||||
|       typescript: 5.4.5 | ||||
|  | ||||
|   vue@3.4.23(typescript@5.4.5): | ||||
|   vue@3.4.25(typescript@5.4.5): | ||||
|     dependencies: | ||||
|       '@vue/compiler-dom': 3.4.23 | ||||
|       '@vue/compiler-sfc': 3.4.23 | ||||
|       '@vue/runtime-dom': 3.4.23 | ||||
|       '@vue/server-renderer': 3.4.23(vue@3.4.23(typescript@5.4.5)) | ||||
|       '@vue/shared': 3.4.23 | ||||
|       '@vue/compiler-dom': 3.4.25 | ||||
|       '@vue/compiler-sfc': 3.4.25 | ||||
|       '@vue/runtime-dom': 3.4.25 | ||||
|       '@vue/server-renderer': 3.4.25(vue@3.4.25(typescript@5.4.5)) | ||||
|       '@vue/shared': 3.4.25 | ||||
|     optionalDependencies: | ||||
|       typescript: 5.4.5 | ||||
|  | ||||
|   vueuc@0.4.58(vue@3.4.23(typescript@5.4.5)): | ||||
|   vueuc@0.4.58(vue@3.4.25(typescript@5.4.5)): | ||||
|     dependencies: | ||||
|       '@css-render/vue3-ssr': 0.15.12(vue@3.4.23(typescript@5.4.5)) | ||||
|       '@css-render/vue3-ssr': 0.15.12(vue@3.4.25(typescript@5.4.5)) | ||||
|       '@juggle/resize-observer': 3.4.0 | ||||
|       css-render: 0.15.12 | ||||
|       evtd: 0.2.4 | ||||
|       seemly: 0.3.8 | ||||
|       vdirs: 0.1.8(vue@3.4.23(typescript@5.4.5)) | ||||
|       vooks: 0.2.12(vue@3.4.23(typescript@5.4.5)) | ||||
|       vue: 3.4.23(typescript@5.4.5) | ||||
|       vdirs: 0.1.8(vue@3.4.25(typescript@5.4.5)) | ||||
|       vooks: 0.2.12(vue@3.4.25(typescript@5.4.5)) | ||||
|       vue: 3.4.25(typescript@5.4.5) | ||||
|  | ||||
|   webpack-sources@3.2.3: {} | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,6 @@ | ||||
| <script setup lang="ts"> | ||||
| import { $t } from '@/locales'; | ||||
|  | ||||
| defineOptions({ | ||||
|   name: 'TableHeaderOperation' | ||||
| }); | ||||
|   | ||||
| @@ -18,6 +18,7 @@ defineOptions({ | ||||
|  | ||||
| const appStore = useAppStore(); | ||||
| const themeStore = useThemeStore(); | ||||
| const { menus } = setupMixMenuContext(); | ||||
|  | ||||
| const layoutMode = computed(() => { | ||||
|   const vertical: LayoutMode = 'vertical'; | ||||
| @@ -65,7 +66,7 @@ function getSiderWidth() { | ||||
|  | ||||
|   let w = isVerticalMix.value || isHorizontalMix.value ? mixWidth : width; | ||||
|  | ||||
|   if (isVerticalMix.value && appStore.mixSiderFixed) { | ||||
|   if (isVerticalMix.value && appStore.mixSiderFixed && menus.value.length) { | ||||
|     w += mixChildMenuWidth; | ||||
|   } | ||||
|  | ||||
| @@ -77,14 +78,12 @@ function getSiderCollapsedWidth() { | ||||
|  | ||||
|   let w = isVerticalMix.value || isHorizontalMix.value ? mixCollapsedWidth : collapsedWidth; | ||||
|  | ||||
|   if (isVerticalMix.value && appStore.mixSiderFixed) { | ||||
|   if (isVerticalMix.value && appStore.mixSiderFixed && menus.value.length) { | ||||
|     w += mixChildMenuWidth; | ||||
|   } | ||||
|  | ||||
|   return w; | ||||
| } | ||||
|  | ||||
| setupMixMenuContext(); | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
|   | ||||
| @@ -1,4 +1,47 @@ | ||||
| import { computed, ref, watch } from 'vue'; | ||||
| import { useRoute } from 'vue-router'; | ||||
| import { useContext } from '@sa/hooks'; | ||||
| import { useMixMenu } from '../hooks'; | ||||
| import { useRouteStore } from '@/store/modules/route'; | ||||
|  | ||||
| export const { setupStore: setupMixMenuContext, useStore: useMixMenuContext } = useContext('mix-menu', useMixMenu); | ||||
|  | ||||
| function useMixMenu() { | ||||
|   const route = useRoute(); | ||||
|   const routeStore = useRouteStore(); | ||||
|  | ||||
|   const activeFirstLevelMenuKey = ref(''); | ||||
|  | ||||
|   function setActiveFirstLevelMenuKey(key: string) { | ||||
|     activeFirstLevelMenuKey.value = key; | ||||
|   } | ||||
|  | ||||
|   function getActiveFirstLevelMenuKey() { | ||||
|     const { hideInMenu, activeMenu } = route.meta; | ||||
|     const name = route.name as string; | ||||
|  | ||||
|     const routeName = (hideInMenu ? activeMenu : name) || name; | ||||
|  | ||||
|     const [firstLevelRouteName] = routeName.split('_'); | ||||
|  | ||||
|     setActiveFirstLevelMenuKey(firstLevelRouteName); | ||||
|   } | ||||
|  | ||||
|   const menus = computed( | ||||
|     () => routeStore.menus.find(menu => menu.key === activeFirstLevelMenuKey.value)?.children || [] | ||||
|   ); | ||||
|  | ||||
|   watch( | ||||
|     () => route.name, | ||||
|     () => { | ||||
|       getActiveFirstLevelMenuKey(); | ||||
|     }, | ||||
|     { immediate: true } | ||||
|   ); | ||||
|  | ||||
|   return { | ||||
|     activeFirstLevelMenuKey, | ||||
|     setActiveFirstLevelMenuKey, | ||||
|     getActiveFirstLevelMenuKey, | ||||
|     menus | ||||
|   }; | ||||
| } | ||||
|   | ||||
| @@ -1,44 +0,0 @@ | ||||
| import { computed, ref, watch } from 'vue'; | ||||
| import { useRoute } from 'vue-router'; | ||||
| import { useRouteStore } from '@/store/modules/route'; | ||||
|  | ||||
| export function useMixMenu() { | ||||
|   const route = useRoute(); | ||||
|   const routeStore = useRouteStore(); | ||||
|  | ||||
|   const activeFirstLevelMenuKey = ref(''); | ||||
|  | ||||
|   function setActiveFirstLevelMenuKey(key: string) { | ||||
|     activeFirstLevelMenuKey.value = key; | ||||
|   } | ||||
|  | ||||
|   function getActiveFirstLevelMenuKey() { | ||||
|     const { hideInMenu, activeMenu } = route.meta; | ||||
|     const name = route.name as string; | ||||
|  | ||||
|     const routeName = (hideInMenu ? activeMenu : name) || name; | ||||
|  | ||||
|     const [firstLevelRouteName] = routeName.split('_'); | ||||
|  | ||||
|     setActiveFirstLevelMenuKey(firstLevelRouteName); | ||||
|   } | ||||
|  | ||||
|   const menus = computed( | ||||
|     () => routeStore.menus.find(menu => menu.key === activeFirstLevelMenuKey.value)?.children || [] | ||||
|   ); | ||||
|  | ||||
|   watch( | ||||
|     () => route.name, | ||||
|     () => { | ||||
|       getActiveFirstLevelMenuKey(); | ||||
|     }, | ||||
|     { immediate: true } | ||||
|   ); | ||||
|  | ||||
|   return { | ||||
|     activeFirstLevelMenuKey, | ||||
|     setActiveFirstLevelMenuKey, | ||||
|     getActiveFirstLevelMenuKey, | ||||
|     menus | ||||
|   }; | ||||
| } | ||||
| @@ -2,10 +2,10 @@ | ||||
| import { computed } from 'vue'; | ||||
| import { useBoolean } from '@sa/hooks'; | ||||
| import { useAppStore } from '@/store/modules/app'; | ||||
| import { useRouteStore } from '@/store/modules/route'; | ||||
| import { useThemeStore } from '@/store/modules/theme'; | ||||
| import { useRouterPush } from '@/hooks/common/router'; | ||||
| import { useMixMenu } from '../../hooks'; | ||||
| import { $t } from '@/locales'; | ||||
| import { useMixMenuContext } from '../../context'; | ||||
| import FirstLevelMenu from './first-level-menu.vue'; | ||||
| import BaseMenu from './base-menu.vue'; | ||||
|  | ||||
| @@ -15,16 +15,15 @@ defineOptions({ | ||||
|  | ||||
| const appStore = useAppStore(); | ||||
| const themeStore = useThemeStore(); | ||||
| const routeStore = useRouteStore(); | ||||
| const { routerPushByKey } = useRouterPush(); | ||||
| const { bool: drawerVisible, setBool: setDrawerVisible } = useBoolean(); | ||||
| const { activeFirstLevelMenuKey, setActiveFirstLevelMenuKey, getActiveFirstLevelMenuKey } = useMixMenu(); | ||||
| const { menus, activeFirstLevelMenuKey, setActiveFirstLevelMenuKey, getActiveFirstLevelMenuKey } = useMixMenuContext(); | ||||
|  | ||||
| const siderInverted = computed(() => !themeStore.darkMode && themeStore.sider.inverted); | ||||
|  | ||||
| const menus = computed(() => routeStore.menus.find(menu => menu.key === activeFirstLevelMenuKey.value)?.children || []); | ||||
| const hasMenus = computed(() => menus.value.length > 0); | ||||
|  | ||||
| const showDrawer = computed(() => (drawerVisible.value && menus.value.length) || appStore.mixSiderFixed); | ||||
| const showDrawer = computed(() => hasMenus.value && (drawerVisible.value || appStore.mixSiderFixed)); | ||||
|  | ||||
| function handleSelectMixMenu(menu: App.Global.Menu) { | ||||
|   setActiveFirstLevelMenuKey(menu.key); | ||||
| @@ -49,7 +48,7 @@ function handleResetActiveMenu() { | ||||
|     </FirstLevelMenu> | ||||
|     <div | ||||
|       class="relative h-full transition-width-300" | ||||
|       :style="{ width: appStore.mixSiderFixed ? themeStore.sider.mixChildMenuWidth + 'px' : '0px' }" | ||||
|       :style="{ width: appStore.mixSiderFixed && hasMenus ? themeStore.sider.mixChildMenuWidth + 'px' : '0px' }" | ||||
|     > | ||||
|       <DarkModeContainer | ||||
|         class="absolute-lt h-full flex-col-stretch nowrap-hidden shadow-sm transition-all-300" | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| import { effectScope, onScopeDispose, ref, watch } from 'vue'; | ||||
| import { defineStore } from 'pinia'; | ||||
| import { breakpointsTailwind, useBreakpoints, useTitle } from '@vueuse/core'; | ||||
| import { breakpointsTailwind, useBreakpoints, useEventListener, useTitle } from '@vueuse/core'; | ||||
| import { useBoolean } from '@sa/hooks'; | ||||
| import { SetupStoreId } from '@/enum'; | ||||
| import { router } from '@/router'; | ||||
| @@ -22,7 +22,11 @@ export const useAppStore = defineStore(SetupStoreId.App, () => { | ||||
|   const { bool: fullContent, toggle: toggleFullContent } = useBoolean(); | ||||
|   const { bool: contentXScrollable, setBool: setContentXScrollable } = useBoolean(); | ||||
|   const { bool: siderCollapse, setBool: setSiderCollapse, toggle: toggleSiderCollapse } = useBoolean(); | ||||
|   const { bool: mixSiderFixed, setBool: setMixSiderFixed, toggle: toggleMixSiderFixed } = useBoolean(); | ||||
|   const { | ||||
|     bool: mixSiderFixed, | ||||
|     setBool: setMixSiderFixed, | ||||
|     toggle: toggleMixSiderFixed | ||||
|   } = useBoolean(localStg.get('mixSiderFixed') === 'Y'); | ||||
|  | ||||
|   /** Is mobile layout */ | ||||
|   const isMobile = breakpoints.smaller('sm'); | ||||
| @@ -107,6 +111,11 @@ export const useAppStore = defineStore(SetupStoreId.App, () => { | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   // cache mixSiderFixed | ||||
|   useEventListener(window, 'beforeunload', () => { | ||||
|     localStg.set('mixSiderFixed', mixSiderFixed.value ? 'Y' : 'N'); | ||||
|   }); | ||||
|  | ||||
|   /** On scope dispose */ | ||||
|   onScopeDispose(() => { | ||||
|     scope.stop(); | ||||
|   | ||||
							
								
								
									
										2
									
								
								src/typings/storage.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								src/typings/storage.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -14,6 +14,8 @@ declare namespace StorageType { | ||||
|     lang: App.I18n.LangType; | ||||
|     /** The token */ | ||||
|     token: string; | ||||
|     /** Fixed sider with mix-menu */ | ||||
|     mixSiderFixed: CommonType.YesOrNo; | ||||
|     /** The refresh token */ | ||||
|     refreshToken: string; | ||||
|     /** The user info */ | ||||
|   | ||||
| @@ -182,7 +182,7 @@ watch(visible, () => { | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
|   <NDrawer v-model:show="visible" :title="title" display-directive="show" :width="360"> | ||||
|   <NDrawer v-model:show="visible" display-directive="show" :width="360"> | ||||
|     <NDrawerContent :title="title" :native-scrollbar="false" closable> | ||||
|       <NForm ref="formRef" :model="model" :rules="rules" label-placement="left" :label-width="80"> | ||||
|         <NFormItem :label="$t('page.manage.menu.menuType')" path="menuType"> | ||||
|   | ||||
| @@ -100,7 +100,7 @@ watch(visible, () => { | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
|   <NDrawer v-model:show="visible" :title="title" display-directive="show" :width="360"> | ||||
|   <NDrawer v-model:show="visible" display-directive="show" :width="360"> | ||||
|     <NDrawerContent :title="title" :native-scrollbar="false" closable> | ||||
|       <NForm ref="formRef" :model="model" :rules="rules"> | ||||
|         <NFormItem :label="$t('page.manage.role.roleName')" path="roleName"> | ||||
|   | ||||
| @@ -122,7 +122,7 @@ watch(visible, () => { | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
|   <NDrawer v-model:show="visible" :title="title" display-directive="show" :width="360"> | ||||
|   <NDrawer v-model:show="visible" display-directive="show" :width="360"> | ||||
|     <NDrawerContent :title="title" :native-scrollbar="false" closable> | ||||
|       <NForm ref="formRef" :model="model" :rules="rules"> | ||||
|         <NFormItem :label="$t('page.manage.user.userName')" path="userName"> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user