Files
discord-decomp/_bundle/extractGradient.js
T
2026-11-01 12:12:55 +02:00

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;
};