/* Metro module 4579; source: design/components/Button/native/BaseTextButton.native.tsx; dependencies: [57, 31, 27, 33, 4501, 697, 4017, 4580, 4577, 4581, 4582, 4583, 1357, 4573, 3875, 4081, 4585, 3862, 4587, 2] */ import Module00057 from '../../../../by-id/module-00057.js'; /* Metro dependency 57 */ import MobileVisualRefreshExperiment from '../../../../modules/themes/experiments/MobileVisualRefreshExperiment.tsx'; /* Metro dependency 1357 */ import ReanimatedRexport from '../../../../modules/reanimated/ReanimatedRexport.tsx'; /* Metro dependency 4017 */ import Icon from '../../../void/Icon/native/Icon.tsx'; /* Metro dependency 4580 */ 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 JsxRuntimeModule from '../../../../by-id/module-00033-JsxRuntime.js'; /* Metro dependency 33 */ import * as AccessibilityPreferencesContextModule from '../../../../external/discord_common/js/packages/design/components/AccessibilityPreferencesContext/AccessibilityPreferencesContext.tsx'; /* Metro dependency 3875 */ import * as ReanimatedRexportModule from '../../../../modules/reanimated/ReanimatedRexport.tsx'; /* Metro dependency 4017 */ import * as CreateStylesModule from '../../Styles/native/createStyles.tsx'; /* Metro dependency 4501 */ import * as TextModule from '../../Text/native/Text.tsx'; /* Metro dependency 4573 */ import * as SpringPresetsModule from '../../../animation/reanimated/spring/springPresets.tsx'; /* Metro dependency 4581 */ import * as ButtonHooksNativeModule from './ButtonHooks.native.tsx'; /* Metro dependency 4583 */ import * as BaseButtonNativeModule from './BaseButton.native.tsx'; /* Metro dependency 4585 */ import * as ButtonPillNativeModule from './ButtonPill.native.tsx'; /* Metro dependency 4587 */ function _fun38838(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#38838, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4757:6, offset: 0x010ccaf5, size: 643 bytes, params: 8, frame: 26 const env0_0 = require; const getHitSlop2 = getHitSlop; let Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); let value = ReactModule; ReactNativeModule.Platform; let createStyles = CreateStylesModule.createStyles; const env0_9 = Reflect.apply(createStyles, CreateStylesModule, [_fun38847]); const env0_10 = CreateStylesModule.createStyles({container: {'flexDirection': 'row', 'alignItems': 'center', 'position': 'relative'}, textCollapsed: {'position': 'absolute', 'left': 0}}); createStyles = CreateStylesModule.createStyles; const object2 = {borderWidth: 1}; object2.borderRadius = (importDefault(697) /* metro dependency 697: native */).radii.round; const BORDER_SUBTLE = (importDefault(697) /* metro dependency 697: native */).colors.BORDER_SUBTLE; object2.borderColor = BORDER_SUBTLE; object2.overflow = 'hidden'; const env0_11 = Reflect.apply(createStyles, CreateStylesModule, [{entityWrapper: object2}]); const env0_12 = (ReanimatedRexport).createAnimatedComponent(Icon); const env0_13 = value.createContext('md'); object = {code: 'function BaseTextButtonNativeTsx1({nativeEvent:nativeEvent}){const{containerWidth}=this.__closure;if(containerWidth.get()!==0)return;const{width:width}=nativeEvent.layout;containerWidth.set(width);}'}; object = {code: "function BaseTextButtonNativeTsx2(){const{containerWidth,withSpring,collapsed,SUBTLE_SPRING}=this.__closure;if(containerWidth.get()===0)return{};return{width:withSpring(collapsed.get()===1?0:containerWidth.get(),SUBTLE_SPRING,'animate-always'),opacity:withSpring(collapsed.get()===1?0:1,SUBTLE_SPRING,'animate-always')};}"}; object = {code: 'function BaseTextButtonNativeTsx3(){const{collapsed,textCollapsed,containerWidth}=this.__closure;if(collapsed.get()===0)return{};return{...textCollapsed,width:containerWidth.get()};}'}; const env0_17 = CreateStylesModule.createStyles(function(a0, a1) { if (a1 !== 0) { if (a0 === 'start') { return {offset: {marginLeft: a1}}; } if (a0 === 'end') { return {offset: {marginRight: a1}}; } } return {offset: {}}; }); object = {sm: getHitSlop2('sm'), md: getHitSlop2('md'), lg: getHitSlop2('lg')}; const getTextPlatformLineHeight = function(a0, a1) { return a0 != null ? ({sm: a0, md: a0 + 0.5, lg: a0 + 1.9})[a1] : undefined; }; value = value.forwardRef(_fun38850); Object = global.Object; value = Object.assign({}, value, {Icon: Icon}); (FileImportTrackerModule).fileFinishedImporting('design/components/Button/native/BaseTextButton.native.tsx'); exports.BaseTextButton = value; function CollapsingText({children, collapseText}) { // fn#38839, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4757:1057, offset: 0x010ccd78, size: 257 bytes, params: 2, frame: 23 const styles = useStyles(); const value2 = (ReanimatedRexportModule).useSharedValue(0); const useWorkletCallback = ReanimatedRexportModule.useWorkletCallback; const CollapsingTextO2 = CollapsingTextO; CollapsingTextO2.__closure = {containerWidth: value2}; CollapsingTextO2.__workletHash = 5541458715155; CollapsingTextO2.__initData = env0_14; const value3 = Reflect.apply(useWorkletCallback, ReanimatedRexportModule, [CollapsingTextO2, [value2]]); const value4 = useCollapsingTextContainerStyles(value2, collapseText); const value5 = useCollapsingTextStyles(value2, collapseText); const View = (ReanimatedRexport).View; const items2 = [styles.container, value4]; const View2 = (ReanimatedRexport).View; return ( {children} ); function CollapsingTextO({nativeEvent}) { // fn#38840, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4757:1183, owner: CollapsingText.o, offset: 0x010cce79, size: 60 bytes, params: 2, frame: 12 if (env0_0.get() === 0) { env0_0.set(nativeEvent.layout.width); } } function useCollapsingTextContainerStyles(a0, a1) { // fn#38841, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4757:1342, owner: CollapsingText.useCollapsingTextContainerStyles, offset: 0x010cceb5, size: 147 bytes, params: 3, frame: 18 const env0_0 = a0; const env0_1 = a1; const useAnimatedStyle = ReanimatedRexportModule.useAnimatedStyle; const useCollapsingTextContainerStylesO2 = useCollapsingTextContainerStylesO; const object = {containerWidth: a0}; object.withSpring = (require(4577) /* metro dependency 4577: spring */).withSpring; object.collapsed = a1; const SUBTLE_SPRING = (SpringPresetsModule).SUBTLE_SPRING; object.SUBTLE_SPRING = SUBTLE_SPRING; useCollapsingTextContainerStylesO2.__closure = object; useCollapsingTextContainerStylesO2.__workletHash = 493185281611; useCollapsingTextContainerStylesO2.__initData = env1_15; return Reflect.apply(useAnimatedStyle, ReanimatedRexportModule, [useCollapsingTextContainerStylesO2]); function useCollapsingTextContainerStylesO() { // fn#38842, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4757:1424, owner: CollapsingText.useCollapsingTextContainerStyles.o, offset: 0x010ccf48, size: 208 bytes, params: 1, frame: 25 var r0; var object; var value4; var moduleValue; var withSpring; var value5; var value6; const SUBTLE_SPRING = (SpringPresetsModule).SUBTLE_SPRING; const value2 = env0_0.get(); const value3 = 0; if (value3 === value2) { r0 = {}; } else { object = {}; value4 = environment.__proto__.__proto__; moduleValue = require(4577) /* metro dependency 4577: spring */; withSpring = moduleValue.withSpring; value5 = require.get(); value6 = 1; object.width = Reflect.apply(withSpring, moduleValue, [value6 === value5 ? value3 : env0_0.get(), SUBTLE_SPRING, 'animate-always']); object.opacity = (require(4577) /* metro dependency 4577: spring */).withSpring(value6 !== require.get() ? value6 : value3, SUBTLE_SPRING, 'animate-always'); r0 = object; } return r0; } } function useCollapsingTextStyles(a0, a1) { // fn#38843, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4757:1801, owner: CollapsingText.useCollapsingTextStyles, offset: 0x010cd018, size: 126 bytes, params: 3, frame: 17 const env0_0 = a0; const env0_1 = a1; const styles = useStyles(); const textCollapsed = styles.textCollapsed; const useAnimatedStyle = ReanimatedRexportModule.useAnimatedStyle; const useCollapsingTextStylesS2 = useCollapsingTextStylesS; useCollapsingTextStylesS2.__closure = {collapsed: a1, textCollapsed: textCollapsed, containerWidth: a0}; useCollapsingTextStylesS2.__workletHash = 5824483783888; useCollapsingTextStylesS2.__initData = env1_16; return Reflect.apply(useAnimatedStyle, ReanimatedRexportModule, [useCollapsingTextStylesS2]); function useCollapsingTextStylesS() { // fn#38844, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4757:1898, owner: CollapsingText.useCollapsingTextStyles.s, offset: 0x010cd096, size: 63 bytes, params: 1, frame: 12 var r0; var object; const value2 = require.get(); if (value2 === 0) { r0 = {}; } else { object = {}; copyDataProperties(object, textCollapsed, value2); object['width'] = env0_0.get(); r0 = object; } return r0; } } } function getHitSlop(a0) { // fn#38845, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4757:2889, offset: 0x010cd0d5, size: 173 bytes, params: 2, frame: 16 const LARGE_BUTTON_HEIGHT = (require(4582) /* metro dependency 4582: ButtonConstantsNative */).LARGE_BUTTON_HEIGHT; const r1 = a0 === 'sm' ? (require(4582) /* metro dependency 4582: ButtonConstantsNative */).SMALL_BUTTON_HEIGHT : a0 !== 'md' ? LARGE_BUTTON_HEIGHT : (require(4582) /* metro dependency 4582: ButtonConstantsNative */).MEDIUM_BUTTON_HEIGHT; const Math = global.Math; const max = Math.max; const MINIMUM_HIT_AREA = (require(4582) /* metro dependency 4582: ButtonConstantsNative */).MINIMUM_HIT_AREA; const value = Reflect.apply(max, Math, [(MINIMUM_HIT_AREA - r1) / 2, 0]); return {top: value, left: undefined, right: undefined, bottom: value}; } function BaseTextButtonIcon({icon, size, iconPosition, iconOpticalOffsetMargin, style}) { // fn#38846, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4757:3285, offset: 0x010cd182, size: 124 bytes, params: 2, frame: 18 const value2 = (ButtonHooksNativeModule).useIconSizeStyles(size); const styles = useStyles(iconPosition, iconOpticalOffsetMargin); return ((Component) => )(env0_12); } function _fun38847(a0, a1) { // fn#38847, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4757:208, offset: 0x010cd1fe, size: 139 bytes, params: 3, frame: 15 const object2 = {'flexShrink': 1, 'flexGrow': 0}; object2.lineHeight = getTextPlatformLineHeight(a1, a0); return {grow: {'flexGrow': 1, 'alignSelf': 'stretch'}, shrink: {flexShrink: 1}, buttonText: object2, icon: {'flexShrink': 0, 'flexGrow': 0}, iconLeft: {paddingLeft: 4}, iconRight: {paddingRight: 4}, expressiveButtonContainer: {position: 'relative'}}; } function _fun38850(a0, a1) { // fn#38850, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4757:3488, offset: 0x010cd31f, size: 1381 bytes, params: 3, frame: 51 const style = a0.style; const pillStyle = a0.pillStyle; const text = a0.text; const textElement = a0.textElement; const size = a0.size; const value = undefined; const r15 = value !== size ? size : (require(4582) /* metro dependency 4582: ButtonConstantsNative */).DEFAULT_BUTTON_SIZE; const loading = a0.loading; const icon = a0.icon; const iconPosition = a0.iconPosition; const value3 = 'start'; const r14 = value === iconPosition ? value3 : iconPosition; const iconOpticalOffsetMargin = a0.iconOpticalOffsetMargin; const value4 = 0; const r38 = value === iconOpticalOffsetMargin ? value4 : iconOpticalOffsetMargin; const grow = a0.grow; let r30 = value !== grow && grow; const shrink = a0.shrink; let r29 = value !== shrink && shrink; const collapseText = a0.collapseText; const accessibilityRole = a0.accessibilityRole; const r24 = value === accessibilityRole ? 'button' : accessibilityRole; const accessibilityLabel = a0.accessibilityLabel; const maxFontSizeMultiplier = a0.maxFontSizeMultiplier; const r37 = value !== maxFontSizeMultiplier ? maxFontSizeMultiplier : (require(4582) /* metro dependency 4582: ButtonConstantsNative */).BUTTON_DEFAULT_MAX_FONT_SIZE_MULTIPLIER; const shiny = a0.shiny; const r7 = value !== shiny && shiny; const onPressIn = a0.onPressIn; const onPressOut = a0.onPressOut; const onLayout = a0.onLayout; const value11 = (MobileVisualRefreshExperiment)('BaseTextButton'); const r5 = a0.textVariant ?? (require(4582) /* metro dependency 4582: ButtonConstantsNative */).getButtonDefaultTextVariant(r15); const TextStyleSheet = (TextModule).TextStyleSheet; const property = TextStyleSheet[r5]; const styles = useStyles(r15, property.fontSize); const property2 = env0_18[r15]; let binding = env0_4; const useContext = binding.useContext; const AccessibilityPreferencesContext = (AccessibilityPreferencesContextModule).AccessibilityPreferencesContext; const enabled = Reflect.apply(useContext, binding, [AccessibilityPreferencesContext]).reducedMotion.enabled; const enabled2 = enabled; let r0 = a0.variant ?? 'primary'; r0 = value11 && r0 === 'tertiary' ? 'secondary' : r0; const value16 = (ReanimatedRexportModule).useSharedValue(value4); const value17 = r0.startsWith('expressive'); var env0_4 = value17; binding = env0_4; const value18 = binding.useRef(null); const env0_6 = binding.useRef({'width': 0, 'height': 0}); const value20 = enabled2(binding.useState({'pressed': false, 'posx': 0, 'posy': 0}), 2); const property3 = value20[value4]; const env0_7 = value20[1]; const value21 = binding.useCallback(_fun38851, [onLayout, value17]); const value22 = binding.useCallback(_fun38852, [value17, onPressIn, enabled]); const value23 = binding.useCallback(_fun38853, [value17, onPressOut]); const value24 = (ButtonHooksNativeModule).useButtonTextColorStyles(r0); const r34 = icon == null ? {} : value3 === r14 ? styles.iconLeft : styles.iconRight; const r12 = ( icon == null ? ( ) : ( env0_4.isValidElement(icon) ? icon : ( ) ) ); const r19 = textElement ?? {text}; const BaseButton = (BaseButtonNativeModule).BaseButton; const baseButtonProps = {ref: a1, ...a0}; baseButtonProps['onPressIn'] = value22; baseButtonProps['onPressOut'] = value23; baseButtonProps['onLayout'] = value21; r30 = r30 && styles.grow; r29 = r29 && styles.shrink; baseButtonProps['style'] = [r30, r29, style, value17 && styles.expressiveButtonContainer]; baseButtonProps['pointerEvents'] = value17 ? 'box-only' : a0.pointerEvents; baseButtonProps['pressed'] = value16; baseButtonProps['accessibilityRole'] = r24; baseButtonProps['accessibilityLabel'] = accessibilityLabel ?? (require(3862) /* metro dependency 3862: native */).getNodeText(text); baseButtonProps['hitSlop'] = property2; const ButtonPill = (ButtonPillNativeModule).ButtonPill; const Provider = env0_13.Provider; const items4 = [icon != null && value3 === r14 && r12]; items4[1] = ( value === collapseText ? r19 : ( {r19} ) ); items4[2] = icon != null && r14 === 'end' && r12; return ( {items4} ); function _fun38851(a0) { // fn#38851, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4757:4519, offset: 0x010cd884, size: 80 bytes, params: 2, frame: 12 var layout; if (onLayout != null) { onLayout(a0); } if (env0_4) { layout = a0.nativeEvent.layout; env0_6.current = {width: layout.width, height: layout.height}; } } function _fun38852(a0) { // fn#38852, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4757:4649, offset: 0x010cd8d4, size: 216 bytes, params: 2, frame: 17 var nativeEvent; var locationX; var locationY; var current; var value; if (onPressIn != null) { onPressIn(a0); } if (env0_4) { if (enabled) { current = ReactNativeModule.Text.current; if (current != null) { current.play(); } } else { nativeEvent = a0.nativeEvent; locationX = nativeEvent.locationX; locationY = nativeEvent.locationY; current = env0_6.current; env0_7({pressed: true, posx: locationX - current.width / 2, posy: locationY - current.height / 2}); } value = environment.__proto__; value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((require(4081) /* metro dependency 4081: HapticUtilsNative */).HapticFeedbackTypes.IMPACT_HEAVY); } } function _fun38853(a0) { // fn#38853, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4757:4946, offset: 0x010cd9ac, size: 111 bytes, params: 2, frame: 14 var environment; var value; if (onPressOut != null) { onPressOut(a0); } if (env0_4) { env0_7(function(a0) { var r2; var object = {}; copyDataProperties(object, a0, r2); object['pressed'] = false; return object; }); value = environment.__proto__; value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((require(4081) /* metro dependency 4081: HapticUtilsNative */).HapticFeedbackTypes.IMPACT_MEDIUM); } } } function Icon({source, variant, disableColor}) { // fn#38855, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4757:6038, offset: 0x010cda34, size: 168 bytes, params: 2, frame: 19 variant = variant === undefined ? 'icon' : variant; disableColor = disableColor === undefined || disableColor; const value2 = env0_4.useContext(env0_13); const styles = useStyles(); const env0_123 = ((Component) => )(env0_12); return ( variant !== 'entity' ? env0_123 : ( {env0_123} ) ); } } global.__d(_fun38838, 4579, [57, 31, 27, 33, 4501, 697, 4017, 4580, 4577, 4581, 4582, 4583, 1357, 4573, 3875, 4081, 4585, 3862, 4587, 2]) /* metro module 4579, dependencies: [57, 31, 27, 33, 4501, 697, 4017, 4580, 4577, 4581, 4582, 4583, 1357, 4573, 3875, 4081, 4585, 3862, 4587, 2] */;