/* 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] */;