decord/source/modules/client_themes/native/ThemedGradient.tsx
2026-08-06 08:05:19 +00:00

649 lines
20 KiB
TypeScript

// Module ID: 4829
// Function ID: 4830
// Name: getMixedGradientColor
// Dependencies: [19, 17, 4096, 21, 4285, 4130, 4129, 4128, 1474, 4706, 4221, 712, 4132, 4095, 689, 1208, 647, 4134, 4220, 4098, 2]
// Exports: CustomThemedGradient, default, validateColors
// Module 4829 (getMixedGradientColor)
import ClientThemeType from "ClientThemeType";
import { View } from "getGuildIdFromNavigationState";
import isSyncedModeThemesEnabled from "isSyncedModeThemesEnabled";
import jsxProd from "jsxProd";
import createCacheKey from "createCacheKey";
let closure_6;
let error;
const require = arg1;
function getMixedGradientColor(mixColorOverride) {
let b;
let darkFallbackAmount;
let darkFallbackOpacity;
let g;
let mixAmount;
let r;
let theme;
let theme2;
let theme3;
({ mixAmount, theme } = mixColorOverride);
let obj = { mixAmount, mixColorOverride: mixColorOverride.mixColorOverride, theme };
mixAmount = obj.mixAmount;
if (mixAmount === undefined) {
mixAmount = {};
}
({ mixColorOverride, darkFallbackOpacity, theme: theme2 } = obj);
if (darkFallbackOpacity === undefined) {
darkFallbackOpacity = 0.7;
}
let num = obj.lightFallbackOpacity;
if (num === undefined) {
num = 0.8;
}
if (null == mixColorOverride) {
const isThemeDarkResult = require(4130) /* AccessibilityAnnouncer */.isThemeDark(theme2);
if (isThemeDarkResult) {
num = darkFallbackOpacity;
}
let tmp4 = isThemeDarkResult ? mixAmount.dark : mixAmount.light;
if (tmp4 == null) {
tmp4 = num;
}
let num2 = 255;
if (isThemeDarkResult) {
num2 = 0;
}
mixColorOverride = new importDefault(4129)(num2, num2, num2, tmp4);
const obj3 = require(4130) /* AccessibilityAnnouncer */;
}
obj = { mixAmount, theme };
let mixAmount1 = obj.mixAmount;
if (mixAmount1 === undefined) {
mixAmount1 = {};
}
({ darkFallbackAmount, theme: theme3 } = obj);
if (darkFallbackAmount === undefined) {
darkFallbackAmount = 0.3;
}
let num3 = obj.lightFallbackAmount;
if (num3 === undefined) {
num3 = 0.2;
}
if (obj6.isThemeDark(theme3)) {
if (null != mixAmount1.dark) {
darkFallbackAmount = 1 - mixAmount1.dark;
}
num3 = darkFallbackAmount;
} else if (null != mixAmount1.light) {
num3 = 1 - mixAmount1.light;
}
let tmp12Result = tmp12(4128);
obj6 = require(4130) /* AccessibilityAnnouncer */;
({ r, g, b } = tmp12Result.hexToRgb(mixColorOverride.color));
tmp12Result = tmp12(4128);
const hexToRgbResult = tmp12Result.hexToRgb(mixColorOverride.color);
const tmp15 = new importDefault(4129)(r, g, b, num3);
return tmp12Result.mixColors(mixColorOverride, new importDefault(4129)(r, g, b, num3)).toHexString();
}
function GradientBase(angleCenter) {
let absolute;
let angle;
let colors;
let height;
let locations;
let tall;
let wide;
let width;
angleCenter = angleCenter.angleCenter;
({ colors, locations, angle } = angleCenter);
if (angleCenter === undefined) {
angleCenter = closure_9;
}
({ absolute, wide, tall } = angleCenter);
const tmp = callback3();
({ width, height } = importDefault(1474)());
let obj = { colors, locations, angle, angleCenter, useAngle: true, style: null };
const tmp2 = importDefault(1474)();
const tmp3 = closure_6;
if (wide) {
obj = { width: null };
obj[0] = width;
wide = obj;
}
const items = [wide, , , , ];
if (tall) {
obj = { height: null };
obj[0] = height;
tall = obj;
}
items[1] = tall;
items[2] = tmp.linearGradient;
if (absolute) {
absolute = tmp.absolute;
}
items[3] = absolute;
items[4] = angleCenter.componentStyles;
obj[5] = items;
return tmp3(importDefault(4706), obj);
}
class Gradient {
constructor(arg0) {
({ gradient, angleOverride, mix, mixAmount } = global);
({ absolute, wide, tall, componentStyles } = global);
if (mixAmount === undefined) {
mixAmount = {};
}
mixColorOverride = global.mixColorOverride;
mixColorOverride = undefined;
mixColorOverride = require("useTheme")();
colors = gradient.colors;
obj = {
colors: colors.map((arg0) => {
if (closure_0) {
const obj = { color: null, mixAmount: null, mixColorOverride: null, theme: null };
obj[0] = mixAmount(mixColorOverride[11]).unsafe_rawColors[arg0.token];
obj[1] = mixAmount;
obj[2] = mixColorOverride;
obj[3] = ClientThemeType;
let tmp3 = outer1_11(obj);
} else {
tmp3 = mixAmount(mixColorOverride[11]).unsafe_rawColors[arg0.token];
}
return tmp3;
}),
locations: colors1.map((stop) => stop.stop / 100),
angle: null,
angleCenter: null,
absolute: null,
wide: null,
tall: null,
componentStyles: null
};
colors1 = gradient.colors;
tmp = jsx;
tmp2 = GradientBase;
if (angleOverride == null) {
angleOverride = gradient.angle;
}
obj[2] = angleOverride;
angleCenter = gradient.angleCenter;
if (angleCenter == null) {
angleCenter = jsxs;
}
obj[3] = angleCenter;
obj[4] = absolute;
obj[5] = wide;
obj[6] = tall;
obj[7] = componentStyles;
return tmp(tmp2, obj);
}
}
function GuildThemePresetGradient(mixColorOverride) {
let absolute;
let angleOverride;
let componentStyles;
let mixAmount;
let preset;
let require;
let tall;
let wide;
({ angleOverride, mix: require, mixAmount } = mixColorOverride);
({ preset, absolute, wide, tall, componentStyles } = mixColorOverride);
if (mixAmount === undefined) {
mixAmount = {};
}
mixColorOverride = mixColorOverride.mixColorOverride;
let c3;
const tmp = mixAmount(mixColorOverride[10])();
c3 = tmp;
let obj = require(mixColorOverride[12]);
const guildThemePresetAppearance = obj.getGuildThemePresetAppearance(preset, tmp);
const colors = guildThemePresetAppearance.colors;
obj = {
colors: colors.map((hex) => {
if (closure_0) {
const obj = { color: null, mixAmount: null, mixColorOverride: null, theme: null };
obj[0] = hex.hex;
obj[1] = mixAmount;
obj[2] = mixColorOverride;
obj[3] = c3;
hex = outer1_11(obj);
} else {
hex = hex.hex;
}
return hex;
}),
locations: colors1.map((stop) => stop.stop / 100),
angle: null,
angleCenter: null,
absolute: null,
wide: null,
tall: null,
componentStyles: null
};
colors1 = guildThemePresetAppearance.colors;
if (angleOverride == null) {
angleOverride = guildThemePresetAppearance.angle;
}
obj[2] = angleOverride;
obj[3] = closure_9;
obj[4] = absolute;
obj[5] = wide;
obj[6] = tall;
obj[7] = componentStyles;
return closure_6(GradientBase, obj);
}
function CustomThemesGradient(arg0) {
let absolute;
let baseMix;
let colors;
let componentStyles;
let gradientAngle;
let gradientColorStops;
let height;
let mix;
let mixAmount;
let mixColorOverride;
let tall;
let theme;
let wide;
let width;
({ colors, gradientColorStops, absolute, wide, tall, mixAmount } = arg0);
({ baseMix, gradientAngle, mix } = arg0);
if (mixAmount === undefined) {
mixAmount = {};
}
let reduced;
reduced = undefined;
({ mixColorOverride, componentStyles, theme } = arg0);
const tmp = callback3();
reduced = undefined;
mixColorOverride = undefined;
theme = undefined;
reduced = baseMix;
({ width, height } = reduced(mixColorOverride[8])());
if (mixAmount === undefined) {
mixAmount = {};
}
reduced = mixAmount;
let mapped = colors;
if (mix) {
mapped = colors.map((PRIMARY_800) => {
let b;
let g;
let r;
let obj = reduced;
let tmp2 = mixColorOverride;
let num = outer1_10;
obj = reduced;
const result = reduced / 100;
if (reduced === undefined) {
obj = {};
}
if (null == tmp2) {
const diff = 1 - result;
let sum = num + 0.2 * diff;
const isThemeDarkResult = reduced(mixColorOverride[5]).isThemeDark(tmp3);
if (isThemeDarkResult) {
sum = num + 0.25 * diff;
}
let tmp6 = isThemeDarkResult ? obj.dark : obj.light;
if (tmp6 == null) {
tmp6 = sum;
}
let num3 = 255;
if (isThemeDarkResult) {
num3 = 0;
}
tmp2 = new reduced(mixColorOverride[6])(num3, num3, num3, tmp6);
const obj7 = reduced(mixColorOverride[5]);
const tmp21 = mixColorOverride;
}
if (reduced === undefined) {
obj = {};
}
let num4 = num;
if (num === undefined) {
num4 = 0.3;
}
if (num === undefined) {
num = 0.2;
}
if (obj3.isThemeDark(theme)) {
if (null != obj.dark) {
num4 = 1 - obj.dark;
}
num = num4;
} else if (null != obj.light) {
num = 1 - obj.light;
}
let tmp14Result = tmp14(tmp15[7]);
obj3 = reduced(mixColorOverride[5]);
({ r, g, b } = tmp14Result.hexToRgb(PRIMARY_800));
tmp14Result = tmp14(tmp15[7]);
const hexToRgbResult = tmp14Result.hexToRgb(PRIMARY_800);
const tmp17 = new reduced(mixColorOverride[6])(r, g, b, num);
const mixColorsResult = tmp14Result.mixColors(tmp2, new reduced(mixColorOverride[6])(r, g, b, num));
return reduced(mixColorOverride[13]).colorToHex(mixColorsResult);
});
}
let arr2 = mapped;
if (1 === mapped.length) {
const items = [mapped[0], mapped[0]];
arr2 = items;
}
reduced = arr2;
let result = (gradientAngle - 90) * Math.PI / 180;
const cosResult = Math.cos(result);
const sinResult = Math.sin(result);
let obj = { x: 0.6 - 0.7142857142857143 * cosResult, y: 0.5 - 0.7142857142857143 * sinResult };
obj = { x: 0.6 + 0.7142857142857143 * cosResult, y: 0.5 + 0.7142857142857143 * sinResult };
reduced = arr2.reduce((arr, str) => {
if (typeof str === "string") {
if (regex.test(str)) {
arr.push(str);
return arr;
}
}
try {
arr.push(reduced(mixColorOverride[14])(str).hex("rgb"));
return arr;
} catch (err) {
}
}, []);
if (gradientColorStops === undefined) {
gradientColorStops = [];
}
if (gradientColorStops.length === reduced.length) {
let mapped1 = gradientColorStops.map((arg0) => arg0 / 100);
} else if (1 === reduced.length) {
mapped1 = [0, 1];
} else {
mapped1 = reduced.map((arg0, arg1) => arg1 / (reduced.length - 1));
}
const items1 = [reduced, arr2];
const effect = theme.useEffect(() => {
if (reduced.length < 2) {
let obj = reduced(mixColorOverride[15]);
const _Error = Error;
const error = new Error("Invalid custom theme gradient colors");
obj = { extra: null };
obj = { gradientColors: null };
const _JSON = JSON;
obj[0] = JSON.stringify(reduced);
obj[0] = obj;
obj.captureException(error, obj);
}
}, items1);
let tmp10Result = null;
if (reduced.length >= 2) {
obj = { colors: null, locations: null, start: null, end: null, style: null };
obj[0] = reduced;
obj[1] = mapped1;
obj[2] = obj;
obj[3] = obj;
if (wide) {
const obj1 = { width: null };
obj1[0] = width;
wide = obj1;
}
const items2 = [wide, , , , ];
if (tall) {
const obj2 = { height: null };
obj2[0] = height;
tall = obj2;
}
items2[1] = tall;
items2[2] = tmp.linearGradient;
if (absolute) {
absolute = tmp.absolute;
}
items2[3] = absolute;
items2[4] = componentStyles;
obj[4] = items2;
tmp10Result = closure_6(reduced(mixColorOverride[9]), obj);
const tmp10 = closure_6;
const tmp2Result = reduced(mixColorOverride[9]);
}
return tmp10Result;
}
function ActiveGuildThemeGradient(arg0) {
let activeGuildTheme;
let theme;
({ activeGuildTheme, theme } = arg0);
const merged = Object.assign(arg0, Object.create(null));
if ("custom" === activeGuildTheme.type) {
const customUserThemeSettings = activeGuildTheme.customUserThemeSettings;
let obj = {};
const merged1 = Object.assign(merged);
const items = [];
HermesBuiltin.arraySpread(require(4132) /* set */.getSingleColorGuildThemeGradientColors(customUserThemeSettings.colors[0], theme), 0);
obj.colors = items;
obj.gradientColorStops = [];
let num2 = customUserThemeSettings.gradientAngle;
if (num2 == null) {
num2 = 0;
}
obj.gradientAngle = num2;
let GUILD_THEME_DEFAULT_BASE_MIX = customUserThemeSettings.baseMix;
if (GUILD_THEME_DEFAULT_BASE_MIX == null) {
GUILD_THEME_DEFAULT_BASE_MIX = require(4132) /* set */.GUILD_THEME_DEFAULT_BASE_MIX;
}
obj.baseMix = GUILD_THEME_DEFAULT_BASE_MIX;
obj.theme = theme;
return callback(CustomThemesGradient, obj);
} else {
obj = {};
const merged2 = Object.assign(merged);
obj.preset = activeGuildTheme.preset;
return callback(GuildThemePresetGradient, obj);
}
}
({ jsx: closure_6, jsxs: error } = jsxProd);
let closure_8 = createCacheKey.createStyles({ softenGradient: { flex: 1 }, linearGradient: { flex: 1 }, absolute: { position: "absolute", top: 0, bottom: 0, left: 0, right: 0 } });
let closure_9 = { x: 0.5, y: 0.5 };
let c10 = 0.5;
const re15 = /^#(?:[0-9a-fA-F]{3}){1,2}$/;
let result = require("isSyncedModeThemesEnabled").fileFinishedImporting("modules/client_themes/native/ThemedGradient.tsx");
export default function ThemedGradient(overlayOpacity) {
let num = overlayOpacity.overlayOpacity;
if (num === undefined) {
num = 0.7;
}
const gradientOverride = overlayOpacity.gradientOverride;
const merged = Object.assign(overlayOpacity, Object.create(null));
const tmp2 = callback3();
let obj = require(4130) /* AccessibilityAnnouncer */;
const tmp5 = importDefault(4221)();
const unsafe_rawColors = importDefault(712).unsafe_rawColors;
const tmp8 = obj.isThemeDark(importDefault(4221)()) ? unsafe_rawColors.BLACK : unsafe_rawColors.WHITE;
const withOverlay = merged.withOverlay;
const isThemeDarkResult = obj.isThemeDark(importDefault(4221)());
let tmp6Result = tmp6(647);
const items = [isSyncedModeThemesEnabled];
const preset = tmp6Result.useStateFromStoresObject(items, () => ({ preset: gradientPreset.gradientPreset })).preset;
const tmp10 = importDefault(4134)();
tmp6Result = tmp6(4220);
const customThemeDisplaySettings = tmp6Result.useCustomThemeDisplaySettings();
if (null != gradientOverride) {
if (tmp12) {
if (gradientOverride.type === tmp6(4098).ClientThemeType.CUSTOM_BACKGROUND_GRADIENT) {
obj = {};
const merged1 = Object.assign(merged);
const merged2 = Object.assign(gradientOverride.customThemeSettings);
obj.theme = gradientOverride.theme;
const tmp59 = callback(CustomThemesGradient, obj);
let tmp60 = tmp59;
if (withOverlay) {
obj = { style: null, children: null };
obj[0] = tmp2.absolute;
const items1 = [tmp59, ];
const obj1 = { style: null };
const items2 = [tmp2.softenGradient, ];
const obj2 = { backgroundColor: null };
obj2[0] = tmp6(4128).hexWithOpacity(tmp8, num);
items2[1] = obj2;
obj1[0] = items2;
items1[1] = callback(View, obj1);
obj[1] = items1;
tmp60 = callback2(View, obj);
const tmp6Result1 = tmp6(4128);
}
return tmp60;
}
}
if (gradientOverride.type === tmp6(4098).ClientThemeType.BACKGROUND_GRADIENT_PRESET) {
const obj3 = {};
const merged3 = Object.assign(merged);
obj3.gradient = gradientOverride;
const tmp48 = callback(Gradient, obj3);
let tmp49 = tmp48;
if (withOverlay) {
const obj4 = { style: null, children: null };
obj4[0] = tmp2.absolute;
const items3 = [tmp48, ];
const obj5 = { style: null };
const items4 = [tmp2.softenGradient, ];
const obj6 = { backgroundColor: null };
obj6[0] = tmp6(4128).hexWithOpacity(tmp8, num);
items4[1] = obj6;
obj5[0] = items4;
items3[1] = callback(View, obj5);
obj4[1] = items3;
tmp49 = callback2(View, obj4);
const tmp6Result2 = tmp6(4128);
}
return tmp49;
}
}
if (null != tmp10) {
const obj7 = {};
const merged4 = Object.assign(merged);
obj7.activeGuildTheme = tmp10;
obj7.theme = tmp9;
const tmp39 = callback(ActiveGuildThemeGradient, obj7);
let tmp40 = tmp39;
if (withOverlay) {
const obj8 = { style: null, children: null };
obj8[0] = tmp2.absolute;
const items5 = [tmp39, ];
const obj9 = { style: null };
const items6 = [tmp2.softenGradient, ];
const obj10 = { backgroundColor: null };
obj10[0] = tmp6(4128).hexWithOpacity(tmp8, num);
items6[1] = obj10;
obj9[0] = items6;
items5[1] = tmp34(View, obj9);
obj8[1] = items5;
tmp40 = callback2(View, obj8);
const tmp6Result3 = tmp6(4128);
}
let tmp13 = tmp40;
tmp34 = callback;
} else {
if (tmp12) {
if (tmp12) {
const obj11 = {};
const merged5 = Object.assign(merged);
const merged6 = Object.assign(customThemeDisplaySettings.customTheme);
obj11.theme = customThemeDisplaySettings.baseTheme;
const tmp30 = callback(CustomThemesGradient, obj11);
let tmp31 = tmp30;
if (withOverlay) {
const obj12 = { style: null, children: null };
obj12[0] = tmp2.absolute;
const items7 = [tmp30, ];
const obj13 = { style: null };
const items8 = [tmp2.softenGradient, ];
const obj14 = { backgroundColor: null };
obj14[0] = tmp6(4128).hexWithOpacity(tmp8, num);
items8[1] = obj14;
obj13[0] = items8;
items7[1] = tmp23(View, obj13);
obj12[1] = items7;
tmp31 = callback2(View, obj12);
const tmp6Result4 = tmp6(4128);
}
tmp13 = tmp31;
tmp23 = callback;
}
}
tmp13 = null;
if (null != preset) {
const obj15 = {};
const merged7 = Object.assign(merged);
obj15.gradient = preset;
const tmp19 = callback(Gradient, obj15);
let tmp20 = tmp19;
if (withOverlay) {
const obj16 = { style: null, children: null };
obj16[0] = tmp2.absolute;
const items9 = [tmp19, ];
const obj17 = { style: null };
const items10 = [tmp2.softenGradient, ];
const obj18 = { backgroundColor: null };
obj18[0] = tmp6(4128).hexWithOpacity(tmp8, num);
items10[1] = obj18;
obj17[0] = items10;
items9[1] = tmp14(View, obj17);
obj16[1] = items9;
tmp20 = callback2(View, obj16);
const tmp6Result5 = tmp6(4128);
}
tmp13 = tmp20;
tmp14 = callback;
}
}
return tmp13;
};
export { Gradient };
export const validateColors = function validateColors(arr) {
return arr.reduce((arr, str) => {
if (typeof str === "string") {
if (regex.test(str)) {
arr.push(str);
return arr;
}
}
try {
arr.push(reduced(mixColorOverride[14])(str).hex("rgb"));
return arr;
} catch (err) {
}
}, []);
};
export const CustomThemedGradient = function CustomThemedGradient(overlayOpacity) {
let num = overlayOpacity.overlayOpacity;
if (num === undefined) {
num = 0.7;
}
const customTheme = overlayOpacity.customTheme;
const merged = Object.assign(overlayOpacity, Object.create(null));
const tmp2 = callback3();
let obj = require(4130) /* AccessibilityAnnouncer */;
const tmp4 = importDefault(4221)();
const tmp5 = require;
const unsafe_rawColors = importDefault(712).unsafe_rawColors;
obj = {};
const isThemeDarkResult = obj.isThemeDark(importDefault(4221)());
const merged1 = Object.assign(merged);
const merged2 = Object.assign(customTheme.customThemeSettings);
obj.theme = customTheme.theme;
const tmp11 = callback(CustomThemesGradient, obj);
let tmp12 = tmp11;
if (merged.withOverlay) {
obj = { style: null, children: null };
obj[0] = tmp2.absolute;
const items = [tmp11, ];
const obj1 = { style: null };
const items1 = [tmp2.softenGradient, ];
const obj2 = { backgroundColor: null };
obj2[0] = tmp5(4128).hexWithOpacity(tmp7, num);
items1[1] = obj2;
obj1[0] = items1;
items[1] = callback(View, obj1);
obj[1] = items;
tmp12 = callback2(View, obj);
const tmp5Result = tmp5(4128);
}
return tmp12;
};