@nuxt/ui
Version:
A UI Library for Modern Web Apps, powered by Vue & Tailwind CSS.
48 lines (47 loc) • 1.28 kB
JavaScript
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);
}