/* Metro module 7704; source: modules/client_themes/native/ThemedGradient.tsx; dependencies: [31, 27, 3964, 33, 4501, 4002, 4001, 4000, 1478, 4589, 4048, 697, 4004, 3963, 674, 1216, 632, 4006, 4047, 3966, 2] */
function _fun61503(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#61503, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:6, offset: 0x01b42256, size: 425 bytes, params: 8, frame: 21
const env0_0 = require;
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
const env0_3 = importAll(31) /* metro dependency 31 */;
const env0_4 = (require(27) /* metro dependency 27 */).View;
const clientThemesBackgroundStore = importDefault(3964) /* metro dependency 3964: ClientThemesBackgroundStore */;
const value = require(33) /* metro dependency 33 */;
const env0_6 = value.jsx;
const env0_7 = value.jsxs;
const env0_8 = (require(4501) /* metro dependency 4501: createStyles */).createStyles({softenGradient: {flex: 1},
linearGradient: {flex: 1}, absolute: {'position': 'absolute', 'top': 0, 'bottom': 0, 'left': 0, 'right': 0}});
const env0_9 = {'x': 0.5, 'y': 0.5};
const closure = Gradient;
const env0_14 = RegExp('^#(?:[0-9a-fA-F]{3}){1,2}$', '');
const closure2 = function(a0) {
return a0.reduce(_fun61522, []);
};
const useThemedGradientCommon = function() {
var value2 = useStyles();
var value3 = importDefault(dependencyMap[10])();
var object = {styles: value2};
var isThemeDark = require(dependencyMap[5]).isThemeDark(value3);
var property = importDefault(dependencyMap[11]).unsafe_rawColors;
object.overlayColor = isThemeDark ? property.BLACK : property.WHITE;
return object;
};
(require(2) /* metro dependency 2 */).fileFinishedImporting('modules/client_themes/native/ThemedGradient.tsx');
exports.default = _default_61526;
exports.Gradient = closure;
exports.validateColors = closure2;
exports.CustomThemedGradient = CustomThemedGradient;
}
function getThemeMixColor({mixAmount = {}, mixColorOverride, theme, darkFallbackOpacity, lightFallbackOpacity}) { // fn#61504, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:319, offset: 0x01b423ff, size: 206 bytes, params: 2, frame: 22
darkFallbackOpacity = darkFallbackOpacity === undefined ? 0.7 : darkFallbackOpacity;
lightFallbackOpacity = lightFallbackOpacity === undefined ? 0.8 : lightFallbackOpacity;
if (mixColorOverride != null) {
return mixColorOverride;
}
const isThemeDark2 = (require(4002) /* metro dependency 4002: shared */).isThemeDark(theme);
let r4 = isThemeDark2 ? darkFallbackOpacity : lightFallbackOpacity;
let r3 = isThemeDark2 ? mixAmount.dark : mixAmount.light;
r4 = r3 ?? r4;
r3 = isThemeDark2 ? 0 : 255;
let value = importDefault(4001) /* metro dependency 4001: Color */;
const value4 = Object.create(value.prototype, {constructor: {value: value}});
value = new value(r3, r3, r3, r4);
return value instanceof Object ? value : value4;
}
function getThemedMixAmount({mixAmount = {}, theme, darkFallbackAmount, lightFallbackAmount}) { // fn#61505, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:578, offset: 0x01b424cd, size: 157 bytes, params: 2, frame: 16
darkFallbackAmount = darkFallbackAmount === undefined ? 0.3 : darkFallbackAmount;
lightFallbackAmount = lightFallbackAmount === undefined ? 0.2 : lightFallbackAmount;
const value = require(4002) /* metro dependency 4002: shared */;
return value.isThemeDark(theme) ? mixAmount.dark == null ? darkFallbackAmount : 1 - mixAmount.dark : mixAmount.light == null ? lightFallbackAmount : 1 - mixAmount.light;
}
function getMixedGradientColor({color, mixAmount, mixColorOverride, theme}) { // fn#61506, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:762, offset: 0x01b4256a, size: 197 bytes, params: 2, frame: 22
const themeMixColor = getThemeMixColor({mixAmount: mixAmount, mixColorOverride: mixColorOverride, theme: theme});
const themedMixAmount = getThemedMixAmount({mixAmount: mixAmount, theme: theme});
const {r, g, b} = (require(4000) /* metro dependency 4000: ColorUtils */).hexToRgb(color);
const colorUtilsModule = require(4000) /* metro dependency 4000: ColorUtils */;
const mixColors = colorUtilsModule.mixColors;
let value = importDefault(4001) /* metro dependency 4001: Color */;
value = new value(r, g, b, themedMixAmount);
value = Reflect.apply(mixColors, colorUtilsModule, [themeMixColor, value]);
return value.toHexString();
}
function CustomThemesGradient({colors, baseMix, gradientAngle, gradientColorStops, absolute, wide, tall, mix, mixAmount = {}, mixColorOverride, componentStyles, theme}) { // fn#61507, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:2500, offset: 0x01b4262f, size: 541 bytes, params: 2, frame: 29
var r0;
var value;
const styles = useStyles();
const {width, height} = (importDefault(1478) /* metro dependency 1478: useWindowDimensionsNative */)();
const value3 = ((a0) => {
var r3;
var property = a0.colors;
var env0_0 = a0.baseMix;
var mix = a0.mix;
var mixAmount = a0.mixAmount;
var env0_1 = mixAmount !== undefined ? mixAmount : {};
var env0_2 = a0.mixColorOverride;
var env0_3 = a0.theme;
r3 = mix ? property.map(_fun61509) : property;
return r3.length !== 1 ? r3 : [r3[0], r3[0]];
})({colors: colors, mix: mix, mixAmount: mixAmount, mixColorOverride: mixColorOverride, theme: theme,
baseMix: baseMix});
const value4 = gradientAngle - 90;
let Math = global.Math;
const PI = Math.PI;
const value5 = value4 * PI / 180;
Math = global.Math;
const value6 = Math.cos(value5);
Math = global.Math;
const value7 = Math.sin(value5);
const {start, end} = {start: {x: 0.6 - 0.7142857142857143 * value6, y: 0.5 - 0.7142857142857143 * value7},
end: {x: 0.6 + 0.7142857142857143 * value6, y: 0.5 + 0.7142857142857143 * value7}};
const value8 = validateColors(value3);
const value9 = ((a0) => {
var r3;
var value = a1;
var env0_0 = a0;
r3 = value !== undefined ? value : [];
return r3.length === a0.length ? r3.map(_fun61511) : a0.length === 1 ? [0, 1] : a0.map(_fun61512);
})(value8, gradientColorStops);
env0_3.useEffect(_fun61513, [value8, value3]);
if (value8.length < 2) {
r0 = null;
} else {
value = importDefault(4589) /* metro dependency 4589 */;
absolute = absolute && styles.absolute;
value = ((Component) => )(value);
r0 = value;
}
return r0;
}
function GradientBase({colors, locations, angle, angleCenter = env0_9, absolute, wide, tall, componentStyles}) { // fn#61514, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:1076, offset: 0x01b42ada, size: 227 bytes, params: 2, frame: 25
const styles = useStyles();
const {width, height} = (importDefault(1478) /* metro dependency 1478: useWindowDimensionsNative */)();
const value = importDefault(4589) /* metro dependency 4589 */;
absolute = absolute && styles.absolute;
return ((Component) => )(value);
}
function Gradient({gradient, absolute, wide, tall, angleOverride, componentStyles, mix, mixAmount = {}, mixColorOverride}) { // fn#61515, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:1368, offset: 0x01b42bbd, size: 237 bytes, params: 2, frame: 23
const env0_3 = (importDefault(4048) /* metro dependency 4048: useTheme */)();
return (
);
}
function GuildThemePresetGradient({preset, absolute, wide, tall, angleOverride, componentStyles, mix, mixAmount = {}, mixColorOverride}) { // fn#61518, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:1876, offset: 0x01b42d44, size: 255 bytes, params: 2, frame: 23
const guildThemePresetAppearance = (require(4004) /* metro dependency 4004: GuildThemePresets */).getGuildThemePresetAppearance(preset,
(importDefault(4048) /* metro dependency 4048: useTheme */)());
return (
);
}
function validateColors(a0) { // fn#61521, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:2366, offset: 0x01b42e8f, size: 28 bytes, params: 2, frame: 13
return a0.reduce(_fun61522, []);
}
function wrapWithOverlayIfNeeded(a0, a1, a2, a3, a4) { // fn#61523, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:4037, offset: 0x01b42f28, size: 145 bytes, params: 6, frame: 23
var r0;
var items3;
var items2;
var object;
let value = a0;
if (a1) {
var viewBindingProps = {style: a2.absolute};
items3 = [value];
items2 = [a2.softenGradient];
object = {};
value = require(4000) /* metro dependency 4000: ColorUtils */;
object.backgroundColor = value.hexWithOpacity(a3, a4);
items2[1] = object;
items3[1] = ;
value = {items3};
r0 = value;
} else {
r0 = value;
}
return r0;
}
function ActiveGuildThemeGradient(a0) { // fn#61525, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:4369, offset: 0x01b43031, size: 298 bytes, params: 2, frame: 23
var customUserThemeSettings;
var property;
var items2;
const activeGuildTheme = a0.activeGuildTheme;
const theme = a0.theme;
let value = Object.create(null);
const value2 = 0;
value.activeGuildTheme = value2;
value.theme = value2;
const value3 = copyDataProperties({}, a0, value, undefined);
if (activeGuildTheme.type === 'custom') {
customUserThemeSettings = activeGuildTheme.customUserThemeSettings;
property = customUserThemeSettings.colors[value2];
var customThemesGradientBindingProps = {...value3};
value = require(4004) /* metro dependency 4004: GuildThemePresets */;
value = value.getSingleColorGuildThemeGradientColors(property, theme);
items2 = [];
arraySpread(items2, value, value2, property);
customThemesGradientBindingProps['colors'] = items2;
customThemesGradientBindingProps['gradientColorStops'] = [];
customThemesGradientBindingProps['gradientAngle'] = customUserThemeSettings.gradientAngle ?? value2;
customThemesGradientBindingProps['baseMix'] = customUserThemeSettings.baseMix ?? (require(4004) /* metro dependency 4004: GuildThemePresets */).GUILD_THEME_DEFAULT_BASE_MIX;
customThemesGradientBindingProps['theme'] = theme;
return ;
}
return ;
}
function _default_61526(a0) { // fn#61526, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:4794, offset: 0x01b4315b, size: 667 bytes, params: 2, frame: 30
var type;
const ClientThemeType = (require(3966) /* metro dependency 3966: ClientThemesTypes */).ClientThemeType;
let overlayOpacity = a0.overlayOpacity;
overlayOpacity = overlayOpacity === undefined ? 0.7 : overlayOpacity;
const gradientOverride = a0.gradientOverride;
const value = null;
const value2 = Object.create(value);
value2.overlayOpacity = 0;
value2.gradientOverride = 0;
const value3 = copyDataProperties({}, a0, value2, undefined);
const {styles, overlayColor} = useThemedGradientCommon();
const withOverlay = value3.withOverlay;
const value6 = (importDefault(4048) /* metro dependency 4048: useTheme */)();
const useStateFromStoresModule = require(632) /* metro dependency 632: useStateFromStores */;
const useStateFromStoresObject = useStateFromStoresModule.useStateFromStoresObject;
const preset = Reflect.apply(useStateFromStoresObject, useStateFromStoresModule, [[ClientThemesBackgroundStore],
function() {
return {preset: ClientThemesBackgroundStore.gradientPreset};
}]).preset;
const value7 = (importDefault(4006) /* metro dependency 4006: useRoutedActiveGuildTheme */)();
const value8 = (require(4047) /* metro dependency 4047: useCustomThemeDisplaySettings */).useCustomThemeDisplaySettings();
const value9 = value8 !== undefined;
if (value != gradientOverride) {
if (value9) {
type = gradientOverride.type;
if (type === ClientThemeType.CUSTOM_BACKGROUND_GRADIENT) {
return wrapWithOverlayIfNeeded(,
withOverlay, styles, overlayColor, overlayOpacity);
}
type = gradientOverride.type;
if (type === ClientThemeType.BACKGROUND_GRADIENT_PRESET) {
return wrapWithOverlayIfNeeded(,
withOverlay,
styles,
overlayColor, overlayOpacity);
}
return value != value7 ? wrapWithOverlayIfNeeded(,
withOverlay, styles, overlayColor,
overlayOpacity) : value9 && value9 ? wrapWithOverlayIfNeeded(,
withOverlay, styles, overlayColor,
overlayOpacity) : value != preset ? wrapWithOverlayIfNeeded(,
withOverlay, styles, overlayColor, overlayOpacity) : value;
}
type = gradientOverride.type;
if (type === ClientThemeType.BACKGROUND_GRADIENT_PRESET) {
return wrapWithOverlayIfNeeded(, withOverlay,
styles,
overlayColor, overlayOpacity);
}
}
return value != value7 ? wrapWithOverlayIfNeeded(,
withOverlay, styles, overlayColor,
overlayOpacity) : value9 && value9 ? wrapWithOverlayIfNeeded(,
withOverlay, styles, overlayColor,
overlayOpacity) : value != preset ? wrapWithOverlayIfNeeded(,
withOverlay, styles, overlayColor, overlayOpacity) : value;
}
function CustomThemedGradient(a0) { // fn#61528, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:5890, offset: 0x01b4340c, size: 158 bytes, params: 2, frame: 23
let overlayOpacity = a0.overlayOpacity;
overlayOpacity = overlayOpacity === undefined ? 0.7 : overlayOpacity;
const customTheme = a0.customTheme;
let value = Object.create(null);
value.overlayOpacity = 0;
value.customTheme = 0;
value = copyDataProperties({}, a0, value, undefined);
const {styles, overlayColor} = useThemedGradientCommon();
return wrapWithOverlayIfNeeded(,
value.withOverlay, styles, overlayColor, overlayOpacity);
}
function getGradientColorsForCustomThemesGradient({colors, baseMix, mix, mixAmount = {}, mixColorOverride, theme}) { // fn#61508, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:2726, owner: CustomThemesGradient.getGradientColorsForCustomThemesGradient, offset: 0x01b4284c, size: 127 bytes, params: 2, frame: 14
const r3 = mix ? colors.map(_fun61509) : colors;
return r3.length !== 1 ? r3 : [r3[0], r3[0]];
}
function getGradientLocationsForCustomThemesGradient(a0) { // fn#61510, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:3547, owner: CustomThemesGradient.getGradientLocationsForCustomThemesGradient, offset: 0x01b429ef, size: 94 bytes, params: 2, frame: 13
const value = a1;
const env0_0 = a0;
const r3 = value !== undefined ? value : [];
return r3.length === a0.length ? r3.map(function(a0) {
return a0 / 100;
}) : a0.length === 1 ? [0, 1] : a0.map(_fun61512);
}
function _fun61513() { // fn#61513, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:3729, offset: 0x01b42a59, size: 129 bytes, params: 1, frame: 17
var value2;
var defaultImport;
var captureException;
var error;
var object;
if (env0_1.length < 2) {
value2 = environment.__proto__;
defaultImport = importDefault(1216) /* metro dependency 1216: SentryUtilsNative */;
captureException = defaultImport.captureException;
error = new global.Error('Invalid custom theme gradient colors');
object = {};
object.gradientColors = global.JSON.stringify(env0_0);
Reflect.apply(captureException, defaultImport, [error, {extra: object}]);
}
}
function _fun61516(a0) { // fn#61516, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:1520, offset: 0x01b42caa, size: 136 bytes, params: 2, frame: 16
var r0;
var getMixedGradientColorBinding;
var object2;
if (mix) {
getMixedGradientColorBinding = getMixedGradientColor;
object2 = {};
object2.color = (importDefault(697) /* metro dependency 697: native */).unsafe_rawColors[a0.token];
object2.mixAmount = env0_1;
object2.mixColorOverride = mixColorOverride;
object2.theme = env0_3;
r0 = getMixedGradientColorBinding(object2);
} else {
r0 = (importDefault(697) /* metro dependency 697: native */).unsafe_rawColors[a0.token];
}
return r0;
}
function _fun61519(a0) { // fn#61519, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:2071, offset: 0x01b42e43, size: 76 bytes, params: 2, frame: 13
return mix ? getMixedGradientColor({color: a0.hex, mixAmount: env0_1, mixColorOverride: mixColorOverride,
theme: env0_3}) : a0.hex;
}
function _fun61522(a0, a1) { // fn#61522, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:2379, offset: 0x01b42eab, size: 125 bytes, params: 3, frame: 15
var value;
var push;
var property;
var hex;
var error;
if (typeof a1 !== 'string') {
try {
push = a0.push;
value = environment.__proto__;
property = dependencyMap[14];
value = importDefault(property);
value = value(a1);
value = value.hex('rgb');
Reflect.apply(push, a0, [value]);
} catch (error) {
}
} else {
value = environment.__proto__;
var binding = env1_14;
if (binding.test(a1)) {
a0.push(a1);
return a0;
}
try {
push = a0.push;
} catch (error) {
return a0;
}
value = environment.__proto__;
try {
} catch (error) {
return a0;
}
try {
} catch (error) {
return a0;
}
try {
property = dependencyMap[14];
} catch (error) {
return a0;
}
try {
value = importDefault(property);
} catch (error) {
return a0;
}
try {
value = value(a1);
} catch (error) {
return a0;
}
try {
hex = value.hex;
} catch (error) {
return a0;
}
try {
value = Reflect.apply(hex, value, ['rgb']);
} catch (error) {
return a0;
}
try {
Reflect.apply(push, a0, [value]);
} catch (error) {
}
}
return a0;
}
function _fun61509(a0) { // fn#61509, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7882:2874, offset: 0x01b428cb, size: 292 bytes, params: 2, frame: 23
const value2 = 1 - baseMix / 100;
const getThemeMixColorBinding = getThemeMixColor;
const binding = env0_1;
const themeBinding = theme;
let value = getThemeMixColorBinding({mixAmount: binding, mixColorOverride: mixColorOverride, theme: themeBinding,
darkFallbackOpacity: env2_10 + 0.25 * value2, lightFallbackOpacity: env2_10 + 0.2 * value2});
const themedMixAmount = getThemedMixAmount({mixAmount: binding, theme: themeBinding, darkFallbackAmount: env2_10,
lightFallbackAmount: env2_10});
const {r, g, b} = (require(4000) /* metro dependency 4000: ColorUtils */).hexToRgb(a0);
const colorUtilsModule = require(4000) /* metro dependency 4000: ColorUtils */;
const mixColors = colorUtilsModule.mixColors;
const defaultImport = importDefault(4001) /* metro dependency 4001: Color */;
const value6 = Object.create(defaultImport.prototype, {constructor: {value: defaultImport}});
const defaultImport2 = new defaultImport(r, g, b, themedMixAmount);
value = Reflect.apply(mixColors, colorUtilsModule, [value,
defaultImport2 instanceof Object ? defaultImport2 : value6]);
return (require(3963) /* metro dependency 3963: ClientThemesUtils */).colorToHex(value);
}