decord/source/modules/client_themes/native/ThemedGradient.tsx
2026-07-27 11:26:19 +00:00

504 lines
16 KiB
TypeScript

// Module ID: 4663
// Function ID: 40392
// Name: getThemeMixColor
// Dependencies: [31, 27, 3943, 33, 4131, 3977, 3976, 3975, 1450, 4555, 4067, 689, 3979, 3942, 666, 1184, 624, 3981, 4066, 3945, 2]
// Exports: CustomThemedGradient, default
// Module 4663 (getThemeMixColor)
import result from "result";
import { View } from "get ActivityIndicator";
import _isNativeReflectConstruct from "_isNativeReflectConstruct";
import jsxProd from "jsxProd";
import _createForOfIteratorHelperLoose from "_createForOfIteratorHelperLoose";
let closure_6;
let closure_7;
const require = arg1;
function getThemeMixColor(mixAmount) {
let darkFallbackOpacity;
let mixColorOverride;
let theme;
mixAmount = mixAmount.mixAmount;
if (mixAmount === undefined) {
mixAmount = {};
}
({ mixColorOverride, darkFallbackOpacity, theme } = mixAmount);
if (darkFallbackOpacity === undefined) {
darkFallbackOpacity = 0.7;
}
let num = mixAmount.lightFallbackOpacity;
if (num === undefined) {
num = 0.8;
}
if (null != mixColorOverride) {
return mixColorOverride;
} else {
const isThemeDarkResult = require(3977) /* AccessibilityAnnouncer */.isThemeDark(theme);
if (isThemeDarkResult) {
num = darkFallbackOpacity;
}
const tmp = isThemeDarkResult ? mixAmount.dark : mixAmount.light;
if (null != tmp) {
num = tmp;
}
let num2 = 255;
if (isThemeDarkResult) {
num2 = 0;
}
let tmp4 = importDefault(3976);
const prototype = tmp4.prototype;
tmp4 = new tmp4(num2, num2, num2, num);
return tmp4;
}
}
function getThemedMixAmount(mixAmount) {
let darkFallbackAmount;
let theme;
mixAmount = mixAmount.mixAmount;
if (mixAmount === undefined) {
mixAmount = {};
}
({ darkFallbackAmount, theme } = mixAmount);
if (darkFallbackAmount === undefined) {
darkFallbackAmount = 0.3;
}
let num = mixAmount.lightFallbackAmount;
if (num === undefined) {
num = 0.2;
}
if (obj2.isThemeDark(theme)) {
if (null != mixAmount.dark) {
darkFallbackAmount = 1 - mixAmount.dark;
}
num = darkFallbackAmount;
} else if (null != mixAmount.light) {
num = 1 - mixAmount.light;
}
return num;
}
function getMixedGradientColor(mixColorOverride) {
let b;
let g;
let mixAmount;
let r;
let theme;
({ mixAmount, theme } = mixColorOverride);
const obj = { mixAmount, mixColorOverride: mixColorOverride.mixColorOverride, theme };
const tmp = getThemeMixColor({ mixAmount, mixColorOverride: mixColorOverride.mixColorOverride, theme });
const tmp2 = getThemedMixAmount({ mixAmount, theme });
const obj2 = require(3975) /* hexToRgb */;
({ r, g, b } = require(3975) /* hexToRgb */.hexToRgb(mixColorOverride.color));
const hexToRgbResult = require(3975) /* hexToRgb */.hexToRgb(mixColorOverride.color);
let tmp4 = importDefault(3976);
tmp4 = new tmp4(r, g, b, tmp2);
const obj3 = require(3975) /* hexToRgb */;
return require(3975) /* hexToRgb */.mixColors(tmp, tmp4).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(1450)());
let obj = { colors, locations, angle, angleCenter, useAngle: true };
const tmp2 = importDefault(1450)();
const tmp3 = closure_6;
if (wide) {
obj = { width };
wide = obj;
}
const items = [wide, , , , ];
if (tall) {
obj = { height };
tall = obj;
}
items[1] = tall;
items[2] = tmp.linearGradient;
if (absolute) {
absolute = tmp.absolute;
}
items[3] = absolute;
items[4] = angleCenter.componentStyles;
obj.style = items;
return tmp3(importDefault(4555), obj);
}
class Gradient {
constructor(arg0) {
({ gradient, angleOverride, mix, mixAmount } = global);
({ absolute, wide, tall, componentStyles } = global);
if (mixAmount === undefined) {
mixAmount = {};
}
mixColorOverride = global.mixColorOverride;
c3 = undefined;
c3 = require("useTheme")();
colors = gradient.colors;
obj = {
colors: colors.map((arg0) => {
if (closure_0) {
const obj = { color: mixAmount(mixColorOverride[11]).unsafe_rawColors[arg0.token], mixAmount, mixColorOverride, theme: result };
let tmp3 = outer1_14(obj);
} else {
tmp3 = mixAmount(mixColorOverride[11]).unsafe_rawColors[arg0.token];
}
return tmp3;
}),
locations: colors1.map((stop) => stop.stop / 100)
};
colors1 = gradient.colors;
tmp = jsx;
tmp2 = GradientBase;
if (null == angleOverride) {
angleOverride = gradient.angle;
}
obj.angle = angleOverride;
angleCenter = gradient.angleCenter;
if (null == angleCenter) {
angleCenter = createStyles;
}
obj.angleCenter = angleCenter;
obj.absolute = absolute;
obj.wide = wide;
obj.tall = tall;
obj.componentStyles = 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: hex.hex, mixAmount, mixColorOverride, theme: c3 };
hex = outer1_14(obj);
} else {
hex = hex.hex;
}
return hex;
}),
locations: colors1.map((stop) => stop.stop / 100)
};
colors1 = guildThemePresetAppearance.colors;
if (null == angleOverride) {
angleOverride = guildThemePresetAppearance.angle;
}
obj.angle = angleOverride;
obj.angleCenter = closure_9;
obj.absolute = absolute;
obj.wide = wide;
obj.tall = tall;
obj.componentStyles = componentStyles;
return closure_6(GradientBase, obj);
}
function validateColors(arr) {
return arr.reduce((arr) => {
if ("string" === typeof arg1) {
if (outer1_11.test(tmp)) {
arr.push(arg1);
return arr;
}
}
arr.push(outer1_1(outer1_2[14])(arg1).hex("rgb"));
}, []);
}
function CustomThemesGradient(arg0) {
let absolute;
let baseMix;
let colors;
let componentStyles;
let end;
let gradientAngle;
let gradientColorStops;
let height;
let mix;
let mixAmount;
let mixColorOverride;
let start;
let tall;
let theme;
let wide;
let width;
({ absolute, wide, tall, mixAmount } = arg0);
({ colors, baseMix, gradientAngle, gradientColorStops, mix } = arg0);
if (mixAmount === undefined) {
mixAmount = {};
}
let c0;
let arr;
({ mixColorOverride, componentStyles, theme } = arg0);
let tmp = callback3();
let obj = { colors, mix, mixAmount, mixColorOverride, theme, baseMix };
({ width, height } = arr(1450)());
let tmp3 = (function getGradientColorsForCustomThemesGradient(mix) {
let c0;
let closure_2;
let result;
let colors;
let mixAmount;
({ colors, baseMix: c0, mixAmount } = mix);
if (mixAmount === undefined) {
mixAmount = {};
}
({ mixColorOverride: closure_2, theme: result } = mix);
let mapped = colors;
if (mix.mix) {
mapped = colors.map((PRIMARY_800) => {
let b;
let g;
let r;
const diff = 1 - closure_0 / 100;
let obj = { mixAmount, mixColorOverride: closure_2, theme: result, darkFallbackOpacity: outer2_10 + 0.25 * diff, lightFallbackOpacity: outer2_10 + 0.2 * diff };
obj = { mixAmount, theme: result, darkFallbackAmount: outer2_10, lightFallbackAmount: outer2_10 };
const tmp2 = outer2_12(obj);
const tmp3 = outer2_13(obj);
const obj3 = callback(outer2_2[7]);
({ r, g, b } = callback(outer2_2[7]).hexToRgb(PRIMARY_800));
const hexToRgbResult = callback(outer2_2[7]).hexToRgb(PRIMARY_800);
let tmp5 = arr(outer2_2[6]);
tmp5 = new tmp5(r, g, b, tmp3);
const obj4 = callback(outer2_2[7]);
const mixColorsResult = callback(outer2_2[7]).mixColors(tmp2, tmp5);
return callback(outer2_2[13]).colorToHex(mixColorsResult);
});
}
let tmp = mapped;
if (1 === mapped.length) {
const items = [mapped[0], mapped[0]];
tmp = items;
}
return tmp;
})(obj);
c0 = tmp3;
const result = (gradientAngle - 90) * Math.PI / 180;
const cosResult = Math.cos(result);
const sinResult = Math.sin(result);
obj = { start: obj, end: obj1 };
obj = { x: 0.6 - 0.7142857142857143 * cosResult, y: 0.5 - 0.7142857142857143 * sinResult };
({ start, end } = obj);
arr = validateColors(tmp3);
let items = [arr, tmp3];
obj1 = { x: 0.6 + 0.7142857142857143 * cosResult, y: 0.5 + 0.7142857142857143 * sinResult };
let tmp2 = arr(1450)();
const effect = React.useEffect(() => {
if (arr.length < 2) {
let obj = arr(outer1_2[15]);
const _Error = Error;
const error = new Error("Invalid custom theme gradient colors");
obj = {};
obj = {};
const _JSON = JSON;
obj.gradientColors = JSON.stringify(c0);
obj.extra = obj;
obj.captureException(error, obj);
}
}, items);
let tmp10Result = null;
if (arr.length >= 2) {
const obj2 = { colors: arr, locations: tmp7, start, end };
if (wide) {
let obj3 = { width };
wide = obj3;
}
const items1 = [wide, , , , ];
if (tall) {
let obj4 = { height };
tall = obj4;
}
items1[1] = tall;
items1[2] = tmp.linearGradient;
if (absolute) {
absolute = tmp.absolute;
}
items1[3] = absolute;
items1[4] = componentStyles;
obj2.style = items1;
tmp10Result = closure_6(arr(4555), obj2);
const tmp10 = closure_6;
const tmp13 = arr(4555);
}
return tmp10Result;
}
function wrapWithOverlayIfNeeded(arg0, withOverlay, styles, overlayColor, overlayOpacity) {
let tmp = arg0;
if (withOverlay) {
let obj = { style: styles.absolute };
const items = [arg0, ];
obj = {};
const items1 = [styles.softenGradient, ];
obj = { backgroundColor: require(3975) /* hexToRgb */.hexWithOpacity(overlayColor, overlayOpacity) };
items1[1] = obj;
obj.style = items1;
items[1] = callback(View, obj);
obj.children = items;
tmp = callback2(View, obj);
const obj4 = require(3975) /* hexToRgb */;
}
return tmp;
}
function useThemedGradientCommon() {
const obj = { styles: callback3() };
const tmp = callback3();
const tmp2 = importDefault(4067)();
const obj2 = require(3977) /* AccessibilityAnnouncer */;
const unsafe_rawColors = importDefault(689).unsafe_rawColors;
obj.overlayColor = require(3977) /* AccessibilityAnnouncer */.isThemeDark(tmp2) ? unsafe_rawColors.BLACK : unsafe_rawColors.WHITE;
return obj;
}
function ActiveGuildThemeGradient(arg0) {
let activeGuildTheme;
let theme;
({ activeGuildTheme, theme } = arg0);
let obj = Object.create(null);
obj.activeGuildTheme = 0;
obj.theme = 0;
const merged = Object.assign(arg0, obj);
if ("custom" === activeGuildTheme.type) {
const customUserThemeSettings = activeGuildTheme.customUserThemeSettings;
obj = {};
const merged1 = Object.assign(merged);
const items = [];
HermesBuiltin.arraySpread(require(3979) /* createPresetAppearance */.getSingleColorGuildThemeGradientColors(customUserThemeSettings.colors[0], theme), 0);
obj["colors"] = items;
obj["gradientColorStops"] = [];
const gradientAngle = customUserThemeSettings.gradientAngle;
let num3 = 0;
if (null != gradientAngle) {
num3 = gradientAngle;
}
obj["gradientAngle"] = num3;
let GUILD_THEME_DEFAULT_BASE_MIX = customUserThemeSettings.baseMix;
if (null == GUILD_THEME_DEFAULT_BASE_MIX) {
GUILD_THEME_DEFAULT_BASE_MIX = require(3979) /* createPresetAppearance */.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: closure_7 } = jsxProd);
let closure_8 = _createForOfIteratorHelperLoose.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 re11 = /^#(?:[0-9a-fA-F]{3}){1,2}$/;
let result = require("_isNativeReflectConstruct").fileFinishedImporting("modules/client_themes/native/ThemedGradient.tsx");
export default function ThemedGradient(overlayOpacity) {
let overlayColor;
let styles;
let num = overlayOpacity.overlayOpacity;
if (num === undefined) {
num = 0.7;
}
const gradientOverride = overlayOpacity.gradientOverride;
let obj = Object.create(null);
obj.overlayOpacity = 0;
obj.gradientOverride = 0;
const merged = Object.assign(overlayOpacity, obj);
({ styles, overlayColor } = useThemedGradientCommon());
const withOverlay = merged.withOverlay;
const tmp3 = useThemedGradientCommon();
obj = require(624) /* defaultAreStatesEqual */;
const items = [_isNativeReflectConstruct];
const preset = obj.useStateFromStoresObject(items, () => ({ preset: outer1_5.gradientPreset })).preset;
const tmp5 = importDefault(3981)();
let obj1 = require(4066) /* useCustomThemeDisplaySettings */;
const customThemeDisplaySettings = obj1.useCustomThemeDisplaySettings();
if (null != gradientOverride) {
if (tmp7) {
if (gradientOverride.type === require(3945) /* ClientThemeType */.ClientThemeType.CUSTOM_BACKGROUND_GRADIENT) {
obj = {};
const merged1 = Object.assign(merged);
const merged2 = Object.assign(gradientOverride.customThemeSettings);
obj["theme"] = gradientOverride.theme;
return wrapWithOverlayIfNeeded(callback(CustomThemesGradient, obj), withOverlay, styles, overlayColor, num);
}
}
if (gradientOverride.type === require(3945) /* ClientThemeType */.ClientThemeType.BACKGROUND_GRADIENT_PRESET) {
obj1 = {};
const merged3 = Object.assign(merged);
obj1["gradient"] = gradientOverride;
return wrapWithOverlayIfNeeded(callback(Gradient, obj1), withOverlay, styles, overlayColor, num);
}
}
if (null != tmp5) {
const obj2 = {};
const merged4 = Object.assign(merged);
obj2["activeGuildTheme"] = tmp5;
obj2["theme"] = tmp4;
let tmp12 = wrapWithOverlayIfNeeded(callback(ActiveGuildThemeGradient, obj2), withOverlay, styles, overlayColor, num);
} else {
if (tmp7) {
if (tmp7) {
const obj3 = {};
const merged5 = Object.assign(merged);
const merged6 = Object.assign(customThemeDisplaySettings.customTheme);
obj3["theme"] = customThemeDisplaySettings.baseTheme;
tmp12 = wrapWithOverlayIfNeeded(callback(CustomThemesGradient, obj3), withOverlay, styles, overlayColor, num);
}
}
tmp12 = null;
if (null != preset) {
const obj4 = {};
const merged7 = Object.assign(merged);
obj4["gradient"] = preset;
tmp12 = wrapWithOverlayIfNeeded(callback(Gradient, obj4), withOverlay, styles, overlayColor, num);
}
}
return tmp12;
};
export { Gradient };
export { validateColors };
export const CustomThemedGradient = function CustomThemedGradient(overlayOpacity) {
let overlayColor;
let styles;
let num = overlayOpacity.overlayOpacity;
if (num === undefined) {
num = 0.7;
}
const customTheme = overlayOpacity.customTheme;
let obj = Object.create(null);
obj.overlayOpacity = 0;
obj.customTheme = 0;
const merged = Object.assign(overlayOpacity, obj);
obj = {};
({ styles, overlayColor } = useThemedGradientCommon());
const merged1 = Object.assign(merged);
const merged2 = Object.assign(customTheme.customThemeSettings);
obj["theme"] = customTheme.theme;
return wrapWithOverlayIfNeeded(callback(CustomThemesGradient, obj), merged.withOverlay, styles, overlayColor, num);
};