366 lines
19 KiB
TypeScript
366 lines
19 KiB
TypeScript
/* Metro module 3963; source: modules/client_themes/native/ClientThemesUtils.tsx; dependencies: [57, 31, 1310, 3964, 1354, 697, 674, 4000, 4001, 3966, 4002, 4003, 4048, 4045, 2] */
|
|
import Module00057 from '../../../by-id/module-00057.js'; /* Metro dependency 57 */
|
|
import Module00674 from '../../../by-id/module-00674.js'; /* Metro dependency 674 */
|
|
import Native from '../../../external/discord_common/js/packages/tokens/native.tsx'; /* Metro dependency 697 */
|
|
import ThemeStore from '../../user_settings/ThemeStore.tsx'; /* Metro dependency 1310 */
|
|
import CustomThemeMobileStore from './CustomThemeMobileStore.tsx'; /* Metro dependency 1354 */
|
|
import ClientThemesBackgroundStore from '../ClientThemesBackgroundStore.tsx'; /* Metro dependency 3964 */
|
|
import Color from '../../../utils/Color.tsx'; /* Metro dependency 4001 */
|
|
import * as FileImportTrackerModule from '../../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */
|
|
import * as ReactModule from '../../../by-id/module-00031-React.js'; /* Metro dependency 31 */
|
|
import * as ClientThemesTypesModule from '../ClientThemesTypes.tsx'; /* Metro dependency 3966 */
|
|
import * as ColorUtilsModule from '../../../utils/ColorUtils.tsx'; /* Metro dependency 4000 */
|
|
import * as MobileThemesUtilsModule from './MobileThemesUtils.tsx'; /* Metro dependency 4045 */
|
|
|
|
function _fun32428(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#32428, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:6, offset: 0x0101522b, size: 844 bytes, params: 8, frame: 25
|
|
const env0_0 = require;
|
|
const getClientThemesGradientColorByPercentage2 = getClientThemesGradientColorByPercentage;
|
|
const closure2 = function({colors}) {
|
|
return colors.map(_fun32433);
|
|
};
|
|
const getGradientAngle = function(a0) {
|
|
return a0.type === require(dependencyMap[9]).ClientThemeType.BACKGROUND_GRADIENT_PRESET ? a0.angle : a0.customThemeSettings.gradientAngle;
|
|
};
|
|
const closure3 = function(a0, a1) {
|
|
return calculateGradientValueWithOpacity(a0, a1, a0.theme);
|
|
};
|
|
const Object = global.Object;
|
|
Object.defineProperty(exports, '__esModule', {value: true});
|
|
object = {LEVEL_9: 0.9};
|
|
object[0.9] = 'LEVEL_9';
|
|
object.LEVEL_85 = 0.85;
|
|
object[0.85] = 'LEVEL_85';
|
|
object.LEVEL_8 = 0.8;
|
|
object[0.8] = 'LEVEL_8';
|
|
object.LEVEL_75 = 0.75;
|
|
object[0.75] = 'LEVEL_75';
|
|
object.LEVEL_7 = 0.7;
|
|
object[0.7] = 'LEVEL_7';
|
|
object.LEVEL_6 = 0.6;
|
|
object[0.6] = 'LEVEL_6';
|
|
object.LEVEL_5 = 0.5;
|
|
object[0.5] = 'LEVEL_5';
|
|
object.LEVEL_4 = 0.4;
|
|
object[0.4] = 'LEVEL_4';
|
|
object.LEVEL_35 = 0.35;
|
|
object[0.35] = 'LEVEL_35';
|
|
object.LEVEL_3 = 0.3;
|
|
object[0.3] = 'LEVEL_3';
|
|
object.LEVEL_25 = 0.25;
|
|
object[0.25] = 'LEVEL_25';
|
|
object.LEVEL_2 = 0.2;
|
|
object[0.2] = 'LEVEL_2';
|
|
object.LEVEL_15 = 0.15;
|
|
object[0.15] = 'LEVEL_15';
|
|
object.LEVEL_1 = 0.1;
|
|
object[0.1] = 'LEVEL_1';
|
|
const object2 = {};
|
|
const BLACK = (Native).unsafe_rawColors.BLACK;
|
|
object2.DARK = BLACK;
|
|
const WHITE = (Native).unsafe_rawColors.WHITE;
|
|
object2.LIGHT = WHITE;
|
|
const object3 = {START: 0};
|
|
object3[0] = 'START';
|
|
object3.MID = 50;
|
|
object3[50] = 'MID';
|
|
object3.END = 100;
|
|
object3[100] = 'END';
|
|
const colorToHex2 = colorToHex;
|
|
(FileImportTrackerModule).fileFinishedImporting('modules/client_themes/native/ClientThemesUtils.tsx');
|
|
exports.GRADIENT_ANGLE_BREAKPOINT = 128;
|
|
exports.OverlayOpacity = object;
|
|
exports.OverlayColors = object2;
|
|
exports.GradientPercentage = object3;
|
|
exports.colorToHex = colorToHex2;
|
|
exports.getClientThemesGradientColorByPercentage = getClientThemesGradientColorByPercentage2;
|
|
exports.getClientThemesGradientHexColors = closure2;
|
|
exports.getGradientThemeMetadata = getGradientThemeMetadata;
|
|
exports.getGradientValue = closure3;
|
|
exports.useGradientValue = useGradientValue;
|
|
exports.getEmbedScrollGradientBackground = getEmbedScrollGradientBackground;
|
|
exports.getEmbedBackground = getEmbedBackground;
|
|
function getMixWithOpacity({r, g, b}, {r, g, b}, a2) { // fn#32429, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:791, offset: 0x01015577, size: 164 bytes, params: 4, frame: 25
|
|
const colorToHexBinding = colorToHex;
|
|
const mixColors = ColorUtilsModule.mixColors;
|
|
let value = Color;
|
|
value = new value(r, g, b, a2);
|
|
const defaultImport = Color;
|
|
const value3 = 1 - a2;
|
|
const value4 = Object.create(defaultImport.prototype, {constructor: {value: defaultImport}});
|
|
const defaultImport2 = new defaultImport(r, g, b, value3);
|
|
return colorToHexBinding(Reflect.apply(mixColors, ColorUtilsModule, [value,
|
|
defaultImport2 instanceof Object ? defaultImport2 : value4]));
|
|
}
|
|
|
|
function getClientThemesGradientColorByPercentage(a0, a1) { // fn#32430, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:924, offset: 0x0101561b, size: 149 bytes, params: 3, frame: 16
|
|
const value = Module00057((importDefault(674) /* metro dependency 674 */).scale(getClientThemesGradientHexColors(a0)).domain(a0.colors.map(function(a0) {
|
|
return a0.stop;
|
|
}))(a1).rgb(), 3);
|
|
return {r: value[0], g: value[1], b: value[2]};
|
|
}
|
|
|
|
function getClientThemesGradientHexColors({colors}) { // fn#32432, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:1126, offset: 0x010156bb, size: 27 bytes, params: 2, frame: 11
|
|
return colors.map(function(a0) {
|
|
return importDefault(dependencyMap[5]).unsafe_rawColors[a0.token];
|
|
});
|
|
function _fun32433({token}) { // fn#32433, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:1192, offset: 0x010156d6, size: 45 bytes, params: 2, frame: 11
|
|
return (Native).unsafe_rawColors[token];
|
|
}
|
|
|
|
}
|
|
|
|
function getGradientColorByPercentage(a0, a1) { // fn#32435, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:1373, offset: 0x0101574a, size: 254 bytes, params: 3, frame: 19
|
|
const type = a0.type;
|
|
const ClientThemeType = (ClientThemesTypesModule).ClientThemeType;
|
|
const BACKGROUND_GRADIENT_PRESET = ClientThemeType.BACKGROUND_GRADIENT_PRESET;
|
|
if (type === BACKGROUND_GRADIENT_PRESET) {
|
|
return getClientThemesGradientColorByPercentage(a0, a1);
|
|
}
|
|
const colors = a0.customThemeSettings.colors;
|
|
if (colors.length === 1) {
|
|
return (require(4000) /* metro dependency 4000: ColorUtils */).hexToRgb(colors[0]);
|
|
}
|
|
const value2 = colors.map(function(a0, a1) {
|
|
return a1 / (colors.length - 1) * 100;
|
|
});
|
|
const value3 = (Module00674).scale(colors);
|
|
const value = Module00057(value3.domain(value2)(a1).rgb(), 3);
|
|
return {r: value[0], g: value[1], b: value[2]};
|
|
}
|
|
|
|
function getBottomColorWithOpacity(a0, a1, a2) { // fn#32437, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:1733, offset: 0x0101586b, size: 76 bytes, params: 4, frame: 17
|
|
return getMixWithOpacity(getGradientColorByPercentage(a0,
|
|
getGradientAngle(a0) > env0_8 ? env0_11.END : env0_11.START), a1, a2);
|
|
}
|
|
|
|
function getTopColorWithOpacity(a0, a1, a2) { // fn#32438, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:1873, offset: 0x010158b7, size: 76 bytes, params: 4, frame: 17
|
|
return getMixWithOpacity(getGradientColorByPercentage(a0,
|
|
getGradientAngle(a0) > env0_8 ? env0_11.START : env0_11.END), a1, a2);
|
|
}
|
|
|
|
function calculateGradientValueWithOpacity(a0, a1, a2, a3) { // fn#32439, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:2010, offset: 0x01015903, size: 512 bytes, params: 5, frame: 23
|
|
var r3;
|
|
var r0;
|
|
var isThemeDark3;
|
|
let value = a1;
|
|
const value2 = a3;
|
|
const isThemeDark2 = (require(4002) /* metro dependency 4002: shared */).isThemeDark(a2);
|
|
const hexToRgb = ColorUtilsModule.hexToRgb;
|
|
let binding = env0_10;
|
|
const r4 = isThemeDark2 ? Reflect.apply(hexToRgb, ColorUtilsModule, [binding.DARK]) : Reflect.apply(hexToRgb,
|
|
ColorUtilsModule, [binding.LIGHT]);
|
|
let type = a0.type;
|
|
const ClientThemeType = (ClientThemesTypesModule).ClientThemeType;
|
|
const BACKGROUND_GRADIENT_PRESET = ClientThemeType.BACKGROUND_GRADIENT_PRESET;
|
|
let r8 = type !== BACKGROUND_GRADIENT_PRESET ? env0_11.MID : a0.midpointPercentage ?? env0_11.MID;
|
|
r8 = value ?? r8;
|
|
type = a0.type;
|
|
const CUSTOM_BACKGROUND_GRADIENT = ClientThemeType.CUSTOM_BACKGROUND_GRADIENT;
|
|
if (type === CUSTOM_BACKGROUND_GRADIENT) {
|
|
value = a0.customThemeSettings.baseMix / 100;
|
|
if (value2 != null) {
|
|
r0 = value2;
|
|
} else {
|
|
isThemeDark3 = (require(4002) /* metro dependency 4002: shared */).isThemeDark(a2);
|
|
value = 0.2 * value;
|
|
r0 = isThemeDark3 ? 0.12 + value : 0.3 + value;
|
|
}
|
|
r3 = r0;
|
|
} else if (value2 != null) {
|
|
r3 = value2;
|
|
} else {
|
|
value = require(4002) /* metro dependency 4002: shared */;
|
|
value = value.isThemeDark(a2);
|
|
binding = env0_9;
|
|
r3 = value ? binding.LEVEL_2 : binding.LEVEL_4;
|
|
}
|
|
value = getGradientAngle(a0);
|
|
const START = env0_11.START;
|
|
return r8 === START ? value < env0_8 ? getBottomColorWithOpacity(a0, r4, r3) : getTopColorWithOpacity(a0, r4,
|
|
r3) : r8 === env0_11.END ? value > env0_8 ? getBottomColorWithOpacity(a0, r4, r3) : getTopColorWithOpacity(a0,
|
|
r4, r3) : getMixWithOpacity(getGradientColorByPercentage(a0, r8), r4, r3);
|
|
}
|
|
|
|
function colorToHex({red, green, blue}) { // fn#32441, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:742, offset: 0x01015b21, size: 76 bytes, params: 2, frame: 15
|
|
let value = Module00674;
|
|
value = value.rgb(red, green, blue);
|
|
return value.hex('rgb');
|
|
}
|
|
|
|
function getGradientThemeMetadata(a0, a1) { // fn#32442, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:3241, offset: 0x01015b6d, size: 608 bytes, params: 3, frame: 33
|
|
var r10;
|
|
var r3;
|
|
var r4;
|
|
var colors;
|
|
var value7;
|
|
var indexOf;
|
|
var Math;
|
|
var min;
|
|
var items2;
|
|
var value9;
|
|
var defaultImport;
|
|
var max;
|
|
var value10;
|
|
if (a0 == null) {
|
|
return null;
|
|
}
|
|
if (a1 == null) {
|
|
return null;
|
|
}
|
|
var value;
|
|
const getGradientValueBinding = getGradientValue;
|
|
const START = env0_11.START;
|
|
const gradientValueBinding = getGradientValueBinding(a1, START);
|
|
const MID = env0_11.MID;
|
|
const gradientValueBinding2 = getGradientValueBinding(a1, MID);
|
|
const END = env0_11.END;
|
|
const gradientValueBinding3 = getGradientValueBinding(a1, END);
|
|
const gradientAngle = getGradientAngle(a1);
|
|
const r6 = gradientAngle > env0_8 ? gradientValueBinding : gradientValueBinding3;
|
|
const r5 = gradientAngle > env0_8 ? gradientValueBinding3 : gradientValueBinding;
|
|
let type = a1.type;
|
|
const ClientThemeType = (ClientThemesTypesModule).ClientThemeType;
|
|
const BACKGROUND_GRADIENT_PRESET = ClientThemeType.BACKGROUND_GRADIENT_PRESET;
|
|
const r11 = type === BACKGROUND_GRADIENT_PRESET ? getClientThemesGradientHexColors(a1) : a1.customThemeSettings.colors;
|
|
const property = r11[0];
|
|
const property2 = r11[r11.length - 1];
|
|
type = a1.type;
|
|
const CUSTOM_BACKGROUND_GRADIENT = ClientThemeType.CUSTOM_BACKGROUND_GRADIENT;
|
|
if (type !== CUSTOM_BACKGROUND_GRADIENT) {
|
|
r3 = property2;
|
|
r4 = property;
|
|
} else {
|
|
colors = a1.customThemeSettings.colors;
|
|
value7 = colors.map(_fun32443);
|
|
value = importDefault(674) /* metro dependency 674 */;
|
|
indexOf = value7.indexOf;
|
|
Math = global.Math;
|
|
min = Math.min;
|
|
items2 = [];
|
|
value = value(colors[Reflect.apply(indexOf, value7, [apply(min, items2, Math, arraySpread(items2, value7, 0,
|
|
undefined))])]);
|
|
value = value.set('hsl.s', 0.2);
|
|
value9 = value.set('hsl.l', 0.7).hex();
|
|
defaultImport = importDefault(674) /* metro dependency 674 */;
|
|
indexOf = value7.indexOf;
|
|
Math = global.Math;
|
|
max = Math.max;
|
|
items2 = [];
|
|
arraySpread(items2, value7, 0, value);
|
|
value = defaultImport(colors[Reflect.apply(indexOf, value7, [apply(max, items2, Math, value)])]);
|
|
value = value.set('hsl.s', 0.2);
|
|
value = value.set('hsl.l', 0.9);
|
|
value = value.hex();
|
|
value10 = a0 === 'dark';
|
|
r10 = value10 ? value9 : value;
|
|
r3 = value10 ? value : value9;
|
|
r4 = r10;
|
|
}
|
|
return {theme: a0, colors: {['gradient.start']: gradientValueBinding, ['gradient.mid']: gradientValueBinding2,
|
|
['gradient.end']: gradientValueBinding3, ['gradient.top']: r6, ['gradient.bottom']: r5,
|
|
['gradient.primary']: r4, ['gradient.secondary']: r3}};
|
|
function _fun32443(a0) { // fn#32443, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:3748, offset: 0x01015dcd, size: 45 bytes, params: 2, frame: 11
|
|
let value = environment.__proto__;
|
|
value = importDefault(674) /* metro dependency 674 */;
|
|
value = value(a0);
|
|
return value.luminance();
|
|
}
|
|
|
|
}
|
|
|
|
function useGradientValue(a0, a1) { // fn#32444, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:4184, offset: 0x01015dfa, size: 147 bytes, params: 3, frame: 20
|
|
const env0_0 = a0;
|
|
const env0_1 = a1;
|
|
const value2 = undefined;
|
|
return ReactModule.useMemo(_fun32445, [(importDefault(4003) /* metro dependency 4003: useColorThemeBackground */)(),
|
|
a1 == null ? value2 : a1.dark, a1 == null ? value2 : a1.light, a0,
|
|
(importDefault(4048) /* metro dependency 4048: useTheme */)()]);
|
|
function _fun32445() { // fn#32445, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:4265, offset: 0x01015e8d, size: 282 bytes, params: 1, frame: 20
|
|
var r5;
|
|
var r7;
|
|
var calculateGradientValueWithOpacityBinding;
|
|
var binding;
|
|
var value4;
|
|
var isThemeDark2;
|
|
var isThemeDark3;
|
|
var value5;
|
|
var binding3;
|
|
var binding4;
|
|
if (env0_2 == null) {
|
|
return null;
|
|
}
|
|
const value2 = undefined;
|
|
if ((require == null ? value2 : require.dark) != null) {
|
|
value4 = environment.__proto__;
|
|
isThemeDark2 = (require(4002) /* metro dependency 4002: shared */).isThemeDark(Module00057);
|
|
binding = env1_9;
|
|
r5 = isThemeDark2 ? binding.LEVEL_2 : binding.LEVEL_4;
|
|
isThemeDark3 = (require(4002) /* metro dependency 4002: shared */).isThemeDark(Module00057);
|
|
value5 = require == null;
|
|
r7 = isThemeDark3 ? value5 ? value2 : require.dark : value5 ? value2 : require.light;
|
|
calculateGradientValueWithOpacityBinding = calculateGradientValueWithOpacity;
|
|
binding = env0_2;
|
|
binding3 = env0_0;
|
|
binding4 = Module00057;
|
|
r5 = r7 ?? r5;
|
|
return calculateGradientValueWithOpacityBinding(binding, binding3, binding4, r5);
|
|
}
|
|
if ((require == null ? value2 : require.light) != null) {
|
|
value4 = environment.__proto__;
|
|
isThemeDark2 = (require(4002) /* metro dependency 4002: shared */).isThemeDark(Module00057);
|
|
binding = env1_9;
|
|
r5 = isThemeDark2 ? binding.LEVEL_2 : binding.LEVEL_4;
|
|
isThemeDark3 = (require(4002) /* metro dependency 4002: shared */).isThemeDark(Module00057);
|
|
value5 = require == null;
|
|
r7 = isThemeDark3 ? value5 ? value2 : require.dark : value5 ? value2 : require.light;
|
|
calculateGradientValueWithOpacityBinding = calculateGradientValueWithOpacity;
|
|
binding = env0_2;
|
|
binding3 = env0_0;
|
|
binding4 = Module00057;
|
|
r5 = r7 ?? r5;
|
|
return calculateGradientValueWithOpacityBinding(binding, binding3, binding4, r5);
|
|
}
|
|
return calculateGradientValueWithOpacity(env0_2, env0_0, Module00057);
|
|
}
|
|
|
|
}
|
|
|
|
function getEmbedScrollGradientBackground() { // fn#32446, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:4682, offset: 0x01015fa7, size: 83 bytes, params: 1, frame: 14
|
|
const customBackgroundGradient = (MobileThemesUtilsModule).getCustomBackgroundGradient();
|
|
const value3 = null;
|
|
const r4 = value3 != customBackgroundGradient ? customBackgroundGradient : ClientThemesBackgroundStore.gradientPreset;
|
|
const r2 = value3 != r4 ? r4 : value3;
|
|
return value3 == r2 ? value3 : getGradientValue(r2);
|
|
}
|
|
|
|
function getEmbedBackground() { // fn#32447, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4112:4884, offset: 0x01015ffa, size: 144 bytes, params: 1, frame: 15
|
|
var r3;
|
|
var moduleValue;
|
|
var isThemeDark2;
|
|
var binding;
|
|
var moduleValue2;
|
|
const hasCustomTheme2 = CustomThemeMobileStore.hasCustomTheme();
|
|
if (ClientThemesBackgroundStore.gradientPreset != null) {
|
|
moduleValue = require(4002) /* metro dependency 4002: shared */;
|
|
isThemeDark2 = moduleValue.isThemeDark(ThemeStore.theme);
|
|
binding = env0_10;
|
|
r3 = isThemeDark2 ? binding.DARK : binding.LIGHT;
|
|
moduleValue2 = require(4000) /* metro dependency 4000: ColorUtils */;
|
|
return moduleValue2.hexWithOpacity(r3, env0_9.LEVEL_1);
|
|
}
|
|
if (hasCustomTheme2) {
|
|
moduleValue = require(4002) /* metro dependency 4002: shared */;
|
|
isThemeDark2 = moduleValue.isThemeDark(ThemeStore.theme);
|
|
binding = env0_10;
|
|
r3 = isThemeDark2 ? binding.DARK : binding.LIGHT;
|
|
moduleValue2 = require(4000) /* metro dependency 4000: ColorUtils */;
|
|
return moduleValue2.hexWithOpacity(r3, env0_9.LEVEL_1);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
}
|
|
|
|
global.__d(_fun32428, 3963, [57, 31, 1310, 3964, 1354, 697, 674, 4000, 4001, 3966, 4002, 4003, 4048, 4045,
|
|
2]) /* metro module 3963, dependencies: [57, 31, 1310, 3964, 1354, 697, 674, 4000, 4001, 3966, 4002, 4003, 4048, 4045, 2] */;
|