motion-v
Version:
<p align="center"> <img width="100" height="100" alt="Motion logo" src="https://user-images.githubusercontent.com/7850794/164965523-3eced4c4-6020-467e-acde-f11b7900ad62.png" /> </p> <h1 align="center">Motion for Vue</h1>
109 lines (108 loc) • 2.15 kB
JavaScript
function resolveVariant(definition, variants, custom) {
if (Array.isArray(definition)) {
return definition.reduce((acc, item) => {
const resolvedVariant = resolveVariant(item, variants, custom);
return resolvedVariant ? { ...acc, ...resolvedVariant } : acc;
}, {});
} else if (typeof definition === "object") {
return definition;
} else if (definition && variants) {
const variant = variants[definition];
return typeof variant === "function" ? variant(custom) : variant;
}
}
function hasChanged(a, b) {
if (typeof a !== typeof b)
return true;
if (Array.isArray(a) && Array.isArray(b))
return !shallowCompare(a, b);
return a !== b;
}
function shallowCompare(next, prev) {
const prevLength = prev.length;
if (prevLength !== next.length)
return false;
for (let i = 0; i < prevLength; i++) {
if (prev[i] !== next[i])
return false;
}
return true;
}
function isCssVar(name) {
return name == null ? void 0 : name.startsWith("--");
}
const noopReturn = (v) => v;
function isNumber(value) {
return typeof value === "number";
}
const svgElements = [
"animate",
"circle",
"defs",
"desc",
"ellipse",
"g",
"image",
"line",
"filter",
"marker",
"mask",
"metadata",
"path",
"pattern",
"polygon",
"polyline",
"rect",
"stop",
"svg",
"switch",
"symbol",
"text",
"tspan",
"use",
"view",
"clipPath",
"feBlend",
"feColorMatrix",
"feComponentTransfer",
"feComposite",
"feConvolveMatrix",
"feDiffuseLighting",
"feDisplacementMap",
"feDistantLight",
"feDropShadow",
"feFlood",
"feFuncA",
"feFuncB",
"feFuncG",
"feFuncR",
"feGaussianBlur",
"feImage",
"feMerge",
"feMergeNode",
"feMorphology",
"feOffset",
"fePointLight",
"feSpecularLighting",
"feSpotLight",
"feTile",
"feTurbulence",
"foreignObject",
"linearGradient",
"radialGradient",
"textPath"
];
const svgElementSet = new Set(svgElements);
function isSVGElement(as) {
return svgElementSet.has(as);
}
export {
hasChanged,
isCssVar,
isNumber,
isSVGElement,
noopReturn,
resolveVariant,
shallowCompare,
svgElements
};