90 lines
2.9 KiB
JavaScript
90 lines
2.9 KiB
JavaScript
// Metro module 8608 (f8609).
|
|
import { Children, cloneElement } from "react";
|
|
import { processColor } from "react-native";
|
|
import extractOpacity from "./extractOpacity";
|
|
import Module8609 from "./Module8609";
|
|
import extractTransform from "./extractTransform";
|
|
let c5576_5 = /^([+-]?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)(%?)$/;
|
|
const offsetComparator = (a0, a1) => a0[0] - a1[0];
|
|
export default function extractGradient(a0, parent) {
|
|
let r1, r34;
|
|
const { id, children } = a0;
|
|
let gradientTransform = a0.gradientTransform;
|
|
const { transform, gradientUnits } = a0;
|
|
if (id) {
|
|
const children2 = children ? Children.map(children, (a0) => cloneElement(a0, {
|
|
parent
|
|
})) : [];
|
|
const r44 = [];
|
|
const length = children2.length;
|
|
const r12 = 0 < length;
|
|
let r0 = 0;
|
|
if (r12) {
|
|
do {
|
|
const props = children2[r0].props;
|
|
const style = props.style;
|
|
let offset = props.offset;
|
|
const r6 = r0;
|
|
if (offset === void 0) {
|
|
offset = style ? style.offset : style;
|
|
}
|
|
const { stopColor = (style ? style.stopColor : style) || "#000", stopOpacity = style && style.stopOpacity } = props;
|
|
const r52 = offset || 0;
|
|
L35: {
|
|
r34 = r52;
|
|
if (typeof r34 !== "number") {
|
|
if (typeof r52 === "object" && typeof r52.__getAnimatedValue === "function") {
|
|
r34 = r52.__getAnimatedValue();
|
|
break L35;
|
|
}
|
|
const r54 = typeof r52 === "string" ? r52.match(c5576_5) : typeof r52 === "string";
|
|
if (r54) {
|
|
const r61 = r54[2];
|
|
const r3 = +r54[1];
|
|
r1 = r61 ? r3 / 100 : r3;
|
|
} else {
|
|
console.warn(`"${r52}" is not a valid number or percentage string.`);
|
|
r1 = 0;
|
|
}
|
|
r34 = r1;
|
|
}
|
|
}
|
|
const r64 = stopColor && processColor(stopColor);
|
|
if (typeof r64 === "number" && !isNaN(r34)) {
|
|
r44.push([r34, 16777215 & r64 | Math.round(255 * extractOpacity(stopOpacity)) << 24]);
|
|
} else {
|
|
console.warn(`"${stopColor}" is not a valid color or "${offset}" is not a valid offset`);
|
|
}
|
|
r0 = r6 + 1;
|
|
} while (r0 < length);
|
|
}
|
|
r44.sort(offsetComparator);
|
|
const gradient = [];
|
|
const length2 = r44.length;
|
|
const r94 = 0 < length2;
|
|
let r95 = 0;
|
|
if (r94) {
|
|
do {
|
|
const r96 = r44[r95];
|
|
gradient.push(r96[0], r96[1]);
|
|
r95 = r95 + 1;
|
|
} while (r95 < length2);
|
|
}
|
|
const gradientUnits2 = gradientUnits && Module8609[gradientUnits] || 0;
|
|
if (!gradientTransform) {
|
|
gradientTransform = transform;
|
|
}
|
|
if (!gradientTransform) {
|
|
gradientTransform = a0;
|
|
}
|
|
return {
|
|
name: id,
|
|
gradient,
|
|
children: children2,
|
|
gradientUnits: gradientUnits2,
|
|
gradientTransform: extractTransform(gradientTransform)
|
|
};
|
|
}
|
|
return null;
|
|
};
|