Files
discord-decomp/modules/media_panel/native/MediaPlaybackPanelController.tsx
T
2026-11-01 12:12:55 +02:00

122 lines
4.9 KiB
TypeScript

// Metro module 16041 (f16042).
import _slicedToArray from "../../../_bundle/_slicedToArray";
import { useEffect, useRef, useState, useCallback, useLayoutEffect } from "react";
import AccessibilityStore from "../../a11y/AccessibilityStore";
import EmbeddedActivitiesStore from "../../activities/EmbeddedActivitiesStore";
import VoicePanelStore from "../../voice_panel/VoicePanelStore";
import { MediaPlaybackPanelModes } from "./MediaPlaybackPanelConstants";
import { ActivityPanelModes } from "../../activities/panel/ActivityPanelConstants";
import { MorphablePanelModes } from "../../panels/morphable/native/MorphablePanelConstants";
import { useSharedValue, useDerivedValue } from "../../reanimated/ReanimatedRexport";
import useSafeAreaInsets_native from "../../safe_area/useSafeAreaInsets.native";
import usePIPAvoidanceSpecs from "../../activities/panel/native/pip/usePIPAvoidanceSpecs";
import MediaPlayerManager from "../../media/native/MediaPlayerManager";
import { useStateFromStores } from "../../../_bundle/Module589";
import MediaPlaybackPanelStateContext from "./MediaPlaybackPanelStateContext";
const __initData = {
code: "function MediaPlaybackPanelControllerTsx1(){const{mode,MediaPlaybackPanelModes,MorphablePanelModes}=this.__closure;switch(mode.get()){case MediaPlaybackPanelModes.PIP:{return MorphablePanelModes.PIP;}default:{return MorphablePanelModes.UNDEFINED;}}}"
};
export default function MediaPlaybackPanelController(props) {
let sharedValue, derivedValue, sharedValue2, sharedValue3, sharedValue4, pipAvoidanceSpecs, sharedValue5, sharedValue6, sharedValue7, sharedValue8, ref, state, setState, callback, c22749_14, stateFromStores;
const children = props.children;
sharedValue = void 0;
derivedValue = void 0;
sharedValue2 = void 0;
sharedValue3 = void 0;
sharedValue4 = void 0;
pipAvoidanceSpecs = void 0;
sharedValue5 = void 0;
sharedValue6 = void 0;
sharedValue7 = void 0;
sharedValue8 = void 0;
ref = void 0;
state = void 0;
setState = void 0;
callback = void 0;
c22749_14 = void 0;
stateFromStores = void 0;
const sharedValue9 = useSharedValue(MediaPlaybackPanelModes.PIP);
const sharedValue13 = useSharedValue({
height: 0,
width: 0
});
const sharedValue12 = useSharedValue({
x: -1,
y: -1
});
const sharedValue10 = useSharedValue(AccessibilityStore.useReducedMotion);
useEffect(() => {
const onChange2 = function onChange() {
if (AccessibilityStore.useReducedMotion !== sharedValue10.get()) {
sharedValue10.set(AccessibilityStore.useReducedMotion);
}
};
AccessibilityStore.addReactChangeListener(onChange2);
return () => {
AccessibilityStore.removeReactChangeListener(onChange2);
};
}, [sharedValue10]);
const sharedValue11 = useSharedValue(true);
const sharedValue14 = useSharedValue(0);
const r51 = function() {
return sharedValue9.get() === MediaPlaybackPanelModes.PIP ? MorphablePanelModes.PIP : MorphablePanelModes.UNDEFINED;
};
r51.__closure = {
mode: sharedValue9,
MediaPlaybackPanelModes,
MorphablePanelModes
};
r51.__workletHash = 10375114450450;
r51.__initData = __initData;
const derivedValue2 = useDerivedValue(r51);
const pIPAvoidanceSpecs = usePIPAvoidanceSpecs(useSafeAreaInsets_native());
const sharedValue15 = useSharedValue(false);
const sharedValue16 = useSharedValue({
x: 0,
y: 0,
gestureActive: false
});
sharedValue = sharedValue9;
derivedValue = derivedValue2;
sharedValue2 = sharedValue13;
sharedValue3 = sharedValue10;
sharedValue4 = sharedValue12;
pipAvoidanceSpecs = pIPAvoidanceSpecs;
sharedValue5 = sharedValue14;
sharedValue6 = sharedValue11;
sharedValue7 = sharedValue15;
sharedValue8 = sharedValue16;
ref = useRef(void 0);
[state, setState] = useState(sharedValue9.get());
callback = useCallback(() => {
let r0 = state === MediaPlaybackPanelModes.PIP;
if (r0) {
setState(MediaPlaybackPanelModes.DISMISSED);
MediaPlayerManager.userDidClosePip();
r0 = true;
}
return r0;
}, [state, setState]);
const r88 = VoicePanelStore((a0) => a0.voicePanelsPIP.size > 0);
c22749_14 = r88;
stateFromStores = useStateFromStores([EmbeddedActivitiesStore], () => EmbeddedActivitiesStore.getActivityPanelMode() === ActivityPanelModes.PIP);
useLayoutEffect(() => {
sharedValue6.set(c22749_14 ? !c22749_14 : !stateFromStores);
}, [sharedValue6, r88, stateFromStores]);
return <MediaPlaybackPanelStateContext.Provider value={_slicedToArray(useState(() => ({
mode: sharedValue,
setMode: setState,
morphablePanelMode: derivedValue,
wrapperDimensions: sharedValue2,
useReducedMotion: sharedValue3,
pipState: sharedValue4,
pipAvoidanceSpecs,
dismissToPipGestureRef: ref,
dismissPanel: callback,
scrollPosition: sharedValue5,
canShowPIP: sharedValue6,
lockScrolling: sharedValue7,
wrapperOffset: sharedValue8
})), 1)[0]}>{children}</MediaPlaybackPanelStateContext.Provider>;
};