/* 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] */ 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 var object2; const env0_0 = require; let Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); let value = importAll(31) /* metro dependency 31 */; const value2 = require(27) /* metro dependency 27 */; const env0_3 = value2.StyleSheet; const env0_4 = value2.View; const env0_5 = (require(10253) /* metro dependency 10253: ChannelAnimationConstants */).CHANNEL_SPRING_CONFIG; const value3 = require(33) /* metro dependency 33 */; const env0_6 = value3.jsx; const env0_7 = value3.jsxs; const value6 = new (importDefault(3) /* metro dependency 3: Logger */)('UIKit - AvatarImage'); object2 = {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 = object2.XXSMALL_10; let SIZE_16 = object2.SIZE_16; let XXSMALL = object2.XXSMALL; let XSMALL_20 = object2.XSMALL_20; let XSMALL = object2.XSMALL; let SMALL = object2.SMALL; let NORMAL = object2.NORMAL; let LARGE_48 = object2.LARGE_48; let LARGE = object2.LARGE; let XLARGE = object2.XLARGE; let XLARGE_72 = object2.XLARGE_72; let XXLARGE = object2.XXLARGE; let PROFILE = object2.PROFILE; let EDIT_AVATAR_DECORATION = object2.EDIT_AVATAR_DECORATION; let GIFT_START = object2.GIFT_START; let GIFT_SUCCESS = object2.GIFT_SUCCESS; let REFRESH_MEDIUM_32 = object2.REFRESH_MEDIUM_32; let YOUBAR_60 = object2.YOUBAR_60; let TABS_22 = object2.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 object25 = {image: {'width': '100%', 'height': '100%'}}; const object26 = {}; XXSMALL = object2.XXSMALL; object26.width = value8[XXSMALL]; XXSMALL = object2.XXSMALL; object26.height = value8[XXSMALL]; XXSMALL = object2.XXSMALL; object26.borderRadius = value8[XXSMALL] / 2; object25.xxsmall = object26; const object27 = {}; XXSMALL_10 = object2.XXSMALL_10; object27.width = value8[XXSMALL_10]; XXSMALL_10 = object2.XXSMALL_10; object27.height = value8[XXSMALL_10]; XXSMALL_10 = object2.XXSMALL_10; object27.borderRadius = value8[XXSMALL_10] / 2; object25.xsmall10 = object27; const object28 = {}; XSMALL_20 = object2.XSMALL_20; object28.width = value8[XSMALL_20]; XSMALL_20 = object2.XSMALL_20; object28.height = value8[XSMALL_20]; XSMALL_20 = object2.XSMALL_20; object28.borderRadius = value8[XSMALL_20] / 2; object25.xsmall20 = object28; const object29 = {}; XSMALL = object2.XSMALL; object29.width = value8[XSMALL]; XSMALL = object2.XSMALL; object29.height = value8[XSMALL]; XSMALL = object2.XSMALL; object29.borderRadius = value8[XSMALL] / 2; object25.xsmall = object29; const object30 = {}; SMALL = object2.SMALL; object30.width = value8[SMALL]; SMALL = object2.SMALL; object30.height = value8[SMALL]; SMALL = object2.SMALL; object30.borderRadius = value8[SMALL] / 2; object25.small = object30; const object31 = {}; NORMAL = object2.NORMAL; object31.width = value8[NORMAL]; NORMAL = object2.NORMAL; object31.height = value8[NORMAL]; NORMAL = object2.NORMAL; object31.borderRadius = value8[NORMAL] / 2; object25.normal = object31; const object32 = {}; LARGE = object2.LARGE; object32.width = value8[LARGE]; LARGE = object2.LARGE; object32.height = value8[LARGE]; LARGE = object2.LARGE; object32.borderRadius = value8[LARGE] / 2; object25.large = object32; const object33 = {}; XLARGE = object2.XLARGE; object33.width = value8[XLARGE]; XLARGE = object2.XLARGE; object33.height = value8[XLARGE]; XLARGE = object2.XLARGE; object33.borderRadius = value8[XLARGE] / 2; object25.xlarge = object33; const object34 = {}; XLARGE_72 = object2.XLARGE_72; object34.width = value8[XLARGE_72]; XLARGE_72 = object2.XLARGE_72; object34.height = value8[XLARGE_72]; XLARGE_72 = object2.XLARGE_72; object34.borderRadius = value8[XLARGE_72] / 2; object25.xlarge72 = object34; const object35 = {}; XXLARGE = object2.XXLARGE; object35.width = value8[XXLARGE]; XXLARGE = object2.XXLARGE; object35.height = value8[XXLARGE]; XXLARGE = object2.XXLARGE; object35.borderRadius = value8[XXLARGE] / 2; object25.xxlarge = object35; const object36 = {}; REFRESH_MEDIUM_32 = object2.REFRESH_MEDIUM_32; object36.width = value8[REFRESH_MEDIUM_32]; REFRESH_MEDIUM_32 = object2.REFRESH_MEDIUM_32; object36.height = value8[REFRESH_MEDIUM_32]; REFRESH_MEDIUM_32 = object2.REFRESH_MEDIUM_32; object36.borderRadius = value8[REFRESH_MEDIUM_32] / 2; object25.refreshMedium32 = object36; const object37 = {}; PROFILE = object2.PROFILE; object37.width = value8[PROFILE]; PROFILE = object2.PROFILE; object37.height = value8[PROFILE]; PROFILE = object2.PROFILE; object37.borderRadius = value8[PROFILE] / 2; object25.profile = object37; const object38 = {}; SIZE_16 = object2.SIZE_16; object38.width = value8[SIZE_16]; SIZE_16 = object2.SIZE_16; object38.height = value8[SIZE_16]; SIZE_16 = object2.SIZE_16; object38.borderRadius = value8[SIZE_16] / 2; object25.size16 = object38; const object39 = {}; LARGE_48 = object2.LARGE_48; object39.width = value8[LARGE_48]; LARGE_48 = object2.LARGE_48; object39.height = value8[LARGE_48]; LARGE_48 = object2.LARGE_48; object39.borderRadius = value8[LARGE_48] / 2; object25.large48 = object39; const object40 = {}; EDIT_AVATAR_DECORATION = object2.EDIT_AVATAR_DECORATION; object40.width = value8[EDIT_AVATAR_DECORATION]; EDIT_AVATAR_DECORATION = object2.EDIT_AVATAR_DECORATION; object40.height = value8[EDIT_AVATAR_DECORATION]; EDIT_AVATAR_DECORATION = object2.EDIT_AVATAR_DECORATION; object40.borderRadius = value8[EDIT_AVATAR_DECORATION] / 2; object25.editAvatarDecoration = object40; const object41 = {}; GIFT_START = object2.GIFT_START; object41.width = value8[GIFT_START]; GIFT_START = object2.GIFT_START; object41.height = value8[GIFT_START]; GIFT_START = object2.GIFT_START; object41.borderRadius = value8[GIFT_START] / 2; object25.giftStart = object41; const object42 = {}; GIFT_SUCCESS = object2.GIFT_SUCCESS; object42.width = value8[GIFT_SUCCESS]; GIFT_SUCCESS = object2.GIFT_SUCCESS; object42.height = value8[GIFT_SUCCESS]; GIFT_SUCCESS = object2.GIFT_SUCCESS; object42.borderRadius = value8[GIFT_SUCCESS] / 2; object25.giftSuccess = object42; const object43 = {}; YOUBAR_60 = object2.YOUBAR_60; object43.width = value8[YOUBAR_60]; YOUBAR_60 = object2.YOUBAR_60; object43.height = value8[YOUBAR_60]; YOUBAR_60 = object2.YOUBAR_60; object43.borderRadius = value8[YOUBAR_60] / 2; object25.youBar60 = object43; const object44 = {}; TABS_22 = object2.TABS_22; object44.width = value8[TABS_22]; TABS_22 = object2.TABS_22; object44.height = value8[TABS_22]; TABS_22 = object2.TABS_22; object44.borderRadius = value8[TABS_22] / 2; object25.tabs22 = object44; const object45 = {RIGHT: 0}; object45[0] = 'RIGHT'; object45.BOTTOM_RIGHT = 1; object45[1] = 'BOTTOM_RIGHT'; object45.BOTTOM_LEFT = 2; object45[2] = 'BOTTOM_LEFT'; const object46 = {RECTANGULAR: 0}; object46[0] = 'RECTANGULAR'; object46.CIRCULAR = 1; object46[1] = 'CIRCULAR'; const env0_13 = (importDefault(4017) /* metro dependency 4017: ReanimatedRexport */).createAnimatedComponent(importDefault(7599) /* metro dependency 7599: 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); (require(2) /* metro dependency 2 */).fileFinishedImporting('design/void/CutoutableAvatarImage/native/CutoutableAvatarImage.tsx'); exports.default = value; exports.AvatarSizes = object2; exports.AVATAR_SIZE_MAP = value8; exports.styles = object25; exports.CutoutDirection = object45; exports.CutoutType = object46; } 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 reanimatedRexportModule = require(4017) /* metro dependency 4017: ReanimatedRexport */; const useAnimatedProps = reanimatedRexportModule.useAnimatedProps; const closure = NativeCutoutAvatarImageH; const object2 = {animate: animate, cutout: cutout}; const CutoutShape = (require(7599) /* metro dependency 7599: ClipView */).CutoutShape; object2.CutoutShape = CutoutShape; object2.withSpring = (require(4577) /* metro dependency 4577: spring */).withSpring; object2.CHANNEL_SPRING_CONFIG = CHANNEL_SPRING_CONFIG; closure.__closure = object2; closure.__workletHash = 11368409055559; closure.__initData = env0_14; return ((Component) => {((Component) => )(importDefault(5475) /* metro dependency 5475: FastImage */)})(env0_13); } 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 = (require(491) /* metro dependency 491 */).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 = importDefault(7744) /* metro dependency 7744 */; 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 object2 = {}; copyDataProperties(object2, a0, undefined); object2['animate'] = animate === true && cutout == null; object2['size'] = r5; const source = object2.source; let user = object2.user; const channel = object2.channel; const guildId = object2.guildId; const animate2 = object2.animate; size = object2.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 = object2.user; const disablePlaceholder = object2.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; } 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 object; var moduleValue; var withSpring; var object4; var moduleValue2; var value; const r7 = animate ? undefined : 'animate-never'; const shape = cutout.shape; const CutoutShape = (require(7599) /* metro dependency 7599: ClipView */).CutoutShape; const RoundedRect = CutoutShape.RoundedRect; if (shape === RoundedRect) { object4 = {}; object4.shape = CutoutShape.RoundedRect; moduleValue2 = require(4577) /* metro dependency 4577: spring */; withSpring = moduleValue2.withSpring; cutoutBinding = cutout; object4.x = Reflect.apply(withSpring, moduleValue2, [cutoutBinding.x, CHANNEL_SPRING_CONFIG, r7]); value = require(4577) /* metro dependency 4577: spring */; object4.y = value.withSpring(cutoutBinding.y, CHANNEL_SPRING_CONFIG, r7); value = require(4577) /* metro dependency 4577: spring */; object4.width = value.withSpring(cutoutBinding.width, CHANNEL_SPRING_CONFIG, r7); value = require(4577) /* metro dependency 4577: spring */; object4.height = value.withSpring(cutoutBinding.height, CHANNEL_SPRING_CONFIG, r7); value = require(4577) /* metro dependency 4577: spring */; object4.cornerRadius = value.withSpring(cutoutBinding.cornerRadius, CHANNEL_SPRING_CONFIG, r7); r2 = object4; } else { object = {}; object.shape = CutoutShape.Circle; moduleValue = require(4577) /* metro dependency 4577: spring */; withSpring = moduleValue.withSpring; cutoutBinding = cutout; object.x = Reflect.apply(withSpring, moduleValue, [cutoutBinding.x, CHANNEL_SPRING_CONFIG, r7]); value = require(4577) /* metro dependency 4577: spring */; object.y = value.withSpring(cutoutBinding.y, CHANNEL_SPRING_CONFIG, r7); value = require(4577) /* metro dependency 4577: spring */; object.size = value.withSpring(cutoutBinding.size, CHANNEL_SPRING_CONFIG, r7); r2 = object; } return {cutouts: [r2]}; }