Files
discord-decomp/sources/modules/application_commands/native/ApplicationCommandBar.tsx
T
2026-07-28 01:06:53 +03:00

438 lines
24 KiB
TypeScript

/* Metro module 11869; source: modules/application_commands/native/ApplicationCommandBar.tsx; dependencies: [57, 31, 27, 1945, 33, 4501, 697, 6235, 5278, 1244, 1305, 566, 11752, 5475, 4573, 7972, 6266, 11870, 2] */
import Module00057 from '../../../by-id/module-00057.js'; /* Metro dependency 57 */
import GuildMemberStore from '../../../stores/GuildMemberStore.tsx'; /* Metro dependency 1945 */
import UsePrevious from '../../../hooks/usePrevious.tsx'; /* Metro dependency 6266 */
import * as FileImportTrackerModule from '../../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */
import * as ReactNativeModule from '../../../by-id/module-00027-ReactNative.js'; /* Metro dependency 27 */
import * as ReactModule from '../../../by-id/module-00031-React.js'; /* Metro dependency 31 */
import * as FluxModule from '../../../external/discord_common/js/packages/flux/index.tsx'; /* Metro dependency 566 */
import * as NativeModule from '../../../design/void/native.tsx'; /* Metro dependency 1305 */
import * as TextModule from '../../../design/components/Text/native/Text.tsx'; /* Metro dependency 4573 */
import * as PressablesModule from '../../../design/void/Pressables/native/Pressables.tsx'; /* Metro dependency 5278 */
import * as LegacyTokensModule from '../../../design/migrations/native/LegacyTokens.tsx'; /* Metro dependency 6235 */
import * as NativeModule2 from '../../../design/void/Form/native/index.tsx'; /* Metro dependency 7972 */
import * as ApplicationCommandUtilsModule from './ApplicationCommandUtils.tsx'; /* Metro dependency 11752 */
function _fun91003(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#91003, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:6, offset: 0x0204f649, size: 963 bytes, params: 8, frame: 26
const env0_0 = require;
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
let value = ReactNativeModule;
const env0_5 = value.View;
const StyleSheet = value.StyleSheet;
const env0_6 = value.ScrollView;
value = require(33) /* metro dependency 33 */;
const env0_8 = value.jsx;
const env0_9 = value.Fragment;
const env0_10 = value.jsxs;
value = require(4501) /* metro dependency 4501: createStyles */;
const createStyles = value.createStyles;
object = {};
const object2 = {flexDirection: 'column'};
const MOBILE_COMMAND_BAR_BACKGROUND = (importDefault(697) /* metro dependency 697: native */).colors.MOBILE_COMMAND_BAR_BACKGROUND;
object2.backgroundColor = MOBILE_COMMAND_BAR_BACKGROUND;
const CHAT_INPUT_FLOATING_BORDER_RADIUS = (importDefault(697) /* metro dependency 697: native */).modules.mobile.CHAT_INPUT_FLOATING_BORDER_RADIUS;
object2.borderRadius = CHAT_INPUT_FLOATING_BORDER_RADIUS;
const CHAT_INPUT_FLOATING_ACCESSORY_BORDER_WIDTH = (importDefault(697) /* metro dependency 697: native */).modules.mobile.CHAT_INPUT_FLOATING_ACCESSORY_BORDER_WIDTH;
object2.borderWidth = CHAT_INPUT_FLOATING_ACCESSORY_BORDER_WIDTH;
const MOBILE_FLOATING_ACCESSORY_BORDER = (importDefault(697) /* metro dependency 697: native */).colors.MOBILE_FLOATING_ACCESSORY_BORDER;
object2.borderColor = MOBILE_FLOATING_ACCESSORY_BORDER;
object2.overflow = 'hidden';
object.applicationCommandBar = object2;
const object3 = {'width': 24, 'height': 24, 'borderRadius': null, 'marginRight': 16};
object3.borderRadius = (importDefault(697) /* metro dependency 697: native */).radii.md;
object.applicationIcon = object3;
object.applicationTopWrapperScrollView = {'flexDirection': 'row', 'alignItems': 'center', 'paddingHorizontal': 16,
'paddingVertical': 8};
object.applicationName = {'textAlignVertical': 'center', 'marginRight': 12};
const object4 = {'width': null, 'marginVertical': 8, 'marginHorizontal': 12, 'backgroundColor': null,
'height': '100%'};
object4.width = StyleSheet.hairlineWidth;
const BACKGROUND_MOD_NORMAL = (importDefault(697) /* metro dependency 697: native */).colors.BACKGROUND_MOD_NORMAL;
object4.backgroundColor = BACKGROUND_MOD_NORMAL;
object.applicationOptionalOptionsDivider = object4;
object.applicationOptionalOptionsDividerWithNoRequired = {marginLeft: 4};
object.applicationOptionalOptionsIndicator = {'marginHorizontal': 4, 'paddingVertical': 8};
object.applicationDescriptionContainer = {flexShrink: 1};
const MOBILE_COMMAND_BAR_DIVIDER = (importDefault(697) /* metro dependency 697: native */).colors.MOBILE_COMMAND_BAR_DIVIDER;
object.applicationDescriptionDivider = {marginLeft: 0, backgroundColor: MOBILE_COMMAND_BAR_DIVIDER};
const object8 = {'marginHorizontal': 4, 'padding': 8, 'fontSize': 12, 'alignItems': 'center'};
object8.borderRadius = (importDefault(697) /* metro dependency 697: native */).radii.xs;
const DARK_PRIMARY_800_LIGHT_PRIMARY_300 = (LegacyTokensModule).DARK_PRIMARY_800_LIGHT_PRIMARY_300;
object8.backgroundColor = DARK_PRIMARY_800_LIGHT_PRIMARY_300;
object.applicationCommandOption = object8;
const TEXT_DEFAULT = (importDefault(697) /* metro dependency 697: native */).colors.TEXT_DEFAULT;
object.applicationCommandOptionText = {color: TEXT_DEFAULT};
const BACKGROUND_BRAND = (importDefault(697) /* metro dependency 697: native */).colors.BACKGROUND_BRAND;
object.activeCommandOption = {backgroundColor: BACKGROUND_BRAND};
const WHITE = (importDefault(697) /* metro dependency 697: native */).colors.WHITE;
object.activeCommandOptionText = {color: WHITE};
object.completeCommandOptionText = {opacity: 0.5};
const TEXT_FEEDBACK_CRITICAL = (importDefault(697) /* metro dependency 697: native */).colors.TEXT_FEEDBACK_CRITICAL;
object.errorCommandOptionText = {color: TEXT_FEEDBACK_CRITICAL};
object.optionDescriptionContainer = {'overflow': 'hidden', 'paddingHorizontal': 16, 'paddingVertical': 8,
'flexDirection': 'row'};
const MOBILE_FLOATING_ACCESSORY_BACKGROUND = (importDefault(697) /* metro dependency 697: native */).colors.MOBILE_FLOATING_ACCESSORY_BACKGROUND;
object.descriptionEllipsis = {marginLeft: 10, backgroundColor: MOBILE_FLOATING_ACCESSORY_BACKGROUND};
const INTERACTIVE_TEXT_DEFAULT = (importDefault(697) /* metro dependency 697: native */).colors.INTERACTIVE_TEXT_DEFAULT;
object.descriptionEllipsisDots = {backgroundColor: INTERACTIVE_TEXT_DEFAULT};
const DARK_PRIMARY_660_LIGHT_PRIMARY_300 = (LegacyTokensModule).DARK_PRIMARY_660_LIGHT_PRIMARY_300;
object.completeCommandOption = {backgroundColor: DARK_PRIMARY_660_LIGHT_PRIMARY_300};
const env0_11 = Reflect.apply(createStyles, value, [object]);
(FileImportTrackerModule).fileFinishedImporting('modules/application_commands/native/ApplicationCommandBar.tsx');
exports.default = _default_91009;
function ApplicationCommandOptionItem(a0) { // fn#91004, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:2157, offset: 0x0204fa0c, size: 501 bytes, params: 2, frame: 27
const option = a0.option;
const optionState = a0.optionState;
const value = Object.create(null);
value.option = 0;
value.optionState = 0;
const value2 = copyDataProperties({}, a0, value, undefined);
const value4 = undefined;
const styles = useStyles();
const isActive = optionState == null ? value4 : optionState.isActive;
let r9 = isActive != null && isActive;
const PressableOpacity = (PressablesModule).PressableOpacity;
const object = {};
const intl = (require(1244) /* metro dependency 1244: indexNative */).intl;
object.accessibilityLabel = intl.formatToPlainString((require(1244) /* metro dependency 1244: indexNative */).t.evoEHc,
{optionName: option.displayName});
object.accessibilityRole = 'button';
object.disabled = r9;
const value6 = !r9;
object.style = [styles.applicationCommandOption, r9 && styles.activeCommandOption,
(r9 ? value6 : optionState == null || optionState.lastValidationResult == null ? value4 : optionState.lastValidationResult.success) && styles.completeCommandOption];
copyDataProperties(object, value2, value);
const LegacyText = (NativeModule).LegacyText;
const items2 = [styles.applicationCommandOptionText];
items2[1] = r9 && styles.activeCommandOptionText;
items2[2] = (r9 ? value6 : optionState == null || optionState.lastValidationResult == null ? value4 : optionState.lastValidationResult.success) && styles.completeCommandOptionText;
r9 = (r9 ? value6 : (optionState == null || optionState.lastValidationResult == null ? value4 : optionState.lastValidationResult.success) === false) && styles.errorCommandOptionText;
items2[3] = r9;
return (
<PressableOpacity {...object}>
<LegacyText style={items2} numberOfLines={1}>
{option.displayName}
</LegacyText>
</PressableOpacity>
);
}
function ApplicationCommandOptionDescription({command, option, optionState}) { // fn#91005, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:2945, offset: 0x0204fc01, size: 675 bytes, params: 2, frame: 31
var r8;
var value;
const styles = useStyles();
const value3 = (UsePrevious)(option);
let useState = ReactModule.useState;
const value4 = Reflect.apply(useState, ReactModule, [undefined]);
const binding2 = env0_3;
const value5 = binding2(value4, 2);
const property = value5[0];
var env0_3 = value5[1];
useState = ReactModule.useState;
const value6 = binding2(Reflect.apply(useState, ReactModule, [0]), 2);
const property2 = value6[0];
const env0_5 = value6[1];
useState = ReactModule.useState;
const value7 = binding2(Reflect.apply(useState, ReactModule, [0]), 2);
const property3 = value7[0];
const env0_6 = value7[1];
ReactModule.useEffect(_fun91006, [value3, option, property2,
(UsePrevious)(property2)]);
const value9 = ReactModule.useCallback(_fun91007, [property]);
const onLayout_910082 = onLayout_91008;
const r5 = property === 1 && property3 === property2;
const r6 = r5 ? 'text' : 'button';
const PressableOpacity = (PressablesModule).PressableOpacity;
const view = (
<View style={styles.applicationDescriptionContainer}>
{
(optionState == null || optionState.lastValidationResult == null ? undefined : optionState.lastValidationResult.error) != null
? ((Text) => <Text lineClamp={property} onLayout={onLayout_910082} variant="text-sm/medium" color="text-feedback-critical">{optionState.lastValidationResult.error}</Text>)((require(4573) /* metro dependency 4573: Text */).Text)
: ((Text) => <Text lineClamp={property} onLayout={onLayout_910082} variant="text-sm/medium" color="mobile-text-heading-primary">{option != null ? option.displayDescription : command.displayDescription}</Text>)((require(4573) /* metro dependency 4573: Text */).Text)
}
</View>
);
if (property3 === property2) {
r8 = null;
} else {
value = importDefault(11870) /* metro dependency 11870: DescriptionEllipsis */;
value = ((Component) => <Component style={styles.descriptionEllipsis} dotStyle={styles.descriptionEllipsisDots} />)(value);
r8 = value;
}
return (
<PressableOpacity
accessibilityRole={r6}
disabled={r5}
onPress={value9}
>
<View style={styles.optionDescriptionContainer}>
{view}
{r8}
</View>
</PressableOpacity>
);
function _fun91006() { // fn#91006, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:3159, offset: 0x0204fea4, size: 90 bytes, params: 1, frame: 12
if (env0_1 !== option) {
env0_5(0);
env0_6(0);
env0_3(undefined);
} else if (ReactModule > 0 && env0_7 === 0) {
env0_3(1);
}
}
function _fun91007() { // fn#91007, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:3243, offset: 0x0204fefe, size: 29 bytes, params: 1, frame: 11
const binding = env0_3;
const value = 1;
binding(value !== env0_2 ? value : undefined);
}
function ApplicationCommandOptionDescriptionOnLayout({nativeEvent}) { // fn#91008, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:3293, owner: ApplicationCommandOptionDescription.onLayout, offset: 0x0204ff1b, size: 86 bytes, params: 2, frame: 13
const height = nativeEvent.layout.height;
const Math = global.Math;
const value = Math.trunc(height);
if (env0_2 === undefined || value > ReactModule) {
env0_5(value);
}
env0_6(value);
}
}
function _default_91009({command, section, guildId, currentOption, optionStates, onPressOption}) { // fn#91009, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:4105, offset: 0x0204ff71, size: 1077 bytes, params: 2, frame: 36
var r7;
var jsxRuntimeEnv0_9Binding;
var items3;
var intl;
const currentOption2 = currentOption;
const optionStates2 = optionStates;
const styles = useStyles();
const binding = optionStates2;
const value4 = binding.useRef(null);
const env0_8 = binding.useRef({});
let useState = binding.useState;
const value5 = Reflect.apply(useState, binding, [false]);
const binding2 = currentOption2;
const value6 = binding2(value5, 2);
const property = value6[0];
const env0_9 = value6[1];
useState = binding.useState;
const value7 = binding2(Reflect.apply(useState, binding, [false]), 2);
const property2 = value7[0];
const env0_10 = value7[1];
useState = binding.useState;
const value8 = binding2(Reflect.apply(useState, binding, []), 2);
const property3 = value8[0];
const env0_12 = value8[1];
binding.useEffect(_fun91010, [command]);
binding.useEffect(_fun91012, [currentOption]);
binding.useEffect(_fun91013, [property3, styles]);
const value9 = binding.useMemo(_fun91015, [section,
(FluxModule).useStateFromStores([GuildMemberStore], _fun91014)]);
const env0_14 = binding.useCallback(_fun91016, []);
const r12 = currentOption?.name != null ? optionStates[currentOption?.name] : undefined;
const items2 = [
value9 != null && ((Component) => <Component style={styles.applicationIcon} source={value9} />)(importDefault(5475) /* metro dependency 5475: FastImage */),
];
const Text = (TextModule).Text;
items2[1] = (
<Text
style={styles.applicationName}
lineClamp={1}
variant="text-sm/semibold"
color="mobile-text-heading-primary"
>
{'/ ' + command.displayName}
</Text>
);
items2[2] = command.options?.map(_fun91017);
if (property) {
jsxRuntimeEnv0_9Binding = jsxRuntimeEnv0_9;
items3 = [
<View
style={[styles.applicationOptionalOptionsDivider,
!property2 && styles.applicationOptionalOptionsDividerWithNoRequired]}
/>,
];
var textProps = {'style': null, 'lineClamp': 1, 'variant': 'eyebrow', 'color': 'text-muted',
style: styles.applicationOptionalOptionsIndicator};
intl = (require(1244) /* metro dependency 1244: indexNative */).intl;
items3[1] = (
<Text {...textProps}>
{intl.string((require(1244) /* metro dependency 1244: indexNative */).t.U19GM3)}
</Text>
);
items3[2] = command.options?.map(_fun91020);
r7 = (
<>
{items3}
</>
);
} else {
r7 = null;
}
items2[3] = r7;
const items4 = [
<ScrollView
ref={value4}
contentContainerStyle={styles.applicationTopWrapperScrollView}
keyboardShouldPersistTaps="always"
showsHorizontalScrollIndicator={false}
horizontal
>
{items2}
</ScrollView>,
];
const FormDivider = (NativeModule2).FormDivider;
items4[1] = <FormDivider style={styles.applicationDescriptionDivider} />;
items4[2] = (
<ApplicationCommandOptionDescription
command={command}
option={currentOption}
optionState={r12}
/>
);
items4[3] = <FormDivider style={styles.applicationDescriptionDivider} />;
return (
<View style={styles.applicationCommandBar}>
{items4}
</View>
);
function _fun91010() { // fn#91010, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:4365, offset: 0x020503a6, size: 77 bytes, params: 1, frame: 13
const env0_0 = false;
const env0_1 = false;
const options = command.options;
if (options != null) {
options.forEach(_fun91011);
}
env0_9(env0_0);
env0_10(env0_1);
function _fun91011({required}) { // fn#91011, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:4418, offset: 0x020503f3, size: 35 bytes, params: 2, frame: 2
if (required !== true) {
}
}
}
function _fun91012() { // fn#91012, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:4481, offset: 0x02050416, size: 40 bytes, params: 1, frame: 13
const binding = env0_12;
const currentOptionBinding = currentOption;
const value2 = undefined;
binding(currentOptionBinding == null ? value2 : currentOption.name);
return value2;
}
function _fun91013() { // fn#91013, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:4531, offset: 0x0205043e, size: 104 bytes, params: 1, frame: 13
var current;
const value2 = null;
const r4 = value2 != env0_11 ? env0_8.current[env0_11] : value2;
if (value2 != r4) {
current = env0_7.current;
if (value2 != current) {
current.scrollTo({x: r4.x - styles.applicationTopWrapperScrollView.paddingHorizontal, animated: true});
}
}
}
function _fun91014() { // fn#91014, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:4734, offset: 0x020504a6, size: 79 bytes, params: 1, frame: 13
var value3;
var guildMemberStoreBinding;
if (guildId != null) {
if (section?.botId != null) {
value3 = environment.__proto__;
guildMemberStoreBinding = GuildMemberStore;
return guildMemberStoreBinding.getMember(guildId, section.botId);
}
}
}
function _fun91015() { // fn#91015, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:4828, offset: 0x020504f5, size: 50 bytes, params: 1, frame: 13
const value = environment.__proto__;
return (ApplicationCommandUtilsModule).getApplicationCommandsIconSource(section,
member);
}
function _fun91016({nativeEvent}, {name}) { // fn#91016, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:4904, offset: 0x02050527, size: 75 bytes, params: 3, frame: 6
const binding = env0_8;
const current = binding.current;
current[name] = {x: nativeEvent.layout.x, width: nativeEvent.layout.width};
binding.current = current;
}
function _fun91017(a0) { // fn#91017, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:5518, offset: 0x02050572, size: 98 bytes, params: 2, frame: 18
var environment;
var r0;
var object;
var optionStatesBinding;
var name;
const env0_0 = a0;
const required = a0.required;
let value = null;
if (required) {
value = environment.__proto__;
object = {option: a0, onPress: onPress_91018};
optionStatesBinding = optionStates;
name = a0.name;
object.optionState = optionStatesBinding[name];
object.onLayout = onLayout_91019;
name = a0.name;
value = <ApplicationCommandOptionItem {...object} key={name} />;
r0 = value;
} else {
r0 = value;
}
return r0;
function onPress_91018() { // fn#91018, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:5581, offset: 0x020505d4, size: 38 bytes, params: 1, frame: 12
const value = environment.__proto__;
return onPressOption?.(env0_0);
}
function onLayout_91019(a0) { // fn#91019, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:5636, offset: 0x020505fa, size: 27 bytes, params: 2, frame: 13
return env1_14(a0, env0_0);
}
}
function _fun91020(a0) { // fn#91020, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:5977, offset: 0x02050615, size: 98 bytes, params: 2, frame: 18
var environment;
var r0;
var object;
var optionStatesBinding;
var name;
const env0_0 = a0;
const required = a0.required;
let value = null;
if (required) {
r0 = value;
} else {
value = environment.__proto__;
object = {option: a0, onPress: onPress_91021};
optionStatesBinding = optionStates;
name = a0.name;
object.optionState = optionStatesBinding[name];
object.onLayout = onLayout_91022;
name = a0.name;
value = <ApplicationCommandOptionItem {...object} key={name} />;
r0 = value;
}
return r0;
function onPress_91021() { // fn#91021, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:6045, offset: 0x01bda28e, size: 23 bytes, params: 1, frame: 11
return onPressOption(env0_0);
}
function onLayout_91022(a0) { // fn#91022, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12055:6085, offset: 0x020505fa, size: 27 bytes, params: 2, frame: 13
return env1_14(a0, env0_0);
}
}
}
}
global.__d(_fun91003, 11869, [57, 31, 27, 1945, 33, 4501, 697, 6235, 5278, 1244, 1305, 566, 11752, 5475, 4573, 7972,
6266, 11870,
2]) /* metro module 11869, dependencies: [57, 31, 27, 1945, 33, 4501, 697, 6235, 5278, 1244, 1305, 566, 11752, 5475, 4573, 7972, 6266, 11870, 2] */;