/* Metro module 10252; source: design/void/CutoutableAvatarImage/native/CutoutableAvatarImage.tsx; dependencies: [31, 27, 10253, 33, 3, 1423, 10254, 4017, 7599, 4577, 5475, 10255, 491, 7744, 628, 2] */ import Logger from '../../../../modules/debug/Logger.tsx'; /* Metro dependency 3 */ import ReanimatedRexport from '../../../../modules/reanimated/ReanimatedRexport.tsx'; /* Metro dependency 4017 */ import FastImage from '../../../../components_native/common/FastImage.tsx'; /* Metro dependency 5475 */ import ClipView from '../../../components/Icon/native/ClipView.tsx'; /* Metro dependency 7599 */ import defaultImport22 from '../../../../by-id/module-07744.js'; /* Metro dependency 7744 */ import GetReactNativeSVGImageSource from '../../../../modules/svg/native/getReactNativeSVGImageSource.tsx'; /* Metro dependency 10255 */ 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 Module00491Module from '../../../../by-id/module-00491.js'; /* Metro dependency 491 */ import * as ReanimatedRexportModule from '../../../../modules/reanimated/ReanimatedRexport.tsx'; /* Metro dependency 4017 */ import * as ClipViewModule from '../../../components/Icon/native/ClipView.tsx'; /* Metro dependency 7599 */ import * as ChannelAnimationConstantsModule from '../../../../modules/main_tabs_v2/native/shared_components/guild_channels/ChannelAnimationConstants.tsx'; /* Metro dependency 10253 */ function _fun79619(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#79619, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10438:6, offset: 0x01e5a4ad, size: 2022 bytes, params: 8, frame: 26 const env0_0 = require; let Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); let value = ReactModule; const value6 = new (Logger)('UIKit - AvatarImage'); object = {XXSMALL: 'xxsmall', XSMALL: 'xsmall', SMALL: 'small', NORMAL: 'normal', LARGE: 'large', XLARGE: 'xlarge', XLARGE_72: 'xlarge72', XXLARGE: 'xxlarge', PROFILE: 'profile', REFRESH_MEDIUM_32: 'refreshMedium32', XXSMALL_10: 'xsmall10', XSMALL_20: 'xsmall20', SIZE_16: 'size16', LARGE_48: 'large48', EDIT_AVATAR_DECORATION: 'editAvatarDecoration', GIFT_START: 'giftStart', GIFT_SUCCESS: 'giftSuccess', YOUBAR_60: 'youBar60', TABS_22: 'tabs22'}; Object = global.Object; const freeze = Object.freeze; let XXSMALL_10 = object.XXSMALL_10; let SIZE_16 = object.SIZE_16; let XXSMALL = object.XXSMALL; let XSMALL_20 = object.XSMALL_20; let XSMALL = object.XSMALL; let SMALL = object.SMALL; let NORMAL = object.NORMAL; let LARGE_48 = object.LARGE_48; let LARGE = object.LARGE; let XLARGE = object.XLARGE; let XLARGE_72 = object.XLARGE_72; let XXLARGE = object.XXLARGE; let PROFILE = object.PROFILE; let EDIT_AVATAR_DECORATION = object.EDIT_AVATAR_DECORATION; let GIFT_START = object.GIFT_START; let GIFT_SUCCESS = object.GIFT_SUCCESS; let REFRESH_MEDIUM_32 = object.REFRESH_MEDIUM_32; let YOUBAR_60 = object.YOUBAR_60; let TABS_22 = object.TABS_22; const value8 = Reflect.apply(freeze, Object, [{[XXSMALL_10]: 10, [SIZE_16]: 16, [XXSMALL]: 18, [XSMALL_20]: 20, [XSMALL]: 24, [SMALL]: 30, [NORMAL]: 40, [LARGE_48]: 48, [LARGE]: 50, [XLARGE]: 64, [XLARGE_72]: 72, [XXLARGE]: 80, [PROFILE]: 128, [EDIT_AVATAR_DECORATION]: 144, [GIFT_START]: 184, [GIFT_SUCCESS]: 236, [REFRESH_MEDIUM_32]: 32, [YOUBAR_60]: 60, [TABS_22]: 22}]); const object3 = {image: {'width': '100%', 'height': '100%'}}; const object4 = {}; XXSMALL = object.XXSMALL; object4.width = value8[XXSMALL]; XXSMALL = object.XXSMALL; object4.height = value8[XXSMALL]; XXSMALL = object.XXSMALL; object4.borderRadius = value8[XXSMALL] / 2; object3.xxsmall = object4; const object5 = {}; XXSMALL_10 = object.XXSMALL_10; object5.width = value8[XXSMALL_10]; XXSMALL_10 = object.XXSMALL_10; object5.height = value8[XXSMALL_10]; XXSMALL_10 = object.XXSMALL_10; object5.borderRadius = value8[XXSMALL_10] / 2; object3.xsmall10 = object5; const object6 = {}; XSMALL_20 = object.XSMALL_20; object6.width = value8[XSMALL_20]; XSMALL_20 = object.XSMALL_20; object6.height = value8[XSMALL_20]; XSMALL_20 = object.XSMALL_20; object6.borderRadius = value8[XSMALL_20] / 2; object3.xsmall20 = object6; const object7 = {}; XSMALL = object.XSMALL; object7.width = value8[XSMALL]; XSMALL = object.XSMALL; object7.height = value8[XSMALL]; XSMALL = object.XSMALL; object7.borderRadius = value8[XSMALL] / 2; object3.xsmall = object7; const object8 = {}; SMALL = object.SMALL; object8.width = value8[SMALL]; SMALL = object.SMALL; object8.height = value8[SMALL]; SMALL = object.SMALL; object8.borderRadius = value8[SMALL] / 2; object3.small = object8; const object9 = {}; NORMAL = object.NORMAL; object9.width = value8[NORMAL]; NORMAL = object.NORMAL; object9.height = value8[NORMAL]; NORMAL = object.NORMAL; object9.borderRadius = value8[NORMAL] / 2; object3.normal = object9; const object10 = {}; LARGE = object.LARGE; object10.width = value8[LARGE]; LARGE = object.LARGE; object10.height = value8[LARGE]; LARGE = object.LARGE; object10.borderRadius = value8[LARGE] / 2; object3.large = object10; const object11 = {}; XLARGE = object.XLARGE; object11.width = value8[XLARGE]; XLARGE = object.XLARGE; object11.height = value8[XLARGE]; XLARGE = object.XLARGE; object11.borderRadius = value8[XLARGE] / 2; object3.xlarge = object11; const object12 = {}; XLARGE_72 = object.XLARGE_72; object12.width = value8[XLARGE_72]; XLARGE_72 = object.XLARGE_72; object12.height = value8[XLARGE_72]; XLARGE_72 = object.XLARGE_72; object12.borderRadius = value8[XLARGE_72] / 2; object3.xlarge72 = object12; const object13 = {}; XXLARGE = object.XXLARGE; object13.width = value8[XXLARGE]; XXLARGE = object.XXLARGE; object13.height = value8[XXLARGE]; XXLARGE = object.XXLARGE; object13.borderRadius = value8[XXLARGE] / 2; object3.xxlarge = object13; const object14 = {}; REFRESH_MEDIUM_32 = object.REFRESH_MEDIUM_32; object14.width = value8[REFRESH_MEDIUM_32]; REFRESH_MEDIUM_32 = object.REFRESH_MEDIUM_32; object14.height = value8[REFRESH_MEDIUM_32]; REFRESH_MEDIUM_32 = object.REFRESH_MEDIUM_32; object14.borderRadius = value8[REFRESH_MEDIUM_32] / 2; object3.refreshMedium32 = object14; const object15 = {}; PROFILE = object.PROFILE; object15.width = value8[PROFILE]; PROFILE = object.PROFILE; object15.height = value8[PROFILE]; PROFILE = object.PROFILE; object15.borderRadius = value8[PROFILE] / 2; object3.profile = object15; const object16 = {}; SIZE_16 = object.SIZE_16; object16.width = value8[SIZE_16]; SIZE_16 = object.SIZE_16; object16.height = value8[SIZE_16]; SIZE_16 = object.SIZE_16; object16.borderRadius = value8[SIZE_16] / 2; object3.size16 = object16; const object17 = {}; LARGE_48 = object.LARGE_48; object17.width = value8[LARGE_48]; LARGE_48 = object.LARGE_48; object17.height = value8[LARGE_48]; LARGE_48 = object.LARGE_48; object17.borderRadius = value8[LARGE_48] / 2; object3.large48 = object17; const object18 = {}; EDIT_AVATAR_DECORATION = object.EDIT_AVATAR_DECORATION; object18.width = value8[EDIT_AVATAR_DECORATION]; EDIT_AVATAR_DECORATION = object.EDIT_AVATAR_DECORATION; object18.height = value8[EDIT_AVATAR_DECORATION]; EDIT_AVATAR_DECORATION = object.EDIT_AVATAR_DECORATION; object18.borderRadius = value8[EDIT_AVATAR_DECORATION] / 2; object3.editAvatarDecoration = object18; const object19 = {}; GIFT_START = object.GIFT_START; object19.width = value8[GIFT_START]; GIFT_START = object.GIFT_START; object19.height = value8[GIFT_START]; GIFT_START = object.GIFT_START; object19.borderRadius = value8[GIFT_START] / 2; object3.giftStart = object19; const object20 = {}; GIFT_SUCCESS = object.GIFT_SUCCESS; object20.width = value8[GIFT_SUCCESS]; GIFT_SUCCESS = object.GIFT_SUCCESS; object20.height = value8[GIFT_SUCCESS]; GIFT_SUCCESS = object.GIFT_SUCCESS; object20.borderRadius = value8[GIFT_SUCCESS] / 2; object3.giftSuccess = object20; const object21 = {}; YOUBAR_60 = object.YOUBAR_60; object21.width = value8[YOUBAR_60]; YOUBAR_60 = object.YOUBAR_60; object21.height = value8[YOUBAR_60]; YOUBAR_60 = object.YOUBAR_60; object21.borderRadius = value8[YOUBAR_60] / 2; object3.youBar60 = object21; const object22 = {}; TABS_22 = object.TABS_22; object22.width = value8[TABS_22]; TABS_22 = object.TABS_22; object22.height = value8[TABS_22]; TABS_22 = object.TABS_22; object22.borderRadius = value8[TABS_22] / 2; object3.tabs22 = object22; const object23 = {RIGHT: 0}; object23[0] = 'RIGHT'; object23.BOTTOM_RIGHT = 1; object23[1] = 'BOTTOM_RIGHT'; object23.BOTTOM_LEFT = 2; object23[2] = 'BOTTOM_LEFT'; const object24 = {RECTANGULAR: 0}; object24[0] = 'RECTANGULAR'; object24.CIRCULAR = 1; object24[1] = 'CIRCULAR'; const env0_13 = (ReanimatedRexport).createAnimatedComponent(ClipView); const env0_14 = {code: "function CutoutableAvatarImageTsx1(){const{animate,cutout,CutoutShape,withSpring,CHANNEL_SPRING_CONFIG}=this.__closure;const animated=!animate?'animate-never':undefined;const animatedCutout=cutout.shape===CutoutShape.RoundedRect?{shape:CutoutShape.RoundedRect,x:withSpring(cutout.x,CHANNEL_SPRING_CONFIG,animated),y:withSpring(cutout.y,CHANNEL_SPRING_CONFIG,animated),width:withSpring(cutout.width,CHANNEL_SPRING_CONFIG,animated),height:withSpring(cutout.height,CHANNEL_SPRING_CONFIG,animated),cornerRadius:withSpring(cutout.cornerRadius,CHANNEL_SPRING_CONFIG,animated)}:{shape:CutoutShape.Circle,x:withSpring(cutout.x,CHANNEL_SPRING_CONFIG,animated),y:withSpring(cutout.y,CHANNEL_SPRING_CONFIG,animated),size:withSpring(cutout.size,CHANNEL_SPRING_CONFIG,animated)};return{cutouts:[animatedCutout]};}"}; value = value.memo(_fun79623, customShallowEqual); (FileImportTrackerModule).fileFinishedImporting('design/void/CutoutableAvatarImage/native/CutoutableAvatarImage.tsx'); exports.default = value; exports.AvatarSizes = object; exports.AVATAR_SIZE_MAP = value8; exports.styles = object3; exports.CutoutDirection = object23; exports.CutoutType = object24; function NativeCutoutAvatarImage({animate, cutout, source, style}) { // fn#79620, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10438:3747, offset: 0x01e5ac93, size: 282 bytes, params: 2, frame: 21 animate = !(animate === undefined) && animate; const useAnimatedProps = ReanimatedRexportModule.useAnimatedProps; const NativeCutoutAvatarImageH2 = NativeCutoutAvatarImageH; const object = {animate: animate, cutout: cutout}; const CutoutShape = (ClipViewModule).CutoutShape; object.CutoutShape = CutoutShape; object.withSpring = (require(4577) /* metro dependency 4577: spring */).withSpring; object.CHANNEL_SPRING_CONFIG = CHANNEL_SPRING_CONFIG; NativeCutoutAvatarImageH2.__closure = object; NativeCutoutAvatarImageH2.__workletHash = 11368409055559; NativeCutoutAvatarImageH2.__initData = env0_14; return ((Component) => {((Component) => )(FastImage)})(env0_13); function NativeCutoutAvatarImageH() { // fn#79621, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10438:3859, owner: NativeCutoutAvatarImage.h, offset: 0x01e5adad, size: 457 bytes, params: 1, frame: 25 var r2; var object2; var moduleValue; var withSpring; var object3; var moduleValue2; var value; const r7 = animate ? undefined : 'animate-never'; const shape = cutout.shape; const CutoutShape = (ClipViewModule).CutoutShape; const RoundedRect = CutoutShape.RoundedRect; if (shape === RoundedRect) { object3 = {}; object3.shape = CutoutShape.RoundedRect; moduleValue2 = require(4577) /* metro dependency 4577: spring */; withSpring = moduleValue2.withSpring; cutoutBinding = cutout; object3.x = Reflect.apply(withSpring, moduleValue2, [cutoutBinding.x, CHANNEL_SPRING_CONFIG, r7]); value = require(4577) /* metro dependency 4577: spring */; object3.y = value.withSpring(cutoutBinding.y, CHANNEL_SPRING_CONFIG, r7); value = require(4577) /* metro dependency 4577: spring */; object3.width = value.withSpring(cutoutBinding.width, CHANNEL_SPRING_CONFIG, r7); value = require(4577) /* metro dependency 4577: spring */; object3.height = value.withSpring(cutoutBinding.height, CHANNEL_SPRING_CONFIG, r7); value = require(4577) /* metro dependency 4577: spring */; object3.cornerRadius = value.withSpring(cutoutBinding.cornerRadius, CHANNEL_SPRING_CONFIG, r7); r2 = object3; } else { object2 = {}; object2.shape = CutoutShape.Circle; moduleValue = require(4577) /* metro dependency 4577: spring */; withSpring = moduleValue.withSpring; cutoutBinding = cutout; object2.x = Reflect.apply(withSpring, moduleValue, [cutoutBinding.x, CHANNEL_SPRING_CONFIG, r7]); value = require(4577) /* metro dependency 4577: spring */; object2.y = value.withSpring(cutoutBinding.y, CHANNEL_SPRING_CONFIG, r7); value = require(4577) /* metro dependency 4577: spring */; object2.size = value.withSpring(cutoutBinding.size, CHANNEL_SPRING_CONFIG, r7); r2 = object2; } return {cutouts: [r2]}; } } function CutoutAvatarImage({cutout, size, source, style}) { // fn#79622, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10438:4604, offset: 0x01e5af76, size: 1183 bytes, params: 2, frame: 39 var r28; var r9; var r8; var value7; var value9; const Rect = (require(7744) /* metro dependency 7744 */).Rect; var color; let value = size / 2; const r26 = cutout.radius ?? value; const r2 = cutout.inset ?? 0; const r11 = cutout.imageType ?? env0_12.CIRCULAR; const value5 = size - r2; let CIRCULAR = env0_12.CIRCULAR; let r27 = r11 !== CIRCULAR ? size : value; const direction = cutout.direction; const BOTTOM_RIGHT = env0_11.BOTTOM_RIGHT; if (BOTTOM_RIGHT === direction) { value9 = size - r26 - r2; r27 = size - r26 - r2; r28 = value9; } else if (env0_11.BOTTOM_LEFT !== direction) { r28 = value5; } else { value7 = r26 + r2; r27 = size - r26 - r2; r28 = value7; } const value11 = (Module00491Module).v4(); const tintColor = StyleSheet.flatten(style).tintColor; if (source == null) { const Image = (require(7744) /* metro dependency 7744 */).Image; r9 = ( ); } else if (tintColor != null) { const ForeignObject = (require(7744) /* metro dependency 7744 */).ForeignObject; r9 = ( {((Component) => )(importDefault(5475) /* metro dependency 5475: FastImage */)} ); } else { const Image2 = (require(7744) /* metro dependency 7744 */).Image; r9 = ( ); } const defaultImport2 = defaultImport22; const Defs = (require(7744) /* metro dependency 7744 */).Defs; const Mask = (require(7744) /* metro dependency 7744 */).Mask; CIRCULAR = env0_12.CIRCULAR; const r23 = ( r11 === CIRCULAR ? ( ) : ( ) ); var Circle = (require(7744) /* metro dependency 7744 */).Circle; const items2 = [ {r23} , r9, ]; let border = cutout.border; if (border != null) { if (r11 === env0_12.CIRCULAR) { border = cutout.border; color = border.color; border = cutout.border; value = ( ); r9 = value; } else { border = cutout.border; color = border.color; border = cutout.border; r9 = ( ); } r8 = r9; } else { r8 = null; } items2[2] = r8; return ( {((Component) => {items2})(defaultImport2)} ); } function _fun79623(a0) { // fn#79623, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10438:5839, offset: 0x01e5b415, size: 632 bytes, params: 2, frame: 28 var r8; var r12; var r1; var defaultImport; var makeSource; var defaultImport2; var nativeCutouts; const animate = a0.animate; const cutout = a0.cutout; let size = a0.size; const style = a0.style; let value = typeof size === 'number'; const r5 = value ? size : env0_9[size]; const r7 = value ? [{width: size, height: size}, style] : [env0_10[size], style]; const object = {}; copyDataProperties(object, a0, undefined); object['animate'] = animate === true && cutout == null; object['size'] = r5; const source = object.source; let user = object.user; const channel = object.channel; const guildId = object.guildId; const animate2 = object.animate; size = object.size; if (source != null) { r8 = typeof source !== 'function' ? source : source(animate2); } else if (user != null) { r8 = user.getAvatarSource(guildId, animate2, size); } else if (channel != null) { value = require(10254) /* metro dependency 10254: getChannelIcon */; value = value.getChannelIconURL(channel, size); r8 = typeof value === 'number' || value == null ? value : {uri: value}; } else { env0_8.warn('No image found from provided data'); r8 = undefined; } if (r8 == null) { return null; } user = object.user; const disablePlaceholder = object.disablePlaceholder; value = undefined; if (user == null) { r12 = value; } else if (disablePlaceholder) { r12 = value; } else { defaultImport = importDefault(1423) /* metro dependency 1423: AvatarUtils */; makeSource = defaultImport.makeSource; defaultImport2 = importDefault(1423) /* metro dependency 1423: AvatarUtils */; r12 = Reflect.apply(makeSource, defaultImport, [defaultImport2.getDefaultAvatarURL(user.id, user.discriminator)]); } if (cutout != null) { nativeCutouts = cutout.nativeCutouts; r1 = ( (nativeCutouts == null ? value : nativeCutouts.length) === 1 ? ( ) : ( ) ); } else { value = ((Component) => )(importDefault(5475) /* metro dependency 5475: FastImage */); r1 = value; } return r1; } function customShallowEqual(a0, a1) { // fn#79624, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10438:6829, offset: 0x01e5b68d, size: 280 bytes, params: 3, frame: 20 var r0; var r1; var source; var source2; var value2; var value3; var Array; var value4; var value5; var length; var length2; var value6; var defaultImport2; var property; var value7; let value = environment; if ((importDefault(628) /* metro dependency 628: shallowEqual */)(a0, a1, ['source'])) { source = a0.source; source2 = a1.source; if (source === source2) { return true; } value2 = typeof source2; if (value2 === 'number') { reducibleJoin5: while (true) { if (typeof source === 'number') { return false; } break reducibleJoin5; } } value3 = typeof source; if (value2 !== value3) { return false; } Array = global.Array; if (Array.isArray(source2)) { Array = global.Array; reducibleJoin8: while (true) { if (Array.isArray(source)) { length = source.length; length2 = source2.length; if (length !== length2) { return false; } length = source.length; value6 = 0; if (value6 < length) { r1 = value6; reducibleLoop15: while (true) { defaultImport2 = importDefault(628) /* metro dependency 628: shallowEqual */; property = source[r1]; if (!defaultImport2(property, source2[r1])) { return false; } value7 = typeof r1 === 'bigint' ? r1 + 1n : +r1 + 1; length = source.length; if (!(value7 < length)) { return true; } r1 = value7; continue reducibleLoop15; } } return true; } break reducibleJoin8; } } value4 = value2 !== 'object'; reducibleJoin10: while (true) { if (value4) { r0 = value4; break reducibleJoin10; } value5 = value3 !== 'object'; r0 = value5; break reducibleJoin10; } reducibleJoin12: while (true) { if (r0) { break reducibleJoin12; } value = (importDefault(628) /* metro dependency 628: shallowEqual */)(source2, source); r0 = value; break reducibleJoin12; } return r0; } return false; } } global.__d(_fun79619, 10252, [31, 27, 10253, 33, 3, 1423, 10254, 4017, 7599, 4577, 5475, 10255, 491, 7744, 628, 2]) /* metro module 10252, dependencies: [31, 27, 10253, 33, 3, 1423, 10254, 4017, 7599, 4577, 5475, 10255, 491, 7744, 628, 2] */;