diff --git a/packages/@core/base/shared/package.json b/packages/@core/base/shared/package.json index 134986fb..3127a3d8 100644 --- a/packages/@core/base/shared/package.json +++ b/packages/@core/base/shared/package.json @@ -81,7 +81,6 @@ "dependencies": { "@ctrl/tinycolor": "catalog:", "@tanstack/vue-store": "catalog:", - "@vue/reactivity": "catalog:", "@vue/shared": "catalog:", "clsx": "catalog:", "defu": "catalog:", diff --git a/packages/@core/base/shared/src/utils/index.ts b/packages/@core/base/shared/src/utils/index.ts index ef180cf0..e5526edf 100644 --- a/packages/@core/base/shared/src/utils/index.ts +++ b/packages/@core/base/shared/src/utils/index.ts @@ -5,7 +5,6 @@ export * from './inference'; export * from './letter'; export * from './merge'; export * from './nprogress'; -export * from './reactivity'; export * from './state-handler'; export * from './to'; export * from './tree'; diff --git a/packages/@core/base/shared/src/utils/reactivity.ts b/packages/@core/base/shared/src/utils/reactivity.ts deleted file mode 100644 index e2d66c38..00000000 --- a/packages/@core/base/shared/src/utils/reactivity.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { isProxy, isReactive, isRef, toRaw } from '@vue/reactivity'; - -function deepToRaw>(sourceObj: T): T { - const objectIterator = (input: any): any => { - if (Array.isArray(input)) { - return input.map((item) => objectIterator(item)); - } - if (isRef(input) || isReactive(input) || isProxy(input)) { - return objectIterator(toRaw(input)); - } - if (input && typeof input === 'object') { - const result = {} as T; - for (const key in input) { - if (Object.prototype.hasOwnProperty.call(input, key)) { - result[key as keyof T] = objectIterator(input[key]); - } - } - return result; - } - return input; - }; - - return objectIterator(sourceObj); -} - -export { deepToRaw }; diff --git a/packages/@core/ui-kit/tabs-ui/src/components/tabs-chrome/tabs.vue b/packages/@core/ui-kit/tabs-ui/src/components/tabs-chrome/tabs.vue index 44b40e5d..abe50da9 100644 --- a/packages/@core/ui-kit/tabs-ui/src/components/tabs-chrome/tabs.vue +++ b/packages/@core/ui-kit/tabs-ui/src/components/tabs-chrome/tabs.vue @@ -7,7 +7,6 @@ import { computed, ref } from 'vue'; import { Pin, X } from '@vben-core/icons'; import { VbenContextMenu, VbenIcon } from '@vben-core/shadcn-ui'; -import { deepToRaw } from '@vben-core/shared/utils'; interface Props extends TabsProps {} @@ -40,19 +39,21 @@ const style = computed(() => { }; }); -const tabsView = computed((): TabConfig[] => { - return props.tabs.map((_tab) => { - const tab = deepToRaw(_tab); +const tabsView = computed(() => { + return props.tabs.map((tab) => { + const { fullPath, meta, name, path } = tab || {}; + const { affixTab, icon, newTabTitle, tabClosable, title } = meta || {}; return { - ...tab, - affixTab: !!tab.meta?.affixTab, - closable: Reflect.has(tab.meta, 'tabClosable') - ? !!tab.meta.tabClosable - : true, - icon: tab.meta.icon as string, - key: tab.fullPath || tab.path, - title: (tab.meta?.newTabTitle || tab.meta?.title || tab.name) as string, - }; + affixTab: !!affixTab, + closable: Reflect.has(meta, 'tabClosable') ? !!tabClosable : true, + fullPath, + icon: icon as string, + key: fullPath || path, + meta, + name, + path, + title: (newTabTitle || title || name) as string, + } as TabConfig; }); }); diff --git a/packages/@core/ui-kit/tabs-ui/src/components/tabs/tabs.vue b/packages/@core/ui-kit/tabs-ui/src/components/tabs/tabs.vue index e1247267..e08cb8d4 100644 --- a/packages/@core/ui-kit/tabs-ui/src/components/tabs/tabs.vue +++ b/packages/@core/ui-kit/tabs-ui/src/components/tabs/tabs.vue @@ -7,7 +7,6 @@ import { computed } from 'vue'; import { Pin, X } from '@vben-core/icons'; import { VbenContextMenu, VbenIcon } from '@vben-core/shadcn-ui'; -import { deepToRaw } from '@vben-core/shared/utils'; interface Props extends TabsProps {} @@ -46,19 +45,21 @@ const typeWithClass = computed(() => { return typeClasses[props.styleType || 'plain'] || { content: '' }; }); -const tabsView = computed((): TabConfig[] => { - return props.tabs.map((_tab) => { - const tab = deepToRaw(_tab); +const tabsView = computed(() => { + return props.tabs.map((tab) => { + const { fullPath, meta, name, path } = tab || {}; + const { affixTab, icon, newTabTitle, tabClosable, title } = meta || {}; return { - ...tab, - affixTab: !!tab.meta?.affixTab, - closable: Reflect.has(tab.meta, 'tabClosable') - ? !!tab.meta.tabClosable - : true, - icon: tab.meta.icon as string, - key: tab.fullPath || tab.path, - title: (tab.meta?.newTabTitle || tab.meta?.title || tab.name) as string, - }; + affixTab: !!affixTab, + closable: Reflect.has(meta, 'tabClosable') ? !!tabClosable : true, + fullPath, + icon: icon as string, + key: fullPath || path, + meta, + name, + path, + title: (newTabTitle || title || name) as string, + } as TabConfig; }); }); diff --git a/packages/effects/layouts/src/basic/layout.vue b/packages/effects/layouts/src/basic/layout.vue index 0305eed4..16c3551f 100644 --- a/packages/effects/layouts/src/basic/layout.vue +++ b/packages/effects/layouts/src/basic/layout.vue @@ -11,7 +11,7 @@ import { usePreferences, } from '@vben/preferences'; import { useLockStore } from '@vben/stores'; -import { deepToRaw, mapTree } from '@vben/utils'; +import { cloneDeep, mapTree } from '@vben/utils'; import { VbenAdminLayout } from '@vben-core/layout-ui'; import { VbenBackTop, VbenLogo } from '@vben-core/shadcn-ui'; @@ -112,7 +112,7 @@ const { function wrapperMenus(menus: MenuRecordRaw[]) { return mapTree(menus, (item) => { - return { ...deepToRaw(item), name: $t(item.name) }; + return { ...cloneDeep(item), name: $t(item.name) }; }); }