diff --git a/src/runtime/components/InputMenu.vue b/src/runtime/components/InputMenu.vue index fd536eb3..ff9b9735 100644 --- a/src/runtime/components/InputMenu.vue +++ b/src/runtime/components/InputMenu.vue @@ -131,12 +131,13 @@ extendDevtoolsMeta({ defaultProps: { items: ['Option 1', 'Option 2', 'Option 3'] import { computed, ref, toRef, onMounted } from 'vue' import { ComboboxRoot, ComboboxArrow, ComboboxAnchor, ComboboxInput, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxViewport, ComboboxEmpty, ComboboxGroup, ComboboxLabel, ComboboxSeparator, ComboboxItem, ComboboxItemIndicator, TagsInputRoot, TagsInputItem, TagsInputItemText, TagsInputItemDelete, TagsInputInput, useForwardPropsEmits } from 'radix-vue' import { defu } from 'defu' +import { isEqual } from 'ohash' import { reactivePick } from '@vueuse/core' import { useAppConfig } from '#imports' import { useButtonGroup } from '../composables/useButtonGroup' import { useComponentIcons } from '../composables/useComponentIcons' import { useFormField } from '../composables/useFormField' -import { get, isEqual, escapeRegExp } from '../utils' +import { get, escapeRegExp } from '../utils' import UIcon from './Icon.vue' import UAvatar from './Avatar.vue' import UChip from './Chip.vue' diff --git a/src/runtime/components/SelectMenu.vue b/src/runtime/components/SelectMenu.vue index 108d75f2..beb6b8e1 100644 --- a/src/runtime/components/SelectMenu.vue +++ b/src/runtime/components/SelectMenu.vue @@ -121,12 +121,13 @@ extendDevtoolsMeta({ defaultProps: { items: ['Option 1', 'Option 2', 'Option 3'] import { computed, toRef } from 'vue' import { ComboboxRoot, ComboboxArrow, ComboboxAnchor, ComboboxInput, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxViewport, ComboboxEmpty, ComboboxGroup, ComboboxLabel, ComboboxSeparator, ComboboxItem, ComboboxItemIndicator, useForwardPropsEmits } from 'radix-vue' import { defu } from 'defu' +import { isEqual } from 'ohash' import { reactivePick } from '@vueuse/core' import { useAppConfig } from '#imports' import { useButtonGroup } from '../composables/useButtonGroup' import { useComponentIcons } from '../composables/useComponentIcons' import { useFormField } from '../composables/useFormField' -import { get, isEqual, escapeRegExp } from '../utils' +import { get, escapeRegExp } from '../utils' import UIcon from './Icon.vue' import UAvatar from './Avatar.vue' import UChip from './Chip.vue' diff --git a/src/runtime/utils/index.ts b/src/runtime/utils/index.ts index df26eb9b..df351a51 100644 --- a/src/runtime/utils/index.ts +++ b/src/runtime/utils/index.ts @@ -55,34 +55,6 @@ export function set(object: Record, path: (string | number)[] | str }, object) } -export function isEqual(a: any, b: any): boolean { - // Handle primitive types and referential equality - if (a === b) return true - - // Handle null/undefined cases - if (a == null || b == null) return a === b - - // Handle different types - if (typeof a !== typeof b) return false - - // Handle arrays - if (Array.isArray(a) && Array.isArray(b)) { - if (a.length !== b.length) return false - return a.every((item, index) => isEqual(item, b[index])) - } - - // Handle objects - if (typeof a === 'object') { - const keysA = Object.keys(a) - const keysB = Object.keys(b) - - if (keysA.length !== keysB.length) return false - return keysA.every(key => key in b && isEqual(a[key], b[key])) - } - - return false -} - export function looseToNumber(val: any): any { const n = Number.parseFloat(val) return Number.isNaN(n) ? val : n