UNPKG

@nuxt/ui

Version:

A UI Library for Modern Web Apps, powered by Vue & Tailwind CSS.

48 lines (47 loc) 1.28 kB
import { reactivePick } from "@vueuse/core"; import { isEqual, diff } from "ohash/utils"; export function pickLinkProps(link) { const keys = Object.keys(link); const ariaKeys = keys.filter((key) => key.startsWith("aria-")); const dataKeys = keys.filter((key) => key.startsWith("data-")); const propsToInclude = [ "active", "activeClass", "ariaCurrentValue", "as", "disabled", "exact", "exactActiveClass", "exactHash", "exactQuery", "external", "href", "download", "inactiveClass", "noPrefetch", "noRel", "prefetch", "prefetchedClass", "rel", "replace", "target", "to", "type", "title", "onClick", ...ariaKeys, ...dataKeys ]; return reactivePick(link, ...propsToInclude); } export function isPartiallyEqual(item1, item2) { const diffedKeys = diff(item1, item2).reduce((filtered, q) => { if (q.type === "added") { filtered.add(q.key); } return filtered; }, /* @__PURE__ */ new Set()); const item1Filtered = Object.fromEntries(Object.entries(item1).filter(([key]) => !diffedKeys.has(key))); const item2Filtered = Object.fromEntries(Object.entries(item2).filter(([key]) => !diffedKeys.has(key))); return isEqual(item1Filtered, item2Filtered); }