decord/source/modules/soundboard/native/SoundButton.tsx
2026-07-23 10:11:24 +00:00

271 lines
12 KiB
TypeScript

// Module ID: 15753
// Function ID: 121570
// Name: useAnimation
// Dependencies: [31, 27, 1849, 15747, 33, 3991, 4130, 689, 477, 4660, 4542, 5151, 11079, 15754, 566, 15755, 5464, 5484, 5739, 3776, 7949, 7951, 3831, 10797, 1212, 15757, 4126, 4652, 2]
// Module 15753 (useAnimation)
import importAllResult from "result";
import { View } from "LockIcon";
import _isNativeReflectConstruct from "_isNativeReflectConstruct";
import jsxProd from "jsxProd";
import _createForOfIteratorHelperLoose from "_createForOfIteratorHelperLoose";
import importDefaultResult from "module_3991";
import set from "set";
import importDefaultResult1 from "module_3991";
import set from "_isNativeReflectConstruct";
let closure_6;
let closure_7;
const require = arg1;
function useAnimation(animationConfig) {
const _require = animationConfig;
let obj = _require(3991);
const fn = function t() {
const pressed = animationConfig.sharedValues.pressed;
const playing = animationConfig.sharedValues.playing;
let value = pressed.get();
let obj = animationConfig(outer1_2[5]);
const playingAnimationDelay = animationConfig.playingAnimationDelay;
let num = 0;
if (null != playingAnimationDelay) {
num = playingAnimationDelay;
}
let obj1 = animationConfig(outer1_2[10]);
const tmp2 = playing.get() > 0;
const playing2 = animationConfig.sharedValues.playing;
const items = [1, animationConfig.scaleFactors.playing];
const obj3 = animationConfig(outer1_2[5]);
const withDelayResult = obj.withDelay(num, obj1.withSpring(animationConfig(outer1_2[5]).interpolate(playing2.get(), [0, 1], items), outer1_9));
const obj4 = animationConfig(outer1_2[10]);
const pressed2 = animationConfig.sharedValues.pressed;
const items1 = [1, animationConfig.scaleFactors.pressed];
const withSpringResult = obj4.withSpring(animationConfig(outer1_2[5]).interpolate(pressed2.get(), [0, 1], items1), outer1_9);
obj = {};
obj = {};
let tmp5 = withSpringResult;
if (0 === value) {
tmp5 = withSpringResult;
if (tmp2) {
tmp5 = withDelayResult;
}
}
obj.scale = tmp5;
const items2 = [obj, ];
obj1 = {};
const obj5 = animationConfig(outer1_2[5]);
const pressed3 = animationConfig.sharedValues.pressed;
let prop;
value = pressed3.get();
if (null != animationConfig) {
prop = animationConfig.pressedRotationDegrees;
}
let num2 = 0;
if (null != prop) {
num2 = prop;
}
const items3 = [0, num2];
obj1.rotate = "" + animationConfig(outer1_2[5]).interpolate(value, [0, 1], items3) + "deg";
items2[1] = obj1;
obj.transform = items2;
return obj;
};
obj = { animationConfig, withDelay: _require(3991).withDelay, withSpring: _require(4542).withSpring, interpolate: _require(3991).interpolate, SPRING_CONFIG: closure_9 };
fn.__closure = obj;
fn.__workletHash = 13932429225740;
fn.__initData = closure_12;
return obj.useAnimatedStyle(fn);
}
function SoundButtonEmoji(arg0) {
let sharedValues;
let sound;
({ sound, sharedValues } = arg0);
const tmp = callback2();
let obj = { style: items };
items = [tmp.emojiWrapper, useAnimation({ sharedValues, scaleFactors: { pressed: 0.8, playing: 1.2 } })];
obj = { style: useAnimation({ sharedValues, scaleFactors: { pressed: 0.7200000000000001, playing: 1.08 }, playingAnimationDelay: 100, pressedRotationDegrees: -15 }) };
obj = { fastImageStyle: tmp.emoji, textEmojiStyle: tmp.emoji };
const tmp2 = useAnimation({ sharedValues, scaleFactors: { pressed: 0.8, playing: 1.2 } });
const tmp3 = closure_6;
const tmp4 = closure_8;
const tmp5 = closure_6;
const tmp6 = closure_8;
const tmp7 = closure_6;
obj.src = importDefault(11079)(sound, 24);
const emojiName = sound.emojiName;
let str = "";
if (null != emojiName) {
str = emojiName;
}
obj.name = str;
obj.children = tmp7(importDefault(5151), obj);
obj.children = tmp5(tmp6, obj);
return tmp3(tmp4, obj);
}
({ jsx: closure_6, jsxs: closure_7 } = jsxProd);
let closure_8 = require("module_3991").createAnimatedComponent(View);
let closure_9 = { damping: 10, stiffness: 300, mass: 1 };
let obj = {};
obj = { marginTop: 4, height: require("SOUND_BUTTON_HEIGHT").SOUND_BUTTON_HEIGHT, backgroundColor: require("_createForOfIteratorHelperLoose").colors.CARD_BACKGROUND_DEFAULT, display: "flex", flexDirection: "column", justifyContent: "center", alignItems: "center", borderRadius: require("_createForOfIteratorHelperLoose").radii.lg, borderWidth: 1, borderColor: require("_createForOfIteratorHelperLoose").colors.BORDER_MUTED };
const merged = Object.assign(require("_createForOfIteratorHelperLoose").shadows.SHADOW_LOW);
obj.button = obj;
obj.buttonPressed = { backgroundColor: require("_createForOfIteratorHelperLoose").colors.CARD_PRIMARY_PRESSED_BG };
obj.buttonDisabled = { opacity: 0.5 };
_createForOfIteratorHelperLoose = { borderStyle: "solid", borderWidth: 2, borderColor: require("_createForOfIteratorHelperLoose").colors.STATUS_SPEAKING, backgroundColor: require("_createForOfIteratorHelperLoose").colors.CARD_SECONDARY_BG };
obj.buttonPlaying = _createForOfIteratorHelperLoose;
let obj3 = { height: 24, width: 24, fontSize: null, lineHeight: 28 };
let num;
if (set.isIOS()) {
num = 24;
}
obj3.fontSize = num;
obj.emoji = obj3;
let obj4 = { display: "flex", alignItems: "center", justifyContent: "center", height: 40, width: 40, backgroundColor: require("_createForOfIteratorHelperLoose").colors.BACKGROUND_MOD_MUTED, backgroundSize: 32, borderRadius: require("_createForOfIteratorHelperLoose").radii.round, marginBottom: 8 };
obj.emojiWrapper = obj4;
obj.text = { marginHorizontal: 8 };
obj.textPlaying = { marginHorizontal: 6 };
let obj5 = { position: "absolute", top: require("_createForOfIteratorHelperLoose").space.PX_12, end: require("_createForOfIteratorHelperLoose").space.PX_12, width: 12, height: 12, tintColor: require("_createForOfIteratorHelperLoose").colors.WHITE };
obj.lock = obj5;
let closure_10 = _createForOfIteratorHelperLoose.createStyles(obj);
let obj1 = { backgroundColor: require("_createForOfIteratorHelperLoose").colors.CARD_PRIMARY_PRESSED_BG };
let closure_11 = require("module_3991").createAnimatedComponent(require("PressableBase").PressableOpacity);
let closure_12 = { code: "function SoundButtonTsx1(){const{animationConfig,withDelay,withSpring,interpolate,SPRING_CONFIG}=this.__closure;var _animationConfig$play,_animationConfig$pres,_animationConfig;const isNotPressed=animationConfig.sharedValues.pressed.get()===0;const isPlaying=animationConfig.sharedValues.playing.get()>0;const shouldDoPlayingAnimation=isNotPressed&&isPlaying;const playingAnimationScaleValue=withDelay((_animationConfig$play=animationConfig.playingAnimationDelay)!==null&&_animationConfig$play!==void 0?_animationConfig$play:0,withSpring(interpolate(animationConfig.sharedValues.playing.get(),[0,1],[1,animationConfig.scaleFactors.playing]),SPRING_CONFIG));const pressedAnimationScaleValue=withSpring(interpolate(animationConfig.sharedValues.pressed.get(),[0,1],[1,animationConfig.scaleFactors.pressed]),SPRING_CONFIG);const rotationScaleValue=interpolate(animationConfig.sharedValues.pressed.get(),[0,1],[0,(_animationConfig$pres=(_animationConfig=animationConfig)===null||_animationConfig===void 0?void 0:_animationConfig.pressedRotationDegrees)!==null&&_animationConfig$pres!==void 0?_animationConfig$pres:0]);return{transform:[{scale:shouldDoPlayingAnimation?playingAnimationScaleValue:pressedAnimationScaleValue},{rotate:rotationScaleValue+\"deg\"}]};}" };
let result = set.fileFinishedImporting("modules/soundboard/native/SoundButton.tsx");
export const SoundButton = importAllResult.memo(function SoundButtonComponent(sound) {
sound = sound.sound;
const channel = sound.channel;
let flag = sound.isSectionLocked;
if (flag === undefined) {
flag = false;
}
let stateFromStores;
let playSoundboardSound;
let analyticsLocations;
let c5;
let obj = sound(stateFromStores[13]);
let tmp = null != sound.emojiId;
if (!tmp) {
tmp = null != sound.emojiName;
}
const tmp2 = callback2();
let obj1 = sound(stateFromStores[14]);
let items = [c5];
stateFromStores = obj1.useStateFromStores(items, () => _undefined.getCurrentUser());
const tmp4 = channel(stateFromStores[15])(sound, channel.id);
playSoundboardSound = tmp4.playSoundboardSound;
const isPlayingSound = tmp4.isPlayingSound;
analyticsLocations = channel(stateFromStores[16])(channel(stateFromStores[17]).SOUNDBOARD_BUTTON).analyticsLocations;
let obj2 = sound(stateFromStores[18]);
let tmp6 = !obj2.canUseSoundboardSound(stateFromStores, sound, channel);
c5 = tmp6;
let items1 = [analyticsLocations, channel.guild_id, stateFromStores, playSoundboardSound, sound, tmp6];
const callback = playSoundboardSound.useCallback(() => {
if (c5) {
let obj = channel(stateFromStores[19]);
if (!obj.canUseSoundboardEverywhere(stateFromStores)) {
if (sound.guildId !== channel.guild_id) {
channel(stateFromStores[20])(sound(stateFromStores[21]).EntitlementFeatureNames.SOUNDBOARD_EVERYWHERE);
const tmp11 = channel(stateFromStores[20]);
}
}
if (!sound.available) {
obj = { key: "DISABLED_SOUND_PRESSED", icon: channel(stateFromStores[23]) };
const intl = sound(stateFromStores[24]).intl;
obj.content = intl.string(sound(stateFromStores[24]).t.MDOXJR);
obj.toastDurationMs = 3000;
channel(stateFromStores[22]).open(obj);
const obj2 = channel(stateFromStores[22]);
}
} else {
playSoundboardSound(analyticsLocations);
}
}, items1);
const tmp8 = (function useAnimationSharedValuesAndHandlers(isPlayingSound) {
let closure_0 = isPlayingSound;
const pressed = sound(stateFromStores[5]).useSharedValue(0);
const obj = sound(stateFromStores[5]);
const playing = sound(stateFromStores[5]).useSharedValue(0);
const items = [pressed];
const items1 = [pressed];
const pressIn = playSoundboardSound.useCallback(() => {
const result = pressed.set(1);
}, items);
const items2 = [isPlayingSound, playing, pressed];
const pressOut = playSoundboardSound.useCallback(() => {
const result = pressed.set(0);
}, items1);
const effect = playSoundboardSound.useEffect(() => {
let num = 0;
if (closure_0) {
num = 1;
}
const result = playing.set(num);
}, items2);
return { handlers: { pressIn, pressOut }, sharedValues: { pressed, playing } };
})(isPlayingSound);
obj = { sharedValues: tmp8.sharedValues, scaleFactors: { pressed: 0.95, playing: 1.05 } };
let pressed = tmp8.sharedValues.pressed;
const tmp5 = channel(stateFromStores[16]);
let items2 = [channel.id, sound];
const tmp9 = useAnimation(obj);
obj = {};
obj1 = {};
const items3 = [tmp2.button, { width: obj.useSoundButtonStyleConfig().buttonWidth }, , , , , ];
let buttonPressed = null;
const callback1 = playSoundboardSound.useCallback(() => {
channel(stateFromStores[25])(channel.id, sound);
}, items2);
if (tmp10) {
buttonPressed = tmp2.buttonPressed;
}
items3[2] = buttonPressed;
items3[3] = tmp9;
let buttonPlaying = null;
if (isPlayingSound) {
buttonPlaying = tmp2.buttonPlaying;
}
items3[4] = buttonPlaying;
let buttonDisabled = null;
if (tmp6) {
buttonDisabled = null;
if (!flag) {
buttonDisabled = tmp2.buttonDisabled;
}
}
items3[5] = buttonDisabled;
items3[6] = sound.style;
obj1.style = items3;
obj1.accessibilityRole = "button";
obj1.accessibilityLabel = sound.name;
obj1.onPressIn = tmp8.handlers.pressIn;
obj1.onPressOut = tmp8.handlers.pressOut;
obj1.onPress = callback;
obj1.onLongPress = callback1;
if (tmp) {
obj2 = { sharedValues: tmp8.sharedValues, sound };
tmp = callback(SoundButtonEmoji, obj2);
}
const items4 = [tmp, ];
const obj3 = { lineClamp: 1, style: null, variant: "text-sm/semibold" };
const items5 = [tmp2.text, ];
let textPlaying = null;
if (isPlayingSound) {
textPlaying = tmp2.textPlaying;
}
items5[1] = textPlaying;
obj3.style = items5;
obj3.children = sound.name;
items4[1] = callback(sound(stateFromStores[26]).Text, obj3);
obj1.children = items4;
const items6 = [closure_7(closure_11, obj1), ];
if (tmp6) {
tmp6 = !flag;
}
if (tmp6) {
const obj4 = { style: tmp2.lock };
tmp6 = callback(sound(stateFromStores[27]).LockIcon, obj4);
}
items6[1] = tmp6;
obj.children = items6;
return closure_7(analyticsLocations, obj);
});